DB/자바 ORM 표준 JPA 프로그래밍 15

[5장] 연관관계 매핑 기초

단방향 연관관계아래 그림의 다대일 단방향 관계는 다음과 같습니다.회원과 팀 객체가 있음회원은 하나의 팀에만 소속될 수 있음회원과 팀은 다대일 관계객체 연관관계에서는 Member.team 필드를 통해서 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없기 때문에 단방향 관계반면, 테이블 연관관계에서는 회원 테이블의 TEAM_ID 외래 키를 통해 회원과 팀을 조인할 수 있고 반대로 팀과 회원도 조인할 수 있으므로 양방향 관계  부연 설명참조를 통한 연관관계는 언제나 단방향객체 간에 연관관계를 양방향으로 만들고 싶은면 반대쪽에도 필드를 추가해서 참조를 보완해야 함양쪽에서 서로 참조하는 것을 양방향 연관관계라고 부르지만 정확하게는 양방향 관계가 아니라 서로 다른 단방향 관계 2개 객체는 참조로 연관관계를 맺는 반..

[4장] 엔티티 매핑

@EntityJPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 함@Entity가 붙은 클래스는 JPA가 관리하는 것으로 엔티티라 부름 @Entity 적용 시 주의사항은 다음과 같음기본 생성자는 필수final 클래스, enum, interface, inner 클래스에는 사용할 수 없음저장할 필드에 final을 사용하면 안 됨 속성기능기본값nameJPA에서 사용할 엔티티 이름을 지정보통 기본값인 클래스 이름을 사용다른 패키지에 이름이 같은 엔티티 클래스가 있다면 name을 지정해서 충돌하지 않도록 해야 함설정하지 않을 경우 클래스 이름을 그대로 사용 @Table@Table은 엔티티와 매핑할 테이블을 지정 속성기능기본값name매핑할 테이블명엔티티 이름을 사용catalogcat..

[3장] 영속성 관리

개요EntityManager는 이름 그대로 엔티티를 관리하는 관리자로 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리합니다.개발자 입장에서 EntityManager는 엔티티를 저장하는 가상의 데이터베이스로 생각하면 됩니다. 엔티티 매니저 팩토리와 엔티티 매니저복습하자면 EntityManagerFactory를 생성하는 비용은 비싼 편에 속하기 때문에 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 빈으로 등록하여 하나만 생성EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook") 그리고 필요할 때마다 EntityManagerFactory에서 E..

[2장] JPA 시작

객체 매핑 시작회원 테이블이 다음과 같이 정의되었다고 가정하겠습니다.  그리고 회원 클래스가 다음과 같이 정의되었다고 가정하겠습니다.  JPA를 사용하려면 가장 먼저 회원 클래스와 회원 테이블을 매핑해야 하고 이를 위해 회원 클래스에 JPA가 제공하는 매핑 어노테이션을 추가하겠습니다.  매핑 정보회원 객체회원 테이블클래스와 테이블MemberMEMBER기본 키idID필드와 컬럼usernameNAME필드와 컬럼ageAGE 부연 설명@Entity: 클래스를 테이블과 매핑한다고 JPA가 알리며 이렇게 @Entity가 사용된 클래스를 엔티티 클래스라고 부름@Table: 엔티티 클래스에 매핑할 테이블 정보를 알려주며 여기서는 name 속성을 사용해서 Member 엔티티를 MEMBER 테이블에 매핑함@Id: 엔티티 ..

[1장] JPA 소개

JPA (Java Persistence API)JPA는 자바 진영의 ORM 기술 표준ORM (Object-Relational Mapping) 프레임워크는 객체와 관계형 데이터베이스 간의 차이를 중간에 해결해 주는 프레임워크스프링 진영에서도 스프링 데이터 JPA라는 기술을 통해 JPA를 적극 지원전자정부 표준 프레임워크의 ORM 기술도 JPA 사용 JPA는 실행 시점에 자동으로 SQL을 만들어서 실행하기 때문에 JPA를 사용하는 개발자는 SQL을 직접 작성하는 것이 아니라 어떤 SQL이 실행될지 생각만 하면 되며 JPA가 실행하는 SQL은 쉽게 예측 가능경우에 따라 JPQL, native query 혹은 QueryDSL을 직접 작성해야 할 때도 많음 JPA를 사용하면 SQL 대신 객체 중심의 개발 방식을 ..

1 2