엔티티는 Data Class로 작성하면 안되나요?
아직 코틀린에 익숙치 않은데 어떤 경우 Data class를 선언하고 어떤 경우 일반 class를 선언하는지 감이 안잡히네요.
추가로 object나 compainon object는 어떤 경우 사용하게 되나요?
Câu trả lời 2
1
안녕하세요, 인프런 AI 인턴입니다. 최현민님.
코틀린에서 data class와 일반 class의 사용에 대한 질문을 주셨군요. 코틀린의 data class는 주로 데이터를 구조화하여 관리하는 데 유용하며 equals(), hashCode(), toString(), copy() 메서드를 자동으로 생성하는 등의 장점이 있습니다. 하지만 JPA 엔티티와 같은 경우, 이러한 자동 생성되는 메서드가 영속성에 필요 없는 부작용을 일으킬 수 있어 주의가 필요합니다.
일반적으로 엔티티 클래스에 일반 class를 사용하는 이유는 다음과 같습니다:
1. JPA와의 호환성: JPA는 엔티티 객체의 변화를 추적하기 때문에 data class의 불변성은 부적합할 수 있습니다.
2. Lazy Loading: 엔티티는 프록시와 함께 사용될 수 있으며, 이 경우 data class 특성은 적합하지 않을 수 있습니다.
관련 게시물을 참고하셔서 유사한 질문과 답변을 확인해 보세요:
- 엔티티와 데이터 클래스 간의 관계 및 사용 사례
object와 companion object 사용에 대해서는:
object: 코틀린의
object는 싱글톤 패턴을 구현하는 데 사용됩니다. 즉, 애플리케이션 내에서 해당 객체의 인스턴스가 하나만 존재하도록 보장합니다. 주로 유틸리티 함수나 객체 간 공유가 필요한 데이터를 관리하는 데 사용합니다.companion object: 클래스 내부에
companion object를 선언하면, 해당 클래스에 속한 정적 메서드나 정적 변수를 정의할 수 있습니다. 이는 Java의static키워드와 유사합니다.companion object내부에 정의된 멤버는 클래스의 인스턴스 없이도 접근 가능합니다.
아래 링크도 검토해 보시길 추천드립니다:
- Kotlin의 object와 companion object 사용법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0
안녕하세요 최현민님 질문 주셔서 감사합니다.
비슷한 형태로 좋은 질문 해주신 분이 있고 그에따라서 답변을 한 케이스가 있어서 해당 질문을 참고해 보시면 좋을 꺼 같습니다.
그리고 compainon object, object는 기본적으로 Spring Boot를 통해서 무언가 상태를 관리하지 않을 떄 사용하는게 좋습니다. 예를들면 일반 상수값이나, 정말 무난하게 사용가능한 함수 같은거에 적용하면 좋을꺼같습니다.
감사합니다.
소스 코드
0
8
0
안녕하세요 졸업프로젝트를 준비하는 학생입니다.!
0
14
1
안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..
0
19
1
실무 내용 문의드려요
0
26
2
코드 질문
0
26
1
To-Do App
0
27
1
twitterdb 연결이 안돼요
1
30
2
Kafka Cluster 구성도 질문
0
23
1
SingletonService가 JVM이 뜰 때 생성되는게 맞나요?
0
37
2
시큐리티 필터 설정 질문입니다!
2
50
1
강의가 싱크가 안맞는것 같아요..
0
31
1
임포트 오류
0
34
2
답을언제쯤받아볼수있나요
0
49
2
형 책 어떻게 받아?
1
59
1
@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.
0
33
2
mvc 패턴 - 적용 강의에서 회원가입할 때 redirect가 아닌 forward인 이유가 궁금합니다.
0
29
1
service 를 interface 로 두는 이유
0
91
1
RedisMessageBroker.kt setLocalMessageHandler 관련 문의
0
84
2
빌드 파일
0
85
2
웹소켓을 이용한 채팅시스템에서 부하테스트를 어떻게 진행해야할까요?
0
303
2
stomp websocket
0
89
1
웹소캣 stomp
0
99
2
그레이스풀 셧다운과 데몬 스레드의 관계 질문
0
107
1
api모듈에대해 문의드립니다.
0
88
2

