본문 바로가기

JPA

[JPA] OneToMany 에서 child 를 지웠는데 update 쿼리가 날아간다고? 현재 코드 단방향 OneToMany 매핑, AccountGroupDetails 에서는 매핑관계 없음 부모 클래스에서 자식 클래스 CRUD 를 모두 하려고 함 식별관계 - 부모키가 자식PK 에 포함 @Entity data class AccountGroup( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var accountGroupId: Long? = null ... ... ... ) { @OneToMany(fetch = FetchType.LAZY, targetEntity = AccountGroupDetails::class, cascade = [CascadeType.ALL], orphanRemoval = true) @JoinColumn(name = "a.. 더보기
[JPA] 복합키(Composite Key) 생성 및 관계 맺기 복합키 객체 생성 - 공통 : 엔티티 클래스의 PK 만을 속성으로 갖는 별도의 Composite Key 클래스가 있어야 한다. - @EmbeddedId 방식 : Composite Key 클래스를 정의하고 entity 클래스 내부에 직접 사용 @Entity data class TChild( @EmbeddedId var tChildIdL TChildId ) { val parentId get() = tChildIdL.parentId @MapsId("parentId") @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "parentId") lateinit var tParent: TParent } @Embeddable data clas.. 더보기
[JPA] OneToOne 테이블 설계와 JPA 매핑 테이블 설계 주어진 테이블은 사람테이블, 주소테이블 이고 사람테이블이 접근을 많이 하는 테이블이다. 현재는 1:1 관계이지만 사람:주소=1:N 으로 확장될 가능성이 존재한다. 1:1 로 매핑되는 테이블에서 FK를 어디에 둘것인가? 참고 https://ict-nroo.tistory.com/126 JPA 매핑 일반적인 경우와 마찬가지로 FK를 가지고 있는 연관관계의 주인 엔티티에서 OneToOne 단방향 매핑을 할 수 있다. 매핑된 테이블에서 mappedBy 를 이용하여 양방향 매핑도 가능하다. 지연로딩 FK를 가진 곳에서는 FK에 값이 있으면 연관관계 멤버에 프록시객체를 넣어주고 없으면 null을 넣어줄수 있지만 FK가 없는 반대 엔티티에서는 DB를 조회해야지만 알수 있기때문에 초기값 세팅을 위해 항상 D.. 더보기