본문 바로가기

JPA3

03. Soft Delete 더 편하게 하기 들어가며 DB를 만들면서 우리는 삭제 하는 방법은 두 가지 방법이 있다. 방식 설명 Soft Delete `UPDATE table SET delete = 1 WHERE id = 2` 형태로 ROW가 삭제 되지 않고 flag를 통한 제어 하는 방식 Hard Delete DELETE FROM table WHERE id = 2 형태로 ROW가 실제로 삭제 되는 방식 `Hard Delete`를 하는 경우도 있지만, `Soft Delete`를 하는 경우가 더 많다. 이런 경우에 JPA Entity Graph 의 경우는 `Soft Delete`시 데이터가 같이 담겨서 온다. `Application level에서 필터 하면 되는거 아니냐? ` 라고 생각 할 수 있지만, 인간이기 때문에 로직에 구멍이 많이 생길 수 있.. 2021. 7. 15.
02. 당신의 @Transactional의 readOnly 옵션 잘 쓰고 있나요? 시작하며 오늘은 Spring에서 마법의 어노테이션이라고 부르는 @Transactional의 readOnly 옵션에 대하여 이야기해보려고 한다. 엥? @Transactional에는 readOnly라는 옵션이 없는데? 엥? @Transactional에는 readOnly 옵션이 없는데 이게 무슨일이죠? 없는 걸로 이야기를 하려고 하는 건가? 우리는 이번 readOnly 이야기를 하기 전에 @Transactional은 2가지 있다는 것을 이야기하고 넘어가려고 한다. 이 2가지가 궁극적으로 하려고 하는 일은 동일하다. (실제 Spring AOP 상에서는 javax 패키지의 트랜젝션과 Spring 패키지의 트랜젝션도 모두 지원하고 있다.) Spring 패키지를 통해 제공되는 어노테이션이 더 많은 옵션을 제공하게 된.. 2021. 2. 4.
01. 알아두면 쓸떼있는 GeneratedValue 이야기 Part1 시작하며 우리는 Entity를 만들 때 우리는 PK (Primary Key)를 지정한다. 그중에서도 Primary Key를 선택할 때, 전략적으로 생각했을 때 순차 증가 값을 포기할 수가 없다. 과연 그럼 JPA에서는 이런 대체 키를 어떻게 생성하고, 어떤식으로 동작하는지에 대해 알아보도록 하자. GeneratedValue란? import javax.persistence.*; import java.io.Serializable; import java.time.LocalDateTime; @Table(name = "coupon") @Entity @Getter @Setter public class Coupon implements Serializable { private static final long seria.. 2020. 6. 4.