Spring[Info] - JPA Annotations
2021. 7. 2. 14:11ㆍSpring/Spring[Info]
반응형
@Entity
- 테이블과 일대일로 매칭되는 객체 단위이며 Entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미합니다.
@Table
- 데이터베이스상의 테이블명을 정해줄 수 있다. Entity 클래스의 이름 그대로 테이블이 생성 되기 때문에 관례적으로 변경해 줄 때 사용한다.
@Entity
@Table(name = "SCHOOL")
public class School { ... }
@Column
- 데이터베이스의 테이블에 있는 컬럼과 동일하게 1:1로 매칭되기 때문에 Entity 클래스 안에 내부변수로 정의
- 테이블에 a,b,c 컬럼이 있다면 각각 3개의 @Column 어노테이션을 작성하게 됩니다. 다만 실제 a,b,c,d 총 4개의 칼럼이 있더라도 a,b,c 컬럼만 Entity 클래스에 작성해도 무방
- Entity 클래스에 정의된 모든 내부변수는 기본적으로 @Column 어노테이션을 포함하고 있어 생략 가능
- length 속성으로 길이를 명시 할 수 있고 없다면 기본 255가 지정됨
@Column
private String code;
@Column(length = 100)
private String name;
// @Column 생략 가능
private String name;
@Column(name = "myName")
private String name;
@Id
- PK를 지정하는 어노테이션
@Id
@Column
private code;
@GeneratedValue
- PK 컬럼의 데이터 형식은 정해져 있지 않으나 대부분 정수를 사용합니다.
- auto incremnet로 중복되지 않은 수를 정하기 위해 자동으로 증가되는 값을 설정 할 수 있습니다.
mySQL 사용시
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
Oracle 사용시
@Id
@SequenceGenerator(name="seq", sequenceName="jpa_sequence")
@EneratedValue(strategy = GenerationType.SEQUENCE, generator="seq")
private Long id;
@MappedSuperclass
- 테이블의 공통으로 사용되는 컬럼에 대해 정의할 수 있다.
- MappedSuperclass를 지정한 클래스를 상속받으면 지정된 변수를 DB 생성시 읽는다.
@MappedSuperclass
public class BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
}
@MappedSuperclass
public class Person extends BaseEntity { // BaseEntity의 id를 상속받음 (DB정보로)
Reference
반응형