기본 키 직접 할당 전략기본키를 직접 할당하기 위해 @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..
TABLE 전략정의키 생성 전용 테이블 활용하여 DB 시퀀스 모방장점DB안 가리고 모두 활용가능단점SELECT 로 값을 조회 , UPDATE 로 값을 증가시킴.시퀀스에 비해 DB 추가 통신이 필요하다는점..작동 방식키 생성 용도의 테이블의 생성sequence_name 시퀀스 이름next_val 시퀀스 create table MY_SEQUENCES ( sequence_name varchar(255) not null, next_val bigint, primary key (sequence_name) )JPA 에서 미리 값을 넣어둘 필요 X 자동으로 초기화됨@TableGenerator기능테이블 기반의 식별자 생성 전략의 정의속성name: 식별자 생성기 이름.table: 키 생성 테이블명.pkColumnName,..
JPA 필드와 컬럼 매핑JPA 를 이용하면 자바 객체와 DB 테이블간의 매핑을 간단히 설정가능매핑 어노테이션@Columnname필드와 매핑할 테이블의 컬럼 이름을 지정@Column(name = "column_name") private String fieldName;insertable엔티티가 저장될 때 해당 필드도 저장할지 여부를 결정@Column(insertable = false) private String readOnlyField;updatable엔티티가 수정될 때 해당 필드도 수정할지 여부를 결정@Column(updatable = false) private String nonUpdatableField;table특정 필드를 다른 테이블과 매핑할때 사용@Column(table = "another_tabl..
단방향 연관다대일(N:1) 에 대해 이해가 필요합니다.회원과 팀회원은 하나의 팀에만 속할 수 있음회원과 팀은 다대일 관계팀은 여러 회원을 담음.객체상의 연관회원과 팀 간의 관계회원 객체는 Member.team 필드를 통해 팀 객체와 연관단방향 관계로서, 회원은 팀을 알 수 있으나, 팀은 회원을 알 수 없다.테이블상의 연관회원 테이블과 팀 테이블 관계회원 테이블은 TEAM_ID 외래 키를 통해 팀 테이블과 연관외래 키 하나로 양방향 조인이 가능함.MEMBER JOIN TEAM, TEAM JOIN MEMBER.객체와 테이블 연관관계의 차이점단뱡향 vs 양방향객체의 연관관계는 항상 단방향임양방향을 만들기 위해서는 양쪽에 필드 추가가 필요하다.테이블은 외래키 하나로 양방향 조인이 가능함객체 연관 vs 테이블 연..
@JoinColumn외래키 매핑시 사용속성기능기본값name매핑할 외래 이름필드명 +_+ 참조하는 테이블의 기본 키 컬럼명referencedColumnName외래 키가 참조하는 대상 테이블의 컬럼명참조하는 테이블의 기본 키 컬럼명foreignKey(DDL)외래 키 제약조건을 직접 지정할 수 있다. 이 속성은 테이블을 생성할 때만 사용한다.-.........@JoinColumn 을 생략하면 외래 키를 찾을 때 기본 전략을 사용@ManyToOne 아래에 private Team team 선언만해도 기본 전략인 필드명_참조하는 테이블 컬럼명에 따라team_TEAM_ID 라는 외래 키를 사용@ManyToOne다대일 관계에서 사용속성기능기본값optionalfalse로 설정하면 연관된 엔티티가 항상 있어야 한다.tru..