
이번에 JPA를 좀 공부해보면서 detach의 동작에 대해 이해하기 위해 테스트용 코드를 작성해봤다. 위와 같이 엔티티 클래스를 만들고 서비스 클래스에서 새로운 엔티티를 만들어 persist() 후 detach()를 호출했다. 위와 같이 서비스 클래스를 만들고 컨트롤러에서 /test GET 호출을 하면 MemberSerivceImpl의 test()가 호출되도록 개발했다. 내가 예상한 결과는 persist() 후 detach()해서 영속성 컨텍스트에서 엔티티를 관리하지 않고, transaction commit 전에 detach 했기 때문에 /test GET 호출 후 DB에 Member 데이터가 들어가지 않았을 것으로 생각했다. 그런데 확인해보니 DB에 데이터가 들어갔다. 예상한 것과 다른 결과가 나왔다. ..

📌 Cascade 해당 Entity의 상태(영속성)가 변하면, 연관된 Entity도 상태가 변한다. (전이) CascadeType ALL : 부모 엔티티의 모든 상태 변화가 자식 엔티티에 전이된다. PERSIST : 부모 엔티티가 영속 상태가 되면, 자식 엔티티도 영속 상태가 된다. MERGE : 부모 엔티티에 merge()를 하면, 자식 엔티티에도 전이된다. (준영속 → 영속) REMOVE : 부모 엔티티가 삭제되면, 자식 엔티티도 삭제된다. 📌 orphanRemoval = true @OneToOne, @OneToMany 에서 사용할 수 있다. 부모 엔티티와 연관관계가 끊긴 자식 엔티티(고아 객체)는 DB에서 삭제된다. 📌 CascadeType.REMOVE & orphanRemoval = true 부모..
- Total
- Today
- Yesterday
- JPA
- 스프링MVC
- default interface
- 토비의 스프링
- c#
- SpringBoot
- ASP.NET
- 준영속
- 영속성
- jQuery
- Effective Java
- spring boot
- Java
- 빌더 패턴
- 다이내믹 프록시
- OWIN
- C# 문법
- @Modifying
- JpaRepository
- Spring
- MSSQL
- 자바의 정석
- DataAnnotation
- 스프링
- orphanRemoval
- Nullable
- uploadfive
- 스프링 부트 테스트
- JavaScript
- 고아 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |