주의사항
ex)
@Entity
public class Member{
...
주요 속성 정리
ex)
@Entity
@Table(name = "Velog_Member")
public class Member{
...
직접 @Id로 매핑한다.
DB에 삽입하기 전, 직접 Id 값을 할당해야한다.
ex)
@Entity
@Table(name = "Velog_Member")
public class Member{
@Id
private Long id;
...
대리키 사용 방식
DB 벤더마다 지원하는 방식이 다르기 때문에 다음과 같은 속성들이 있다.
- 주로 MySQL, SQL Server, DB2에서 사용한다.
ex)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
- 시퀸스를 지원하는 오라클, DB2, H2 등에서 사용한다.
ex)
@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;
...
- 키 생성 전용 테이블을 하나 만들어 시퀸스 전략을 흉내낸다.
- 모든 데이터베이스에서 사용가능하다.
ex)
@Entity
@TableGenerator(
name = "MEMBER_SEQ_GENERATOR",
table = "TABLE_SEQUENCES",
pkColumnName = "MEMBER_SEQ", allocationSize = 1
)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.TABLE,
generator = "MEMBER_SEQ_GENERATOR")
private Long id;
...
- @GeneratedValue.strategy의 default값이다.
ex)
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
...
주요 속성 정리
ex)
@Entity
public class Member {
...
@Column(name = "mem_email", length = 255)
private String email;
...
ex)
@Entity
public class Member {
...
@Column(name = MemberTable.ROLE)
@Enumerated(EnumType.STRING)
private Role role;
...
ex)
@Entity
public class Member {
...
@Temporal(TemporalType.DATE)
@Column(name = BoardTable.UPLOAD_DATETIME)
private Date uploadDatetime;
...
ex)
@Entity
public class Member {
...
@Lob
private String lobString; // clob
@Lob
private byte[] lobByte; // blob
...
ex)
@Entity
public class Member {
...
@Transient
private String tempId;
...
주요 속성 정리
ex)
@Entity
@Access(AccessType.FIELD) // 생략 가능
public class Member {
...
@id
private String id;
...
ex)
@Entity
@Access(AccessType.PROPERTY) // 생략 가능
public class Member {
...
private String id;
@Id
public String getId(){
return this.id;
}
...
ex)
@Entity
public class Member {
...
@Id
private String id;
private String pw;
@Access(AccessType.PROPERTY)
public String getPw(){
return encrypt(this.pw);
}
...
참고 도서