department에 저장하는 JPA 엔티티 클래스@Entity와 @Table(name = "department")으로 테이블 매핑NoArgsConstructor를 PROTECTED로 설정해 JPA 프록시 생성 지원| 필드명 | 설명 | 제약 조건 |
|---|---|---|
id |
부서 고유 식별자 | PK, DB 자동 증가 (IDENTITY 전략) |
name |
부서 이름 | NOT NULL, 최대 100자, 중복 불가 |
code |
부서 코드 (예: DEV, DSG, OPS) | NOT NULL, 최대 20자, 중복 불가 |
createdAt |
엔티티 생성 시간 | 저장 시 자동 입력, 수정 불가 (updatable = false) |
updatedAt |
엔티티 마지막 수정 시간 | 저장/수정 시 자동 변경 |
@PrePersist 메서드: 엔티티가 처음 저장(persist) 될 때 createdAt과 updatedAt을 현재 시간으로 자동 설정touch() 메서드: 엔티티 수정 시 updatedAt을 현재 시간으로 갱신setName(String name), setCode(String code)→ 각각 필드 변경 + touch() 호출로 수정 시간 자동 갱신@Builder 적용으로 빌더 패턴 편리하게 사용 가능name과 code 컬럼 모두 유니크 제약이 있어 중복 방지 → 부서 식별 안정성 보장createdAt 필드는 데이터 변경 방지를 위해 updatable = false로 설정해 안전한 이력 관리 가능touch() 메서드 호출을 잊지 말고 상태값 갱신을 확실히 처리