오늘의 계획
store crud 완성하기
오늘 한 것
store crud 를 완성했다 serviceImpl 에서 사용하기위한 toResponse 함수를 entity 내부에서 작성하였는데
@Entity
@Table(name = "store")
class Store(
...
) {
...
//
fun toResponse():StoreResponseDto{
return StoreResponseDto(
storeId = this.storeId!!,
name = this.name,
address = this.address,
description =this.description,
businessNum = this.businessNum,
orderCount = this.orderCount,
reviewCount = this.reviewCount
)
}// 요고
}
Store.kt 엔티티 파일 안에서 정의된 함수를 강의에서 본 것과 지난 번 프로젝트를 같이 진행했던 팀원 , 이번에 같이 진행한 팀원이 각자 쓰는 방식이 달라서 일단 따라서 썻는데 내가 스스로 매커니즘을 이해하지 못하는 느낌이라 service구현체에서 코드를 쓸때 빨간줄과 노란줄이 같이 떳다
ModelNotFoundException을 따로 만들지 않아서 그런가 했는데 엔티티 안에서 엔티티를 인자로 받아가지고 작성하니 코드상에서 인식을 하지 못해 그런거라고 하였다
두번째로는
@Entity
@Table(name = "store")
class Store(
@Column(name = "name")
var name:String,
@Column(name = "address")
var address:String,
@Column(name = "description")
var description:String,
@Column(name = "business_num")
var businessNum:String
) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var storeId:Long?=null
//요기서 부터
@Column(name="order_count")
var orderCount:Int =0
@Column(name = "review_count")
var reviewCount:Int =0
//요기까지
service 구현에서 레포지토리에 접근하여 save를 할때 Store 엔티티를 호출하여 CreateStoreDto 에서 받은 값을 entitiy로 변경후 저장하는 코드를 작성하였는데 처음에 생성자에 order_count / review_count 를 적었는데 CreateStoreDto에서는 두개의 값을 받지 않고 있다
상점을 생성하는데 주문수와 리뷰수를 받을 필요가 없는데 서비스 구현체에서 엔티티를 불러 저장할때 안넣고 싶은데 넣으라고 빨간줄이 자꾸 뜨니 환장 할 노릇이였다
@Transactional
override fun createStore(createStoreDto: CreateStoreDto): StoreResponseDto {
return storeRepository.save(
Store(
name = createStoreDto.name,
address = createStoreDto.address,
businessNum = createStoreDto.businessNum,
description = createStoreDto.description
// 요기서 !
)
).toResponse()
}
엔티티 생성자 말고 본문에 프로퍼티로 넣어주어서 해결을 하였다
알고나면 쉬운데 알기까지 너무 오래걸린다 마무리 잘하고 심화구현까지 열심히 해보도록 하자
'TIL' 카테고리의 다른 글
24_01_29 TIL (1) | 2024.01.29 |
---|---|
24_01_26 TIL (1) | 2024.01.26 |
24_01_29 TIL (0) | 2024.01.19 |
24_01_16 TIL (0) | 2024.01.16 |
24_01_15 TIL (1) | 2024.01.15 |