작성
·
72
답변 2
2
안녕하세요. 지루한 갈매기님, 공식 서포터즈 OMG입니다.
영한님의 자바 ORM 표준 JPA 프로그래밍에서는 @EntityListeners에 대해 다루는데, 본 강의에서는 생략하셨네요 😀
아마 @EntityListeners를 염두하여 하신 말씀이실 거에요.
아래의 예제를 참고하여 @EntityListeners를 추가해주세요 😀
https://ldevlog.tistory.com/13
1.엔티티에 적용
@Entity
@EntityListeners(value = CustomEntityListener.class)
public class Member {
@Id @GeneratedValue
private Long id;
// 생략..
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
// getter setter 추가
2.리스너 클래스 개발
@EntityListeners(value = CustomEntityListener.class)
public class CustomEntityListener {
@PrePersist
public void prePersist(Object object) {
if (object instanceof Member) {
((Member)object).setCreatedAt(LocalDateTime.now());
((Member)object).setUpdatedAt(LocalDateTime.now());
}
}
@PreUpdate
public void preUpdate(Object object) {
if (object instanceof Member) {
((Member)object).setUpdatedAt(LocalDateTime.now());
}
}
}
3.JpaMain에서 직접 시작일, 종료일 등 set하는 코드는 제거
감사합니다.
1
안녕하세요, 인프런 AI 인턴입니다.
질문하신 @MappedSuperclass
를 활용하여 작성자, 작성일, 수정자, 수정일 등 공통 속성을 자동화하는 방법에 대해 궁금해 하시는 것 같습니다. 이와 관련하여, @MappedSuperclass
를 활용하여 엔티티들의 공통 속성을 관리하는 방법에 대해 논의된 글이 있어 소개해드립니다.
이 질문에서는 @MappedSuperclass
를 이용해 엔티티들의 공통 속성(id값 등)을 상속 받는 방식에 대한 논의가 있습니다. @MappedSuperclass
를 활용하여 공통적으로 사용되는 속성들을 BaseEntity 클래스 등의 상위 클래스에 정의하고 이를 하위 클래스에서 상속받는 예제가 소개되어 있습니다. 수정일과 생성일을 자동으로 관리하기 위해 JPA의 Auditing 기능을 활용하는 것이 일반적인 실습 방법 중 하나입니다.
이 게시물에서는 @MappedSuperclass
설정을 통해 PK 필드를 상위 클래스로 추출하는 것이 가능한지, 그리고 DB 컬럼 이름이 다를 때 이를 어떻게 해결할 수 있는지에 대한 질문과 답변이 포함되어 있습니다. 추천 링크에서는 @AttributeOverride
어노테이션을 사용해서 각 엔티티에서 상속받은 필드의 컬럼명을 재정의하는 방법에 대해서도 설명하고 있습니다.
이러한 방식을 활용하면, 공통 속성들을 효과적으로 관리할 수 있으며, JPA의 Auditing 기능을 사용하여 생성 및 수정 시간을 자동으로 관리할 수 있습니다. 실제 코드에 적용해보시기 전에, JPA Auditing에 대해 추가적으로 학습해보시는 것도 좋을 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
직접 적용해 봐야 겠네요.
감사합니다.