2021 07 30
2021-07-30¶
CascadeType.REMOVE vs OrphanRemoval¶
- 참고: https://www.baeldung.com/jpa-cascade-remove-vs-orphanremoval
- CascadeType.REMOVE - Child 엔티티를 삭제하거나, Parent의 삭제에 따른 Child 엔티티들 삭제 - ex. OrderRequest가 ShipmentInfo를 포함함 - OrderRequest가 지워지면 ShipmentInfo도 삭제함
- OrphanRemoval
- Orphaned 된 엔티티를 DB에서 지우는 용도
- Orphaned: 부모에 더 이상 attached 되지 않은 엔티티
-
@OneToMany관계의 참조를 끊어버리는 경우 발생
연관관계 편의 메서드¶
- 참고: https://backend.gitbooks.io/jpa/content/chapter5.html
- 양방향 연관관계 신경 써줄때 (무한루프 기억나지?)
public class Member { private Team team; public void setTeam(Team team) { this.team = team; team.getMembers().add(this); } } //연관관계 설정 member1.setTeam(teamA); member1.setTeam(teamB); Member findMember = teamA.getMember(); //member1이 여전히 조회 //변경하기! public class Member { public void setTeam(Team team) { //기존 팀과 관계를 제거 if (this.team != null) { this.team.getMembers().remove(this); } this.team = team; team.getMembers().add(this); } }
- 기존 관계들을 고려하면서 setter를 만들어주자 - 무지성으로 그냥 집어넣으면 다 깨져!
Logging Timezone¶
- 참고: https://blog.naver.com/tyboss/70102615639
- java -jar -Duser.timezone=Asia/Seoul
- JVM에서 시간을 설정하고 돌리는구나... 그러다 보니 로그에서 JVM 기본시간으로 찍혀 - 디폴트 상태로는 GMT라네 - OS랑 JDK 벤더도 탄다네