2025/11 6

[MySQL] Boolean vs Enum

MySQL에서 Boolean과 Enum 사용에 대한 고찰Boolean 타입MySQL에는 BOOLEAN이라는 타입 자체가 존재하지 않는다.MySQL 공식 문서 - Data Types MySQL :: MySQL 8.4 Reference Manual :: 13 Data TypesMySQL supports SQL data types in several categories: numeric types, date and time types, string (character and byte) types, spatial types, and the JSON data type. This chapter provides an overview and more detailed description of the properties ..

DB/MySQL 2025.11.24

[JPA] BaseEntity로 공통 엔티티 속성 추상화하기

🤔 시간과 같은 공통 엔티티 속성을 효율적으로 관리하는 방법은 없을까?엔티티를 작성하다 보면 중복되는 코드가 자주 등장한다.대표적인 예로 등록된 시간(createdAt), 수정된 시간(updatedAt) 과 같은 필드가 있다.이 필드는 거의 모든 엔티티에 필요하지만,매번 같은 코드를 반복해서 작성하는 것은 불필요하고 유지보수에도 좋지 않다.그렇다면 이 시간 관련 속성을 효율적으로 추상화할 수는 없을까?그리고 한 번 만들어두면 자동으로 관리되게 할 수 있을까?💡 추상 클래스 BaseEntity로 공통 필드 추상화하기이를 해결하기 위한 가장 좋은 방법은 공통 속성을 관리하는 추상 클래스(BaseEntity)를 두는 것이다.JPA의 @MappedSuperclass와 스프링 데이터 JPA의 Auditing ..

Spring/JPA 2025.11.06

[JPA]JPA Entity 생명주기(Entity LifeCycle)

1️⃣ 엔티티 생명주기란?JPA에서 엔티티(Entity) 는 단순한 자바 객체(POJO)가 아니다.EntityManager가 관리하는 “영속성 컨텍스트(Persistence Context)” 안에서 상태를 가지는 객체로 존재한다.즉, 엔티티는 아래와 같은 상태 변화(생명주기, Lifecycle) 를 거친다.🪄 엔티티의 4가지 상태상태설명예시비영속 (Transient)아직 JPA가 모르는 단순한 객체new Member("홍길동")영속 (Persistent)EntityManager에 의해 관리 중em.persist(member) 이후준영속 (Detached)관리에서 벗어난 상태em.detach(member)삭제 (Removed)삭제 예약 상태em.remove(member)2️⃣ 생명주기 이벤트 콜백 (Li..

Spring/JPA 2025.11.06