ORM(Object Relational Mapping) : 객체관계 매핑JPA : ORM을 자바 언어로 작성하는 기술마이바티스에서는 SQL구문 작성후 매핑 설정을 해주었다면JPA에서는 설정을 해주면 SQL구문도 자동 생성.DBMS별로 dialect를 제공한다.(자동으로
엔터티 매니저 설정트랜젝션 관리비지니스 로직JAP를 시작하려면 persistence.xml의 설정정보를 사용해서 엔터티 매니저 팩토리를 생성해야한다.META-INF/persistence.xml에서 persistence-unit을 찾아서 엔터티 매니저 팩토리를 생성한다.
find() 메소드를 사용한다.find(), JPQL을 사용한 조회도 영속 상태가된다.영속성 컨텍스트 내부에 캐시를 가지고 있는데 이를 1차 캐시라한다.영속성 컨텍스트 내부에 Map이 하나 있는데 키는 @Id로 매핑한 식별자고, 값은 엔터티 인스턴스이다.식별자 값은 데
비영속 : 영속성 컨텍스트와 전혀 관계가 없는 상태영속 : 영속성 컨텍스트에 저장된 상태준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태삭제 : 삭제된 상태객체만 생성하면 영속성 컨텍스트나 데이터베이스와 관련없는 비영속 상태이다.엔티티 매너지가 영속성 컨텍스트에 엔
크게 4가지로 분류한다.객체와 테이블 매핑 : @Entity, @Table기본 키 매핑 : @Id필드와 컬럼 매핑 : @Column@Entity 어노테이션으로 테이블과 매핑한다.JPA를 사용해서 테이블과 매핑할 클래스는 필수로 붙여야한다.@Entity가 붙은 클래스는
서로 다른 두 객체가 연관성을 가지고 관계를 맺는 것데이터베이스 환경에서는 join이라는 구문을 사용하지만 객체 환경에서는 해당 어노테이션을 사용해서 매핑한다. 방향(Direction)에 따른 분류참조에 의한 객체의 연관관계는 단방향이다. 테이블의 연관 관계는 외래키(
엔터티 객체를 중심으로 개발할 수 있는 객체 지향 쿼리 SQL보다 간결하며 DBMS에 상관없이 개발이 가능하다. (특정 DBMS에 의존하지 않는다.)JPQL은 데이터베이스에 SQL을 실행해서 결과를 조회한다.(영속성 컨텍스트에 이미 존재하면 기존 엔터티를 반환하고 조
프로젝션(projection) SELECT 절에 조회할 대상을 지정하는 것을 프로젝션이라고 한다. (SELECT {프로젝션 대상} FROM) 프로젝션 대상은 4가지 방식이 있다. 1. 엔티티 프로젝션 원하는 객체를 바로 조회할 수 있다. 조회된 엔티티는 영속성 컨
페이징 처리용 SQL은 DBMS에 따라 각각 문법이 다른 문제점을 안고 있다.JPA는 이러한 페이징을 API를 통해 추상화해서 간단하게 처리할 수 있도록 제공해준다.
JPQL의 그룹함수는 COUNT, MAX, MIN, SUM, AVG로 SQL 그룹함수와 별반 차이가 없다.주의 사항그룹함수의 반환 타입은 결과 값이 정수면 Long, 실수면 Double로 반환한다. 값이 없는 상태에서 count를 제외한 그룹 함수는 null이되고, c
일반 조인 : 일반적인 SQL 조인을 의미(내부 조인, 외부 조인, 컬렉션 조인, 세타 조인)패치 조인 : JPQL 안에서 성능 최적화를 위해 제공하는 기능으로 연관된 엔티티나 컬렉션을 한 번에 조회할 수 있다.지연 로딩이 아닌 즉시 로딩을 수행하며 join fetch
JPQL도 SQL처럼 서브 쿼리를 지원한다.사용 가능 : where, having절사용 불가능 : select, from절
동적쿼리 : 현재 우리가 사용하는 방식처럼 EntityManager가 제공하는 메소드를 이용하여 JPQL을 문자열로 런타임 시점에 동적으로 쿼리를 만드는 방식(동적으로 만들어질 쿼리를 위한 조건식이나 반복문은 자바 코드를 이용할 수 있다.)정적쿼리 : 미리 쿼리를 정의
네이티브 SQL : 네이티브 SQL은 SQL을 개발자가 직접 정의해서 사용할 수 있도록 해주는 수동 모드이다.JDBC API와의 차이점 : 직접 SQL을 작성하는 JDBC API와는 달리 네이티브 SQL은 JPA의 영속성 컨텍스트의 기능을 그대로 사용할 수 있다.네이티