JPA 20

양방향 연관관계와 연관관계의 주인

객체의 양방향 관계  - 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단방향 관계 2개다. - 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다   테이블의 양방향 연관관계 - 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리- MEMBER.TEAM_ID 외래 키 하나로 양방향 연관관계 가짐 (양쪽으로 조인할 수 있다.)   객체는 둘 중 하나로 외래 키를 관리해야 한다.  외래 키가 있는 곳을 주인으로 정해라

JPQL vs Native SQL

JPQL(Java Persistence Query Language) JPQL이라고 하는 것은 JPA의 일부분으로 정의된 플랫폼 독립적인 객체지향 쿼리 언어입니다. JPA에서 사용할 수 있는 쿼리 언어로 일반 SQL이 데이터베이스를 바라보고 작성한다면 JPQL은 엔티티 클래스를 바라보고 작성해야 합니다. JPQL은 엔티티 객체를 조회하는 객체지향 쿼리다. 테이블을 대상으로 쿼리하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다. SQL과 비슷한 문법을 가지며, JPQL은 결국 SQL로 변환된다. JPA에서 제공하는 메소드 호출만으로 섬세한 쿼리 작성이 어렵다는 문제에서 JPQL이 탄생된 것이다. JPQL 특징 테이블이 아닌 객체를 검색하는 객체지향 쿼리 SQL을 추상화 했기 때문에 특정 벤더에 종속적이지 않..

JPA

JPA JPA(Java Persistence API) Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 인터페이스 이기 때문에 Hibernate, OpenJPA 등이 JPA를 구현함 2. ORM - Object-relational mapping(객체 관계 매핑) - 객체는 객체대로 설계 - 관계형 데이터베이스는 관계형 데이터베이스대로 설계 - ORM 프레임워크가 중간에서 매핑 - 대중적인 언어에는 대부분 ORM 기술이 존재

프로젝션과 결과 반환 DTO 조회 (JPA VS Querydsl)

순수 JPA에서 DTO조회 MemberDto package study.querydsl.dto; import lombok.Data; @Data public class MemberDto { private String username; private int age; public MemberDto(String username, int age) { this.username = username; this.age = age; } } @Test @Test public void findDtoByJPQL(){ List result = em.createQuery("select new study.querydsl.dto.MemberDto(m.username, m.age) from Member m", MemberDto.class..