inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Xây dựng máy chủ trò chuyện trực tuyến: Từ xử lý phân tán đến tối ưu hóa hiệu suất

CRUD cơ sở dữ liệu sử dụng JPA

엔티티는 Data Class로 작성하면 안되나요?

Đã giải quyết

120

francisco3014

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

0

아직 코틀린에 익숙치 않은데 어떤 경우 Data class를 선언하고 어떤 경우 일반 class를 선언하는지 감이 안잡히네요.

추가로 object나 compainon object는 어떤 경우 사용하게 되나요?

spring kotlin spring-boot websocket

Câu trả lời 2

1

communityai8509

안녕하세요, 인프런 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

Hong

안녕하세요 최현민님 질문 주셔서 감사합니다.

 

비슷한 형태로 좋은 질문 해주신 분이 있고 그에따라서 답변을 한 케이스가 있어서 해당 질문을 참고해 보시면 좋을 꺼 같습니다.

 

https://inf.run/GHA8N

 

그리고 compainon object, object는 기본적으로 Spring Boot를 통해서 무언가 상태를 관리하지 않을 떄 사용하는게 좋습니다. 예를들면 일반 상수값이나, 정말 무난하게 사용가능한 함수 같은거에 적용하면 좋을꺼같습니다.

 

감사합니다.

부하 테스트 시 설정 관련 질문드립니다

1

15

1

HelloSpringApplication.java 클래스 실행 오류

0

6

1

build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)

0

16

1

Inner class로 Config를 지정하는 이유

0

24

1

네이버 API | '검색 - 책' API 제공 중단

0

37

2

ArticleReadService 관련 질문

0

27

1

kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.

1

67

1

domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다

1

47

1

Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.

0

44

2

장치 의존성과 CSR

0

35

1

테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.

0

30

1

혹시 강의 내용하면서 실습했던 것을 개인 깃에다 올려도 될까요?

0

24

1

아무도 모르게 책 내시면 모르실 줄 알고!!

1

51

2

[영한님]Spring Boot 및 프로젝트 생성

0

52

2

Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면

1

76

2

스크립트에 대해 질문 있습니다.

1

59

1

service 를 interface 로 두는 이유

0

108

1

RedisMessageBroker.kt setLocalMessageHandler 관련 문의

0

93

2

빌드 파일

0

96

2

웹소켓을 이용한 채팅시스템에서 부하테스트를 어떻게 진행해야할까요?

0

353

2

stomp websocket

0

106

1

웹소캣 stomp

0

113

2

그레이스풀 셧다운과 데몬 스레드의 관계 질문

0

118

1

api모듈에대해 문의드립니다.

0

102

2