๐ซ ์ผ์ ๊ด๋ฆฌ ์ฑ Develop API ๋ฅผ ๊ตฌํํ๋ฉฐ ๊ฒช์ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ๋ฐฉ๋ฒ, ์๋ก ์๊ฒ๋ ์ ์ ๊ธฐ๋กํฉ๋๋ค.
์์ฑ์ผ, ์์ ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ Entity์ ์ญ์ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ํ๋๊ฐ ํ์ํ๋ค. (*ํ ์ด๋ธ๋ง๋ค Hard Delete, Soft Delete ์ ๋ต์ ๋ฐ๋ก ๋์ง ์๋๋ค๋ ๊ฐ์ )
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
private LocalDateTime deletedAt;
}
์ญ์ ์ฌ๋ถ๋ฅผ ์์ฑ์ผ, ์์ ์ผ๊ณผ ๊ฐ์ด ๋ ์ง ํ์์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด deletedAt ํ๋๋ฅผ BaseEntity ์ ๋ง๋ ๋ค.
๊ธฐ์กด Hard Delete โ Soft Delete ๋ก ์ญ์ ๋ฐฉ์ ๋ณ๊ฒฝ
@Getter
@Entity
@Table(name = "member")
@SQLDelete(sql = "UPDATE member SET deleted_at = now() WHERE id = ?")
@SQLRestriction("deleted_at IS NULL")
public class Member extends BaseEntity {
//...
}
| ์ด๋ ธํ ์ด์ | ์ค๋ช |
|---|---|
| @SQLDelete | JPA๋ฅผ ํตํด Entity ์ญ์ ๊ฐ ๋ฐ์ํ ์, Delete ์ฟผ๋ฆฌ๊ฐ ์๋ ์ ๋ ฅํ sql ์ ์คํ |
| @SQLRestriction | JPA๋ฅผ ํตํด ์์ฑ๋ select ์ฟผ๋ฆฌ์ ์ค์ ํ ์กฐ๊ฑด์ where ์ ์ ์๋์ผ๋ก ์ถ๊ฐํ๋ค. |
@Where โ @SQLRestriction@Where ์ด๋
ธํ
์ด์
์ Hibernate ORM 6.3 ๋ฒ์ ๋ถํฐ deprecated ๋์ด ์ฌ์ฉํ์ง ์๋๋ค. ๐ ์ฐธ๊ณ
Is there a replacement for the in 6.3 deprecated @Where and @Loader