자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 스프링 환경에서 JPA를 사용하면 컨테이너가 트랜잭션과 영속성을 관리해준다. 컨테이너 환경에서 동작하는 JPA의 내부 동작 방식을 이해하지 못하면 문제가 발생했을 때 해결이 쉽지 않다. 1. 트랜잭션 범위의 영속성 컨텍스트 1.1. 스프링 컨테이너의 기본 전략 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다. 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다 트랜잭션..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 1. 스프링 데이터 JPA 스프링 데이터 JPA는 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트다. CRUD를 처리하기 위한 공통 인터페이스 JpaRepository를 제공하고, 리포지토리를 개발할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해준다. 일반적인 CRUD 메소드는 JpaRepository 인터페이스가 공통..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr QueryDSL은 쿼리를 문자가 아닌 코드로 작성하여 쉽고 간결하며 그 모양도 쿼리와 비슷하게 개발할 수 있는 프로젝트이다. 코드로 JPQL을 작성하므로 문법 오류를 컴파일 단계에서 잡을 수 있고 IDE 자동완성 기능의 도움을 받을 수 있다 2. 시작 라이브러리 추가와 쿼리용 클래스 생성 com.mysema.query.jpa.impl.JPAQuery 객체를 생성해야 하며, 사용할 쿼리 타입(Q)을..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 1. 기본 문법과 쿼리 API SELECT 문 SELECT m FROM Member AS m where m.username = 'Hello' 대소문자 구분 엔티티와 속성은 대소문자를 구분한다. Member와 username은 대소문자를 구분 SELECT, FROM, AS 같은 JPQL 키워드는 대소문자를 구분하지 않는다. 엔티티 이름 JPQL에서 사용한 Member는 클래스명이 아니라 엔티티명이다..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr JPA의 데이터 타입은 엔티티 타입과 값 타입으로 나눌 수 있다. 엔티티 타입 : @Entity 로 정의하는 객체, 식별자를 통해 추적 가능 값 타입 ; 단순히 값으로 사용하는 자바 기본 타입, 추적 불가능 값 타입의 종류 기본값 타입 - 자바가 제공하는 기본 데이터 타입 자바 기본 타입 래퍼클래스 String 임베디드 타입 - 사용자가 직접 정의한 값 타입 컬렉션 값 타입 - 하나 이상의 값 타..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 1. 프록시 엔티티를 조회할 때 연관된 엔티티를 항상 사용하는 것이 아니기 때문에, JPA는 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연시키는데 이것을 지연 로딩이라고 한다, 지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라고 한다. 1.1 프록시 기초 엔티티를 조회할 때 em.find() 메소드 사용 엔티..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 1. 상속 관계 매핑 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없고, 대신 상속과 유사한 슈퍼타입 서브타입 관계라는 모델링 기법이 있다. 상속 관계 매핑은 객체의 상속구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것 🤗 슈퍼타입 서브타입 논리 모델을 테이블로 구현하는 방법 조인 전략 : 각각을 모두 테이블로 만들고 조회할 때 조인 사용 단일 테이블 전략 : 테이블..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 6장 - 다양한 연관관계 매핑 엔티티의 연관관계를 매핑할 때 고려해야 할 것 : 다중성, 방향, 연관관계의 주인 가능한 모든 연관관계 다대일 : 단방향, 양방향 일대다 : 단방향, 양방향 일대일 : 주 테이블 단방향, 양방향 일대일 : 대상 테이블 단방향, 양방향 다대다 : 단방향, 양방향 1. 다대일 다대일 관계와 일대다 관계는 항상 반대 방향 외래키는 항상 다 쪽에 있고, 따라서 객체 양방향 ..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 5장 - 연관관계 매핑 기초 방향 : 단방향과 양방향 다중성 : 일대일, 일대다, 다대일, 다대다 연관관계의 주인 : 양방향 연관관계 시 연관관계의 주인을 정해야 함 1. 단방향 연관관계 객체 연관관계와 테이블 연관관계의 차이 객체는 참조(주소)로 연관관계를 맺는다 객체의 연관관계는 단방향이다. 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다. 테이블의 외래 키로 연관관계를 맺는..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 4장 - 엔티티 매핑 1. @Entity 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. name : 엔티티의 이름, 보통 기본값인 클래스 이름을 사용한다. 기본 생성자는 필수 final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 final을 사용하면 안 된다. 2. @Table @Table은 엔티티와 매핑할 테이블을 지정..