본문 바로가기

JPA4

RelationRepository RelationRepository Relaiton 엔티티를 DB에서 가져오는 RelationRepository를 생성한다. 복잡한 Query문이 들어가거나 Paging을 해야 하는 경우에는 QueryDsl을 사용한다. 1. Spring Data JPA ■ RelationRepository [RelationRepository] public interface RelationRepository extends JpaRepository, RelationRepositoryCustom { @Query("select relations from Relation relations " + "join relations.fromAccount fromAccount " + "join fetch relations.toAccount .. 2022. 6. 1.
#8 프록시와 연관관계 관리 프록시와 연관관계 관리 ● 프록시와 즉시 로딩, 지연 로딩 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. ● 영속성 전이와 고아 객체 JPA는 연관된 객체를 함께 저장하거나 함께 삭제할 수 있는 영속성 전이와 고아 객체 제거라는 편리한 기능을 제공한다. 1. 프록시 [Member와 Team] 위 예제와 같이 Member가 Team을 필드로 갖고 있다고 하자. 만약 Member를 데이터 베이스에서 조회하면 이때, Te.. 2021. 8. 29.
#3 영속성 관리 영속성 관리 JPA를 이해하는데 가장 중요한 용어는 영속성 컨텍스트(persistence context)라고 할 수 있다. 이는 '엔티티를 영구 저장하는 환경'이라는 뜻으로 해석 할 수 있다. 영속석 컨텍스트는 눈에 보이지 않는 논리적인 개념으로, JPA에서는 엔티티 매니저를 통해 엔티티를 영속성 컨택스트에 보관하고 관리한다. 예를 들어 EntityManager.persist(entity)를 실행하면 바로 DB에 바로 저장되는 것이 아니라, 영속성 컨택스트에 엔티티가 저장된다. 이런 식으로 JPA는 엔티티를 DB에 바로 저장하지 않고 우선적으로 영속성 컨택스트에 저장하고 관리한다. 1. 엔티티의 생명주기 엔티티의 생명주기는 다음과 같이 분류될 수 있다. ● 비영속 : 영속성 컨텍스트와 전혀 관계가 없는 .. 2021. 8. 25.
#1 JPA 소개 JPA 소개 현재 주로 사용되는 언어는 객체 지향 언어, 주로 사용되는 데이터베이스는 관계형 DB라고 볼 수 있다. 이런 환경에서 애플리케이션 개발을 할 때는 결국, 객체를 관계형 DB에서 관리하게 된다. 때문에 각 객체마다 일일히 SQL을 사용해서 객체를 관계형 DB에 매핑해주어야 한다. 그런데 객체와 관계형 DB의 구조는 같지 않기 때문에 매핑하는 것 자체도 어렵다. 예를 들어 객체는 상속관계가 있지만 관계형 DB는 상속관계라는 개념이 없다. 수많은 객체를 관계형 DB와 매핑하는 것도 힘든데 그 과정도 어렵고, 매핑 후에도 객체와 관계형 DB 구조의 괴리 때문에 많은 애로사항이 발생한다. 이를 해결하기 위해 JAVA진영에서 ORM 기술 표준으로 나온 게 JPA(Java Persistence API)이.. 2021. 8. 25.