심화 작업

뽕칠이·2024년 7월 22일

Delete

삭제를 구현하는 도중 todoId를 todo의 길이로 할당하게 되면 삭제 과정에서 문제가 발생한다.

  • 기존 DB

  • 삭제 작업 후 DB

이후 todolist를 추가하게 되면 현재 길이는 2이고 todoId는 3이 존재한다. 현재 idRef 값은 3이고 todoId 값도 3이므로 처음 추가하는 todo는 todoId가 3인 행에 내용이 변경된다.

이를 해결하기 위해 spring boot에서 제공하는 어노테이션을 사용할 것이다.

package com.example.demo.Entity;

import jakarta.persistence.*;
import lombok.Data;

import java.util.Date;

@Entity
@Table(name = "Todo")
@Data
public class Todo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "TodoId")
    float todoId;

    @Column(name = "checkBox")
    Boolean checkBox;

    @Column(name = "TodoContent")
    String todoContent;

    @Column(name = "TodoDate")
    Date todoDate;
}

@GeneratedValue(strategy = GenerationType.IDENTITY)

DB가 AUTO_INCREAMENT 방식으로 기본키를 자동으로 생성하는 어노테이션이다.
IDENTITY 전략을 사용하면 식별자를 DB에서 지정하기 전까지는 알 수 없기 때문에, em.persist()를 하는 즉시 INSERT SQL이 데이터베이스에 전달된다.

이 전략은 트랜잭션을 지원하는 쓰기 지연이 동작하지 않는다.

0개의 댓글