Spring-data-JPA(1) [엔티티] Entity
@Entity
- JPA가 괸리하는 엔티티라는 어노테이션
- 기본 생성자가 필수이다. (파라미터가 없는 protected 생성자 )
- final 클래스, enum, interface 사용 불가
- 저장할 필드에 final 사용 X
- 속성 name --> JPA에서 사용할 엔티티의 이름을 설정한다. default 값은 클래스의 이름 그대로
@Entity // entity로 할 것에 붙여줍니다.
public class Member {
@Id
@GeneratedValue
private Long id;
}
@Column
- 컬럼 매핑
- 속성
- name: 필드와 매핑할 테이블의 컬럼 이름
- insertable, updatable: 등록, 변경 가능 여부
- nullable: null값 허용을 결정
- unique: 유니크한 제약조건을 건다.
- columnDefinition: 데이터베이스에 직접 컬럼 정보를 줄 수 있다.
- length: 문자 길이 제약조건 String 타입에만 사용가능
- precision, scale: 소수나 큰 자리 수
@Entity
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id") // 속성을 부여할 수 있습니다.
private Long id;
}
@Enumerated
- 자바 enum 타입을 매핑할 때 사용한다.
- 속성
- EnumType.ORDINAL: 순서를 데이터베이스에 저장
- EnumType.STRING: 이름을 데이터 베이스에 저장
ORDINAL을 사용할 경우 추가로 Enum에 데이터를 추가했을 경우 문제가 생길 수 있다. 따라서 STRING을 사용하자
@Embeded, @Embeddable
임베디드 타입은 복합 값 타입이라고 말하며, JPA에서 새로운 값 타입을 정의해서 사용하는 방법입니다.
@Entity
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
// Embedded 사용 X
private String city;
private String street;
private String zipcode;
// Embedded 사용 O
@Embedded
private Address address;
}
@Embeddable
public class Address {
private String city;
private String street;
private String zipcode;
public Address(String city, String street, String zipcode) {
this.city = city;
this.street = street;
this.zipcode = zipcode;
}
}
위의 코드를 봤을 때 Embeded를 사용한다면, 응집력이 올라가고, 객체지향적인 코드를 만들 수 있다는 장점이 있습니다.
기본 키 맵핑
- @Id, @Generated
- @Id만 사용할 경우 직접 할당하며 @Generated가 붙으면 자동생성
- 자동 생성 전략
- IDENTITY: 데이터 베이스에 위임
- SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용
- TABLE: 키 생성용 테이블 사용
- AUTO: 방언에 따라 자동 지정
- IDENTIY 예시
IDENTITY 예시
@Entity
public class User{
@Id @Generated( strategy = GenerationType.IDENTITY)
private Long id;
}
SEQUENCE 예시
@Entity
@SequenceGeneratort(
name = " USER_SEQ_GENERATOR "
sequenceName = " USER_SEQ "
initiaValue = 1, allocatioSize = 1) // 시작 지점, 한 번에 가져올 SIZE
public class User{
@Id
@Generated( strategy = GenerationType.SEQUENCE, generator = "USER_SEQ_GENERATOR" )
private Long id;
식별자 전략
1. 기본 키 제약 조건: null 이면 안되고, 유일, 변하면 안된다.
2. 미래까지 이 조건을 만족하는 자연키는 찾기 어렵다.
3. 권장형: Long + key
참고
https://book.naver.com/bookdb/book_detail.nhn?bid=9252528
'SpringBoot > JPA' 카테고리의 다른 글
Spring-Data-JPA [5] Fetch Join (0) | 2022.03.24 |
---|---|
Spring-data-JPA [4] Update와 @Query (0) | 2022.03.23 |
Spring-data-JPA [3] 명명법 (0) | 2022.03.22 |
Spring-data-JPA(2) 개념 (0) | 2022.01.06 |
Spring-data-JPA(0) JPA란?? (0) | 2022.01.06 |
댓글
이 글 공유하기
다른 글
-
Spring-data-JPA [4] Update와 @Query
Spring-data-JPA [4] Update와 @Query
2022.03.23 -
Spring-data-JPA [3] 명명법
Spring-data-JPA [3] 명명법
2022.03.22 -
Spring-data-JPA(2) 개념
Spring-data-JPA(2) 개념
2022.01.06 -
Spring-data-JPA(0) JPA란??
Spring-data-JPA(0) JPA란??
2022.01.06