JPA 공부

· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. 연관관계가 필요한 이유 '객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것' - 조영호(객체지향의 사실과 오해) - 객체 vs 테이블 테이블 : 외래 키를 이용해 조인함. 객체 : 참조를 이용함 2. 관계형 DB를 기준으로 엔티티를 설계한 경우 1) Member 객체와 Team 객체(Member는 하나의 팀에만 속할 수 있음) @Entity @Table(name="TEAM_TWO") public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; ... } @E..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. 기본 키 매핑 1) 직접 할당 @Id : 직접 키 값을 넣어줄 경우 사용 2) 자동 생성 @GeneratedValue IDNETITY : 데이터베이스에 위임 (MYSQL 사용 가능) 기본 키 생성을 DB에 위임 주로 MySQL, OstgreSQL, SQL Server 에서 사용 ex) MySQL AUTO_INCREMENT JPA는 보통 트랜잭션 커밋 시점에 INSERT 쿼리를 날림 IDENTITY 는 em.persist() 시점에 즉시 INSERT 쿼리를 날려서 PK값(식별자)를 알 수 있음 SEQUENCE : 데이터베이스 시퀀스 사용 (ORACLE 사용 가능) @SequenceGenerator ..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. 객체와 테이블 매핑 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn 1) @Entity @Entity가 붙은 클래스는 JPA가 관리하는 객체이며, 엔티티라고 함 JPA를 사용해서 테이블과 매핑할 객체는 @Entity를 사용해야 함 기본 생성자 필수(파라미터가 없는 public OR protected로 생성자 구현 필요) final 클래스, enum, interface, inner 클래스 사용 X 객체의 필드에 final 사용 X 속성 name JPA에서 사용할 엔티티의 이름..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. 플러시 - 영속성 컨텍스트의 변경 내용을 DB에 반영 - 트랜잭션이 커밋될 때 발생 (그 외에도 가능) - 쉽게 말해서, JPA와 데이터베이스를 서로 맞추는 과정 - 참고로 플러시를 해도 1차 캐시, 영속성 컨텍스트는 지워지지 않는다. 1) 플러시 호출 방법 직접 호출 : em.flush(); 트랜잭션 커밋(플러시 자동 호출) : tx.commit(); JPQL 쿼리 실행(플러시 자동 호출) 2) 플러시 모드 옵션 // 커밋이나 쿼리를 실행할 때 플러시 (기본값) em.setFlushMode(FlushModeType.COMMIT); // 커밋할 때만 플러시 (JPQL 시 자동 호출, 직접 호출 막..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 영속성 컨텍스트 - "엔티티를 영구 저장하는 환경" 이라는 뜻 - JPA를 이해하는데 가장 중요한 개념 - JPA를 이용하면 영속성 컨텍스트라는 개념이 자주 등장하니 초기에 잡아주는 것이 중요 - JPA와 Java 객체 사이의 임시 보관소? 라고 생각하면 쉽다. → 이 임시 보관소에 들어가야 JPA 관련 작업이 가능하다. 1. 엔티티 매니저 & 영속성 컨텍스트 - 영속성 컨텍스트는 논리적인 개념(눈에 보이지 않음) - 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 2. 엔티티의 생명주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 // JPA와 관련없이 단순히 객..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. JPA에서 단일건이 아닌 리스트 조회 우선, MemberInfo 테이블을 아래의 데이터처럼 직접 수정해둔다. 리스트를 조회하기 위해서는 JPQL이라는 기능을 이용해야함. JPQL은 우리가 알고있는 일반적인 쿼리는 아님. package com.sampleJpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import java.util.List;..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. JPA 구동 방식 1) pesistence라는 클래스가 persistence.xml(설정파일)을 읽어서 EntityManagerFactory라는 클래스를 만든다. 2) EntityManagerFactory에서 EntityManager를 생성한다. - EntityManagerFactory 는 하나만 생성해서 애플리케이션 전체에서 공유 (싱글톤) - EntityManager는 쓰레드 간에 공유되지 않음. (사용하고 버려야함) - JPA의 모든 데이터 변경은 트랜잭션 안에서 실행되야함 2. JPA 구조 설정 1) EntityManagerFactory를 만들어보자. 필자는 아래의 그림처럼 'jpaMain..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. JPA - Java Persitence API - JAVA의 ORM 기술 표준 - 인터페이스의 모음. (3가지 구현체 중, 하이버네이트를 대부분 사용) ORM? - Object-relational mapping(객체 관계 매핑) - 대중적인 언어는 대부분 ORM 기술이 존재하며, JAVA의 ORM 기술 표준이 JPA이다. - 객체는 객체 지향 언어가 지향하는 대로 모델링을 하면 되고, RDBMS는 RDBMS대로 설계 → 객체와 RDBMS의 매핑 작업을 ORM이 도와줌. JPA의 역사 1. EJB - 엔티티 빈 자바 표준 ORM이었으며, 이 기술이 획기적이었지만 사용하기 불편하여 잘 사용되지 않았다. 2..
멍목
'JPA 공부' 태그의 글 목록 (2 Page)