1. createdBy, updatedBy 자동 설정
- config - JpaConfig
@Configuration // 설정 파일
@EnableJpaAuditing // JPA 감시 활성화
public class JpaConfig {
}
- component - LonginUserAuditorAware
@Component // 로그인 한 user 감시하는 역할
public class LonginUserAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() { // 현재 감시자.
return Optional.of("AdminServer"); // created, updated가 일어날 때 AdminServer 라는 이름을 주겠다
}
}
- User
@NoArgsConstructor //매개변수가 없는 기본 생성자
@AllArgsConstructor // 모든 매개변수를 가지는 생성자
@Data // 객체로 사용할 것이기 때문에
@Entity
@ToString(exclude = {"OrderGroup"})
@EntityListeners(AuditingEntityListener.class) // 이 리스너에 의해 @createdBy 가 자동으로 설정됨
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String account;
private String password;
private String status; //회원 상태
private String email;
private String phoneNumber;
private LocalDateTime registeredAt; //가입일자
private LocalDateTime unregisteredAt; //해지일자
@CreatedDate
private LocalDateTime createdAt;
@CreatedBy
private String createdBy;
@LastModifiedDate
private LocalDateTime updatedAt;
@LastModifiedBy
private String updatedBy;
// 1 : N
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
private List<OrderGroup> orderGroupList;
}
UserRepositoryTest
-> user.setCreatedAt, user.setCreatedBy를 주석처리 했지만 db에 반영됨
@Test
public void create(){
User user = new User();
user.setAccount("Test02");
user.setPassword("Test02");
user.setStatus("registered");
user.setEmail("Test01@gmail.com");
user.setPhoneNumber("010-2222-2222");
//user.setRegisteredAt(LocalDateTime.now());
//user.setCreatedAt(LocalDateTime.now());
user.setCreatedBy("AdminServer");
User newUser = userRepository.save(user);
Assertions.assertNotNull(newUser);
}
'개발공부 > Java(JPA)' 카테고리의 다른 글
[Java] String VS StringBuilder 차이점 (0) | 2025.02.17 |
---|---|
JPA 란? (1) | 2025.02.13 |
Entity (0) | 2025.02.13 |
Repository (0) | 2025.02.13 |
JPA 연관 관계 설정 (0) | 2023.06.18 |