DDL 생성 기능JPA 는 어플의 엔티티 구조를 바탕으로 DB 스키마를 자동으로 생성할 수 있는 기능을 제공한다.개발자는 별도의 DDL을 작성할 필요 없이 어플의 도메인 모델만 관리하면 된다.회원 이름에 대한 제약조건의 추가회원의 이름 필수 입력10자 초과 X 제약 조건 추가@Entity @Table(name="MEMBER") public class Member { @Id @Column(name = "ID") private String id; @Column(name = "NAME", nullable = false, length = 10) private String username; }DDLCREATE TABLE member ( id VARCHAR(255) NOT NULL, name VARCHAR(10) ..
일대일 관계 구성시객체지향 개발자들은 주 테이블에 외래 키를 선호한다.단방향 관계회원과 사물함의 일대일 관계MEMBER 테이블은 주 테이블LOCKER 테이블은 대상 테이블 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String username; @OneToOne @JoinColumn(name = "LOCKER_ID") private Locker locker; }@Entity public class Locker { @Id @GeneratedValue @Column(name = "LOCKER_ID") private Long id; private String name; ..
개요@ManyToMany 를 사용하면, 연결 테이블의 관리를 자동화하여 도메인 모델의 단순화를 가능하게 함하지만,실무에서는 이러한 매핑을 그대로 사용하지 않는다.회원이 상품을 주문하는 경우 연결 테이블에 회원 아이디와 상품의 아이디만 저장하는 케이스만으로 충분치 않음.주문 수량, 주문 날짜 등과 같은 추가 정보가 필요하다..연결 테이블에 필드를 추가연결 테이블을 직접 매핑하는 연결 엔티티를 별도 생성해당 엔티티에 추가 필드를 매핑해야함.Member 엔티티에서..@OneToMany(mappedBy = "member") private List memberProducts = new ArrayList();MemberProduct 연결 엔티티까지@Getter @Setter @Entity @Table(name = ..
DB 각 테이블은 고유한 PK를 가짐JPA 사용시 해당 기본 키를 엔티티에 매핑가능하다.직접 할당@Id 어노테이션만 사용하여 기본 키 직접 할당 가능@Entity public class Member { @Id @Column(name = "ID") private String id; }데이터베이스 자동 생성 전략항상 어플의 기본 키 값을 직접 할당하는 적인 비효율적일 수 있음특히 높은 동시성 환경에서는 중복 키 충돌 위험이 있음.데이터 베이스가 제공하는 자동 생성 기능을 활용하는 것이 좋음데이터 베이스 기본 키 생성 전략..직접 할당어플리케이션에서 기본 키 할당IDENTITY기본 키 생성을 데이터 베이스에 위임TABLE키 생성 테이블 사용@GeneratedValue 어노테이션을 사용하면 원하는 기본 키 생성..
기본 키 직접 할당 전략기본키를 직접 할당하기 위해 @Id 어노테이션 사용@Id @Column(name="id") private String id;@Id 어노테이션은 자바 기본자바 래퍼Stringutil.Datesql.Datemath.BigDecimalmath.BigInteger직접 할당 전략은 어플 내에서 기본 키 직접 할당하고 엔티티를 저장하기 전에 이를 수행Board board = new Board(); board.setId("id1"); em.persist(board);IDENTITY 전략기본 키 생성을 DB에 위임MYSQL, PostgreSQL , SQL server 등에서 사용CREATE TABLE BOARD ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, D..
SEQUENCE?DB 시퀀스는 유일한 값을 순서대로 생성하는 DB 오브젝트오라클 PostgreSQL 등 데이터베이스에서 사용 가능시퀀스 사용방법JPA 에서는 @SequenceGenerator 으로 시퀀스 매핑가능@Entity @SequenceGenerator ( name = "BOARD_SEQ_GENERATOR", sequenceName = "BOARD_SEQ", initialValue = 1, allocationSize = 1 ) public class Board { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "BOARD_SEQ_GENERATOR") private Long id; }주의@SequenceGenerator.all..