반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 프로그래머스
- nestjs
- 기술면접공부
- 코테준비
- 스프링공부
- Flutter
- 스프링 공부
- 알고리즘공부
- Axon framework
- Kafka
- 카프카
- nestjs공부
- 기술공부
- 스프링부트
- 스프링부트공부
- 코테공부
- nestjs스터디
- JPA공부
- JPA
- 플러터 공부
- JPA스터디
- querydsl
- 스프링
- 자바공부
- JPA 공부
- K8S
- JPA예제
- DDD
- 플러터 개발
- 자료구조공부
Archives
- Today
- Total
DevBoi
[JPA] 시퀀스 테이블 때문에 데이터가 꼬인다면? 본문
반응형
JPA는 엔티티를 생성하면 자동으로 테이블을 만들어준다.
별다른 설정 없이 엔티티만을 만든다면, 테이블 + seq테이블의 구조로 생성이 된다.
1. Person, Person_seq 테이블이 된다.
만약에 Person테이블에 데이터를 강제로 업데이트를 치거나, 데이터를 삽입하면
해당 key에 대한 에러가 발생한다.
duplicate key가 된다. 왜이럴까?
Person_seq는 1을 보고있으나, Person에는 이미 1이 들어가 있는 경우가 되기 때문이다.
"이러한 경우에는 seq 테이블을 새로 만들거나, 시퀀스를 새로만들어 줘야한다"
아래처럼 하자, 참고로 이미 만들어진 시퀀스는 initvalue를 변경한다고해도, 값이 반영 되지 않는다
즉, 덮어씌우지 않는다는 말이다.
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Table(name="fatigue")
@SequenceGenerator(
name = "FATIGUE_SEQ_GENERATOR",
sequenceName = "FATIGUE_NEW_SEQ", // 매핑할 데이터베이스 시퀀스 이름
initialValue = 1000,
allocationSize = 1)
public class Fatigue extends BaseEntity {
@Column(name = "fatigue_id")
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "FATIGUE_SEQ_GENERATOR")
@JsonProperty("fatigue_id")
Long id;
@Column
Long user_id;
@Column
Long fatigue_score;
@Column
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm", timezone = "Asia/Seoul")
LocalDateTime timestamp;
@Column
int dayOfWeek;
}
아래 처럼 피로도 테이블이 있다고 가정하면,
테이블과 pk의 시퀀스 테이블은 위와 같이 작성하여 연결 해주자
반응형
'Develop > [JPA]' 카테고리의 다른 글
[JPA] Nested Response List 처리 (1) | 2023.09.30 |
---|---|
[JPA] 스프링 Timezone 설정 + Aws, Docker mariadb timezone설정 (0) | 2023.09.30 |
[QueryDsl] Spring 3 버전 p6spy 적용 (0) | 2023.09.09 |
[JPA] Querydsl & Paging (0) | 2023.09.02 |
[JPA] JPAUpdateClause 사용 (0) | 2023.09.02 |