JPA를 이용해 데이터베이스의 테이블과 상호 작용(데이터 저장, 수정, 조회, 삭제 등) 하기 위해 먼저 해야 하는 작업은 데이터베이스 테이블과 엔티티 클래스 간의 매핑 작업
@Entity
, @Table
@Column
@Id
@ManyTOne
, @JoinColumn
@Entity
가 붙은 클래스는 JPA 관리 엔티티- JPA를 사용해서 테이블과 매핑할 클래스는
@Entity
필수
@Entity(name = "Member2")
- @Table 엔티티와 매핑할 테이블
@Entity
@Table(name = "MBR")
public class Member {
@Id
private Long memberId;
}
🙆♀️ DDL 명령어
DDL 명령어에 대한 자동 생성 여부
<property name="hibernate.hbm2ddl.auto" value="none" />
value="속성"
DDL 생성기능
// 회원 이름을 필수, 10자 초과X
@Column(nullable = false, length = 10)
private String name;
@Entity
@Table(name = "MBR",
uniqueContraints={
@UniqueConstraint(name="NAME_AGE_UNIQUE",
columnNames={"NAME","AGE"})})
public class Member {
@Id
private Long memberId;
}
- 필드 차원에서의 매핑 어노테이션
- 필드 매핑 어노테이션 종류
@Entity
@Getter @Setter
@Table(name = "MBR")
public class Member {
@Id
private Long id;
@Column(unique = true, length = 10)
private String name;
@Column(name = "myage")
private int age;
// DB에 날짜관련 매핑 시
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
// 마지막에 갱신된 날짜 매핑
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
// DB에 넣지 않는 데이터
@Transient
private int temp;
}
직접 할당 or 자동 할당
@Id
사용@Id
어노테이션을 붙이는 것으로 기본키를 직접 할당@GeneratedValue
사용@GeneratedValue(strategy = GenerationType.SEQUENCE)
@SequenceGenerator
사용@TableGenerator
💡 예시
IDENTITY 예시 : 데이터베이스에서 바로 생성
@Entity
@Getter @Setter
public class Member2 {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(name="name", nullable=false)
private String username;
}
@SequenceGenerator
사용 예시
@Entity
@Getter @Setter
@SequenceGenerator(name= "MEMBER2_SEQ_GENERATOR",
sequenceName = "MEMBER_SEQ",
initialValue = 1, allocationSize = 1)
public class Member2 {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "MEMBER2_SEQ_GENERATOR")
private Long id;
@Column(name="name", nullable=false)
private String username;
}