티스토리 뷰

728x90
반응형
@Entity
data class Member(
    @Id
    @GeneratedValue
    val id: Long = 0,
    var name: String
)
  • equals()와 hashCode() 문제: data class는 생성자에 있는 모든 필드를 사용하여 equals와 hashCode를 자동으로 만듦
    1. id = null (or 0) 인 상태로 엔티티 생성
    2. HashSet 또는 HashMap key로 사용
    3. persist() → DB가 id 생성
    4. Hibernate가 id를 새 값으로 변경
    5. hashCode() 변경 → 컬렉션에서 못 찾음
  • equals / hashCode는 변하지 않는 식별자를 사용해야 한다
  • 순환 참조 및 지연 로딩 실패: 만약 생성자에 연관 관계(@OneToMany 등)가 포함되면, 
    hashCode 호출 시 연관된 엔티티를 모두 로딩(Fetch)하게 되어 성능 문제나 무한 루프가 발생
  • data class 는 open 이 되지 않기 때문에 상속이 불가하고, 프록시 객체를 생성할 수 없음
    • Lazy Loading 불가
728x90
반응형
반응형
300x250