인프런 (자바 ORM 표준 JPA 프로그래밍 - 기본편, 김영한) 강의를 듣고 정리한 내용입니다
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity(name = "user")
public class Member {
}
// user 테이블과 Member 클래스 매핑
@Entity(name = "user")
public class Member {
@Id
private Long id;
@Column(name = "name") //컬럼 매핑 name(DB 칼럼이름), insertable/updateable (등록, 변경 가능여부)
private String username;
@Enumerated(EnumType.STRING) // enum 타입 매핑. EnumType.STRING 으로 사용
private Type userType;
@Lob //BLOB(byte[], java.sql. BLOB), CLOB(String, char[], java.sql.CLOB) 매핑. 속성 없음
private String description;
@Transient //매핑 무시. DB와 관련 없음. 메모리상에서만 값을 갖고 싶을떄 사용함
private String tempName;
}
@Id
private Long id;
member.setId(4L);
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Entity
@SequenceGenerator(
name = "MEMBER_SEQ_GENERATOR",
sequenceName = "MEMBER_SEQ", //매핑할 데이터베이스 시퀀스 이름
initialValue = 1, allocationSize = 1)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MEMBER_SEQ_GENERATOR")
private Long id;
}
//위와 동일
@Entity
public class Member {
@Id
@SequenceGenerator(name = "SEQ", sequenceName = "MEMBER_SEQ", initialValue = 1, allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ")
private Long id;
}
//allocationSize 시퀀스 한 번 호출에 증가하는 수
3) TABLE: 키 생성용 테이블을 따로 만들어 관리
모든 DB에서 사용 가능하나 성능 이슈 있음. 잘 사용 안하므로 패스
@TableGenerator 필요
4) AUTO: DB에 따라 1) 2) 3) 의 전략 자동 지정