Persistence란 영속성으로 데이터를 생성한 프로그램이 종료되어도 삭제되지 않는 데이터의 특성이다.메모리상 데이터를 JDBC, Persistence FramkeWork를 이용해서 데이터베이스에 저장해 영속성을 부여한다.Persistence FrameWork란 데이
자바에서 데이터베이스에 접근하기 위해서는 JDBC는 필수적이다.JDBC는 자바가 데이터베이스에 접근하기 위해 제공하는 API인데, 오늘은 Spring에서 JDBC를 통해 데이터베이스에 접근하는 과정을 공부해볼 예정이다.DAO란 Data Access Object로써 데이
ORM(Object Relational Mapping)이란?객체와 데이터베이스 테이블을 매핑시켜주는 프레임워크이다.즉, 객체를 데이터베이스에 자동으로 영속화 해주는것이다.종류에는 JPA, Hibernate 등이 있다.JPA(Java Persistence Api)란?현재
EntityManager를 생산하는 팩토리이다.비용이 비싸기 때문에 일반적으로 하나의 EntityManagerFactory를 생성한다.동시성을 보장하기 때문에 동시에 여러 스레드의 접근에도 안전하다. 다른 스레드간의 공유 가능.JPA를 통해 엔티티를 영속성 컨텍스트에게
JPA를 이용함에 있어서 가장 먼저 해야할 것은 엔티티로 사용할 객체와 데이터베이스 테이블을 정확하게 매핑하는 것이다.매핑에 필요한 기본 어노테이션객체와 테이블 매핑 : @Entity, @Table기본키 매핑 : @Id컬럼 매핑 : @Column연관관계 매핑 : @On
Member와 Team이 있다.Member는 하나의 Team에 속할 수 있다.Member와 Team은 다대일 관계라고 하고 객체를 테이블 데이터 중심으로 모델링 했을 때, 객체와 테이블은 아래와 같다.위 객체 연관관계에 따라 엔티티를 모델링해보면 아래와 같다.테이블 중
단방향 연관관계에서는 Member가 Team을 참조로 조회할 수 있었지만, Team에서는 Member를 조회할 수 있는 필드가 없었다.하지만 양방향 연관관계에서는 Member가 Team을 참조로 조회하고 Team에서도 Member를 참조로 조회할 수 있다.비록 Memb
연관관계를 가지는 객체를 조회할때, 연관관계는 가지지만 사용하지 않는 연관관계 객체를 함께 조회한다는 것은 효율적이지 못하다.그렇기 때문에 사용하는것이 지연로딩으로 연관관계 객체를 사용하는 순간 해당 객체 조회 쿼리를 데이터베이스에 요청한다.(영속성 컨텍스트에 없다고
영속성 전이란, 특정 엔티티의 영속 상태를 변경할때 연관관계인 엔티티의 영속 상태도 동일한 상태로 변경시켜주는 것을 말한다.JPA에서는 부모 엔티티를 영속상태로 변경하면 자식 엔티티도 영속상태로 변경해주는 기술을 제공하는데 이를 영속성 전이(CASCADE)라고 한다.종
JPA를 이용한다면 한번씩 마주보게되는 N+1문제를 다뤄볼 예정이다.객체를 데이터베이스에서 불러올 때 1개의 쿼리가 아닌 연관관계 객체를 불러오기 위한 N개의 쿼리가 생성되는 문제이다.예시로 보일 Entity는 아래와 같다. Owner 테스트코드 결과 JPA에서 제