inflearn logo
강의

Khóa học

Chia sẻ kiến thức

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

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

530

KoorunG

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

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로 접근하는 부분이 없기에 굳이 주생성자에 선언하는 것보다 클래스 바디로 내리는게 뭔가 더 자연스럽지 않나 하여 질문드렸습니다..!

java spring kotlin spring-boot 리팩토링

Câu trả lời 2

2

lannstark

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

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

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

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

 

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

1

KoorunG

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

1

lannstark

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

0

KoorunG

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

항상 좋은 강의 감사합니다

안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?

0

77

2

실행이 안되네요

0

78

2

프론트 영역 보는법

0

63

2

companion object

0

86

2

Custom 레프직토리 형식

0

70

2

Querydsl 도입

0

74

2

fetch join DISTINCT 중복제거

1

91

2

표준 예외와 커스텀 예외 사용 전략 질문

0

106

3

이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.

1

182

2

테스트를 위한 코드

1

113

2

프로젝트 실행 에러

0

160

2

PDF 문서에 오타가 있어서 알려드립니다.

1

102

1

enum질문

1

88

1

테스트 후 AfterEach 함수에서 나오는 쿼리

0

141

2

테스트 fixture

1

219

2

./gradlew test 실행시 인식할수 없다고 뜹니다.

0

146

1

test 코드 실행시 경고가 발생합니다.

0

149

1

13강 User Kotlin 변환중

2

176

3

'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문

2

176

1

-

0

147

2

4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?

0

317

3

junit import 불가

0

283

3

테스트 코드와 관련하여 질문이 있습니다.

1

219

1

hibernate가 select를 두번 하는 이유

0

245

1