[JPA] EntityListeners 정리
# 서론 게시글이나 댓글 CRUD를 구성할때, 생성일과 수정일을 포함하고 싶은 경우가 있다. 이럴때 그냥 LocalDateTime을 엔티티 멤버변수로 넣어놔도 되지만 이러면 디비에 들어가는 양식이 이쁘지가
mopil.tistory.com
사용법
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class Member extends BaseEntity{
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
@ManyToOne(fetch = FetchType.LAZY)
private Team team;
public Member(String username) {
this.username = username;
}
public Member(String username, int age) {
this.username = username;
this.age = age;
}
public Member(String username, int age, Team team) {
this.username = username;
this.age = age;
if (team != null) {
changeTeam(team);
}
}
public void changeTeam(Team team) {
this.team = team;
team.getMembers().add(this);
}
}
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
@Getter
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
public LocalDateTime createDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
@SpringBootApplication
@EnableJpaAuditing
public class JpadataApplication {
public static void main(String[] args) {
SpringApplication.run(JpadataApplication.class, args);
}
@Bean
public AuditorAware<String> auditorProvider() { //밑에2번째꺼 뭐시기 by에 쓴다고 함
return () -> Optional.of(UUID.randomUUID().toString()); //이부분은 세션를 넣어서
//쓴다고는 하는데 잘 모르겠다
} //나중에 찍먹해봐겠다
}
main에는 11버전에서는 @EnableJpaAuditing을 써줘야 하더라 나머지는 몰?루
만약 시간, 사용자를 따로따로 쓰고싶다면
public class BaseTimeEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
}
public class BaseEntity extends BaseTimeEntity {
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
이렇게 나눠서 쓰면 된다고 한다.
'메모장' 카테고리의 다른 글
dependencies 메모 (0) | 2023.11.21 |
---|---|
jpa는 기본생성자가 (0) | 2023.11.18 |
@EntityGraph (join fetch 대용) (0) | 2023.11.18 |
JpaRepository Page, Slice 사용법 (0) | 2023.11.18 |
Spring Data Jpa Query Creation 문서 (0) | 2023.11.18 |