JPA 소개 SQL을 직접 다룰 때 발생하는 문제점 패러다임의 불일치 JPA란 무엇인가?
hibernate-core : 하이버네티트 라이브러리hibernate-entitymanager : 하이버네이트가 JPA 구현체로 동작하도록 JPA 표준 라이브러리hibernate-jpa-2.1-api : JPA 2.1 표준 API를 모아둔 라이브러리JPA 어노테이션의
단방향 연관관계 객체 연관관계 단반향 관계 -> 양방향을 원할경우 서로 다른 2개의 단방향으로 형성한다. 객체는 참조로 연관관계를 맺는다. 객체 그래프 탐색 : 객체는 참조를 사용해서 연관관계를 탐색. 객체관계매핑 @ManyToOne : 이름 그
다대일 관계의 반대 방향은 항상 일대다 관계이다.데이터베이스 테이블의 일대다 관계에서 외래 키는 항상 다쪽에 있다.양방향 연관관계는 항상 서로를 참조해야한다어느 한쪽만 참조하면 양방향 연관관계가 성립하지 않는다.편의 메소드는 한 곳에만 작성하거나 양쪽 다 작성할 수 있
ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼 타입 서브타입 관계를 매핑하는 것.슈퍼 타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현각각의 테이블로 변환통합 테이블로 변환서브타입 테이블로 변환엔티티 각각을 모두 테이블로 만들고
자바에서 int, double 같은 기본 타입은 절대 공유되지 않는다.새로운 값 타입을 직접 정의해서 사용하는 것. -> 임베디드 타입재사용이 가능하고 응집도가 아주 높다.어노테이션@Embeddable : 값 타입을 정의하는 곳에 표시@Embedded : 값 타입을
JPQL은 객체지향 쿼리 언어 -> 테이블을 대상으로 쿼리하는 것이 아니라 엔티티 객체를 대상으로 쿼리.JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않음.JPQL은 결국 SQL로 변환.대소문자 구분엔티티 이름 -> @Entity(name="XXX"
QueryDSL Criteria의 가장 큰 단점은 너무 복잡하고 어렵다 때문에 코드로 작성해도, 쉽고 간결하며 그 모양도 쿼리와 비슷하게 개발할 수 있는 프로젝트인 QueryDSL을 사용하여 대처한다. QueryDSL을 사용하려면 우선 com.mysema.query
데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있다.리포지토리 인터페이스의 구현체는 애플리케이션 실행 시점에 스프링 데이터JPA가 생성해서 주입해주기 때문에 개발자가 직접 구현체를 개발하지 않아도 된다.JPA는 간단한 CRUD
중복을 허용하는 컬렉션이고, PersistenBag을 래퍼 컬랙션으로 사용Collection, List는 엔티티를 추가할 때 중복된 엔티티가 있는지 비교하지 않고, 단순히 저장만 하면된다. 따라서 엔티티를 추가해도 지연 로딩된 컬렉션을 초기화하지 않는다.중복을 허용하지
1차 캐시는 영속성 컨텍스트와 생명주기를 같이 한다. 영속성 컨텍스트를 더 정확히 이해하기 위해서는 1차캐시의 가장 큰 장점인 애플리케이션 수준의 반복 가능한 읽기를 이해해야 한다. 영속성 컨텍스트가 같으면 엔티티를 비교할 때 다음 조건을 만족해야 한다.== (동일성)