자동 할당
@Id
@SequenceGenerator(name="seq_gen", sequenceName="seq_shoporder")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_shopoder")
private int num;
@SequenceGenerator(name="seq_gen", sequenceName="seq_shoporder")
- @SequenceGenerator : 시퀀스 생성기를 정의 하는 어노테이션
- name : 생성기의 이름을 지정
- sequenceName : 속성은 Oracle 데이터베이스의 시퀀스 이름을 지정
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_shopoder")
- @GeneratedValue : JPA에서 엔티티의 기본 키를 자동으로 생성하는 경우 사용하는 어노테이션
- strategy : GenerationType.SEQUENCE로 설정하여 시퀀스 생성 전략을 지정하겠다는 의미
- generator : @SequenceGenerator 어노테이션에서 name 속성 시퀀스 생성기를 참조한다는 의미
mysql과 oracle 의 자동 할당 생성하는 전략이 다르니 자신의 DB를 확인해서 해야 한다.
- mysql : @GeneratedValue(strategy = GenerationType.IDENTITY)
- oracle : @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_이름"
자동 할당 시 조건 주기
InitialValue : 시작 값 설정
allocationSize : 증가 크기 설정
startvalue : 시작 값 설정
maxvalue : 최대값 설정
@SequenceGenerator(name = "sequence_generator", sequenceName = "your_sequence_name", initialValue = 1, allocationSize = 10)
기타 @Annotation
@Table(name="테이블명") - 클래스 이름과 다르게 테이블을 생성하고 싶을때 사용.
name 속성에 원하는 테이블 이름 작성하고 클래스 위에 작성하여 import 해준다.
@Column(name ="컬럼명", nullable =true or false): 컬럼의 이름과 속성을 설정
@Transient : 컬럼 생성 시 해당 @ 의 하기에 있는 멤버 변수는 컬럼에서 제외 한다는 의미로 JPA는 해당 필드를 데이터베이스에 매핑하지 않으며, 영속성 컨텍스트에서도 무시한다. 보통 데이터를 저장하는 게 목적이 아니라 값만 이동 시키고 싶을 때 사용한다.
@PreUpdate : update 문이 실행 할 떄 함께 실행 되는 메서드를 지정
@PrePersist : insert 문이 실행 할 떄 함께 실행 되는 메서드를 지정
'spring 스프링' 카테고리의 다른 글
REST API 기초 세팅 Postman (0) | 2023.05.23 |
---|---|
REST API 개념 (0) | 2023.05.23 |
JPA로 오라클 테이블 만들기 (0) | 2023.05.20 |
[spring] 스프링 기초 설정 (0) | 2023.05.18 |
[Spring] JPA (Java Persistence API) (3) | 2023.05.18 |