JPA Cascade vs Orphan Removal

개요 프로젝트를 하던 중, 엔티티 연관관계에서 cascade를 잘못 사용하여 잘못된 엔티티가 삭제되었고, 테스트가 실패하는 상황이 발생했습니다. 동일한 실수를 반복하지 않도록, 이번 기회에 JPA Cascade 개념과 Orphan Removal과는 어떠한 차이가 있는지 확인해보겠습니다. JPA(Hibernate) Cascade 먼저 Java EE 6의 가이드에는 다음과 같이 명시되어 있습니다. Java EE6 가이드의 CASCADE 설명 설명을 읽어보면 Cascade는 영속성 컨텍스트(Persistence Context)에 부모(Cascade옵션을 작성하는 엔티티)가 특정 작업을 수행할 때, 연관된 엔티티(이후 자식이라고 하겠습니다)도 같은 작업을 수행해야 함을 명시하고 있습니다. ...

2024. 5. 13. · 7 분 · 1288 단어 · Leaf
cover image

[Java]SpringBoot DataSource 이중화(CQRS 패턴) 구현

도입 이전 포스팅 참조 : DB 이중화 및 CQRS 패턴의 중요성 > MySQL Replication Database 구현 실습환경 Docker : v25.0.3 MySQL : v8.3.0 Java : v17.0.9 Spring : v3.2.4 저번 시간에 생성한 Master / Slave DB에 SpringBoot를 직접 연동해서 CRUD를 하는 실습을 진행합니다. 프로젝트 생성 Springboot 프로젝트를 생성합니다. 아래 사진과 같이 JPA, Lombok, MySQL Driver 의존성을 추가하겠습니다. 스프링부트 프로젝트를 위와 같이 의존성을 추가하여 생성합니다. build.gradle 실행 위에서 생성한 프로젝트의 jar파일을 풀고, build.gradle 파일을 intellij 혹은 eclipse로 실행합니다. gradle로 프로젝트를 실행하면 자동으로 소스파일 경로가 생성됩니다. ...

2024. 3. 19. · 6 분 · 1230 단어 · Leaf