BE/JPA

· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. 프록시 DB 조회를 미루는 가짜 엔티티. (실제로 객체가 사용될 때. 그 때 조회함) 1) 프록시 기초 em.find() vs em.getReference() em.find() : DB를 통해서 실제 엔티티 객체 조회 em.getReference() : DB 조회를 미루는 가짜(프록시) 엔티티 (실제로 객체가 사용될 때. 그 때 조회함) 2) 프록시 특징 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지않고 사용하면 됨 프록시 객체는 실제 객체의 참조를 보관 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 ..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. 상속관계 매핑 관계형 DB에는 상속 관계가 없음 (대신, 슈퍼타입 서브타입 관계가 존재함) 상속관계 매핑 : 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 하나의 마스터 테이블과 각각의 서브테이블로 분리하여 변환 : 조인 전략 하나의 테이블로 합쳐서 변환 : 단일 테이블 전략 마스터 테이블의 컬럼을 서브타입 테이블에 넣어 서브타입 테이블로만 변환 : 구현 클래스마다 테이블 전략 마스터 테이블은 추상 클래스로 생성하는 것이 맞음 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테..
· BE/JPA
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다. 1. 연관관계 매핑 시 고려사항 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany (다대다의 경우, 실무에서 사용하지 않는 것이 좋음) 단방향, 양방향 테이블 외래 키 하나로 서로 다른 테이블에 조인이 가능함 방향이라는 개념이 없다고 보면 됨 객체 참조용 필드가 있는 쪽으로만 참조가 가능함 한쪽에서만 참조할 수 있으면 단방향 양쪽이 서로 참조할 수 있으면 양방향(단방향이 2개) 연관관계의 주인 객체 양방향 관계에서는 참조가 2군데 → 두 객체 중 외래키를 관리 할 곳을 지정 연관관계의 주인 : 외래 키를 관리하는 참조 주인의..
· BE/JPA
http://hibernate.org/orm/releases/ Releases - Hibernate ORM Idiomatic persistence for Java and relational databases. hibernate.org 위의 링크에 들어가면 Hibernate-JPA의 버전 별 호환 및 자료를 받을 수 있다. More info를 누르면, 호환되는 Java 및 JPA를 알 수 있다. 또한, 문서와 필요한 jar파일들을 한 번에 받을 수 있다.
· 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' 카테고리의 글 목록 (2 Page)