🌱BackEnd/JPA3 [JPA] 영속성 컨텍스트 요약 엔티티 매니저 팩토리로부터 엔티티 매니저를 생성합니다. 엔티티 매니저 팩토리를 생성하는 것은 비용이 많이 듭니다, 여러 스레드 동시 접근이 가능합니다. 엔티티 매니저를 생성하는 것은 비용이 많이 들지 않습니다, 여서 스레드가 동시 접근하면 동시성 문제가 발생합니다. 엔티티 매니저를 만들면 내부에 영속성 컨텍스트도 함께 만들어지며 엔티티 매니저를 통해서 접근이 가능합니다. 여러 엔티티 매니저가 같은 영속성 컨텍스트에 접근할 수도 있습니다. 영속성 컨텍스트는 객체를 보관하는 가상의 데이터베이스입니다. 1차 캐시, 동일성 보장, 트랜잭션을 지원하는 읽기 쓰기 지연, 변경 감지, 지연 로딩 기능을 가능하게 합니다. 영속성 컨텍스트가 관리하는 엔티티를 영속 상태의 엔티티라고 하는데, 영속성 컨텍스트가 해당 .. 2023. 6. 5. [JPA] JPA에서 CascadeType.REMOVE, orphanRemoval=true 부모와 자식 관계의 엔티티(예를 들어 게시판과 댓글)를 설계 후 연관관계 매핑을 해주었다. 그 후 자식 엔티티의 일부를 제거하는 코드를 작성하는데 연관 관계는 제거되었지만 자식 엔티티의 데이터가 DB에 그대로 남아있었다. 관련된 문제를 해결하는 방법을 적어보았다. 1. JPA와 연관관계 JPA는 엔티티간의 연관관계를 쉽게 관리할 수 있다. CascadeType와 orphanRemoval 옵션을 통해 부모 엔티티와 자식 엔티티의 관계를 효율적으로 관리할 수 있게 된다. 이 글에선 두 옵션의 기능과 발생하는 문제점에 대해서 적어보았다. 2. CascadeType.REMOVE CascadeType.REMOVE는 부모 엔티티가 삭제될 때 연관된 자식 엔티티도 함께 삭제되는 옵션이다. 예를 들어, 부모 엔티티가 .. 2023. 5. 1. [JAVA/이론] 트랜잭션, @Transactional 트랜잭션, Rollback, Commit SQL 쿼리들을 하나로 묶어놓은 작업수행의 논리적 단위 중간에 실행이 중단될 경우 Rollback 오류없이 실행을 마치면 commit 트랜잭션 예시 송금 과정을 하나의 트랜잭션이라고 생각해보자 내 계좌에서 10000원을 차감한다. 친구의 계좌에서 10000원을 증가한다. 만약 오류로 인해 내 계좌에서는 10000원이 차감됐지만 친구의 계좌에서 10000원이 증가되지 않았다면? Rollback을 통해 처음부터 다시 송금을 시작한다. 만약 송금이 정상적으로 됐다면 commit을 한다 트랜잭션의 특성 원자성 ( Atomicity ) 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것 즉, All or Noting의 개념으로서 작업 단위를 일부분만 실.. 2022. 8. 13. 이전 1 다음