본문 바로가기
개발 관련 공부/JPA

jpa @OnDelete...

by 슴새 2023. 3. 24.
반응형

jpa를 처음 사용해본 것은 https://g1etistory.tistory.com/174 프로젝트이다.

jpa와 관련된 것들을 구글링으로 땜질해가며 완성했었다.

그때 jpa에 가장 의문이었던 부분은 delete cascade 설정이었다.

delete cascade 설정을 하려면 양방향 매핑을 해야한다니...

심지어 그땐 양방향 매핑이라는 개념도 잘 몰랐기 때문에 정말 놀랍도록 비효율적으로 보였다.

 

이번 프로젝트에서는 jpa를 사용하기 전에 김영한 강사님의 강의를 급하게 훑었다.

당장 프로젝트에 사용해야 해서 스프링강의처럼 꼼꼼히 메모해가며 듣진 못했지만...

어쨌든 단방향매핑과 양방향 매핑에 대해 알았다.

단방향 매핑이 더 바람직하다는 것도...

그런데 단방향 매핑이면 delete cascade 설정을 어떻게 하느냐?

방법이 있었다..

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="campaign_id")
    @OnDelete(action = OnDeleteAction.CASCADE)
    private Campaign campaign;

캠페인에 댓글여러개가 달리는 일대다 관계...

캠페인은 안건드리면서,댓글 테이블에 코드 몇 줄 추가하는걸로 깔끔하게 설정이 가능하다.

아니 왜 그땐 구글링했을때 이런 해결방법이 안나왔지...

 

단 주의해야할게 기본적으로 spring.jpa.hibernate.ddl-auto가 create일때 동작하는 것 같다.

프로젝트 초창기에 delete cascade 설정하기로 마음먹어서 다행이다...

이미 데이터 잔뜩 들어있는데 뒤늦게 설정해야 했다면 상당히 곤란했을 것 같음

 

이번 프로젝트의 백엔드 팀원 중 한 명은 jpa를 처음써보는데도 jpa가 똑똑하다고 예쁘다 하고 있다.

난 jpa 첫만남때 인상이 썩...좋진 않았던것 같은데

그래도 좀 공부하고 나서 보니까 예뻐보이는 것 같기도 하고....

그런데 뭐 이상한 에러가 나면 또 못나보이기도 하고....

그렇다..

반응형

'개발 관련 공부 > JPA' 카테고리의 다른 글

spring boot+mysql+jpa+querydsl 테스트  (0) 2023.02.19

댓글