강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của koorung
koorung

câu hỏi đã được viết

Trong thực tế! Phát triển ứng dụng quản lý thư viện với Kotlin và Spring Boot (tái cấu trúc dự án Java)

Bài học 13. Thay đổi hệ thống phân cấp miền thành Kotlin - UserLoanHistory.java, User.java

안녕하세요 강사님 도메인 생성 시 주 생성자에 관한 질문드립니다.

Viết

·

513

3

안녕하세요 강사님~ 강의 너무 재밌게 잘 보고 있습니다.

강의중에 User 리팩토링 과정에서 userLoanHistories를 주생성자에 선언하셨는데

@Entity
class User(
    @Column(nullable = false)
    var name: String,

    val age: Int?,

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = null,
) {
    // 클래스 바디로 내려도 되나요?
    @OneToMany(mappedBy = "user", cascade = [CascadeType.ALL], orphanRemoval = true)
    val userLoanHistories: MutableList<UserLoanHistory> = mutableListOf()

    (...)
}

기존 자바코드에서는 이 컬랙션은 내부적으로 사용될뿐 getter로 접근하는 부분이 없기에 굳이 주생성자에 선언하는 것보다 클래스 바디로 내리는게 뭔가 더 자연스럽지 않나 하여 질문드렸습니다..!

javaspringkotlinspring-boot리팩토링

Câu trả lời 2

2

lannstark님의 프로필 이미지
lannstark
Người chia sẻ kiến thức

안녕하세요, KoorunG님~~ 정말 좋은 질문 남겨주셔서 감사드립니다! 🙏

정확히 이 부분을 다음 회차인 <14강. Kotlin과 JPA를 함께 사용할 때 이야기거리 3가지>에서 다루고 있는데요, 결론부터 말씀드리면 저 역시 KoorunG님과 비슷하게 1 : N 관계의 JPA 객체를 class body에 넣는 것을 선호합니다 🙂

물론 body에 넣더라도 private val 이 아닌 val 로 선언되어 있으면 클래스 외부에서 접근할 수 있는 것은 동일하지만, 1 : N 연관관계 특징상, N 객체를 생성자에서 넣어줄 일이 없다보니 생성자에 굳이 있을 필요가 없다고 생각하는 것 같아요!

또한, 저는 개인적으로 생성자를 통해 값이 초기화되어야 하면 생성자에~ 기본값이 고정되어 있다면 (OneToMany 객체는 mutableList()로 고정되어 있죠!) body에 넣는 것을 선호합니다.

 

답변이 도움이 되었으면 좋겠습니다! 감사합니다~ 🙏🙏

KoorunG님의 프로필 이미지
KoorunG
Người đặt câu hỏi

그렇군요..! 항상 친절한 답변 감사함니다 ㅎㅎ 강의가 너무 알차서 정말 도움이 많이 됩니다.

lannstark님의 프로필 이미지
lannstark
Người chia sẻ kiến thức

도움이 되어 다행입니다!! ☺️ (아래 댓글도 남겨주셨군요~!! 제가 못봤네요!! 🥲) 또 궁금하신 점 있으시다면 편하게 질문 남겨 주세요!! 감사합니다! 🙏

0

KoorunG님의 프로필 이미지
KoorunG
Người đặt câu hỏi

에고 바로 다음 강의에 관련 내용이 나왔었네요..

항상 좋은 강의 감사합니다

Hình ảnh hồ sơ của koorung
koorung

câu hỏi đã được viết

Đặt câu hỏi