본문 바로가기

개발공부/Java(JPA)

JPA 자동 설정 기능

1. createdBy, updatedBy 자동 설정

  1. config - JpaConfig
@Configuration  // 설정 파일
@EnableJpaAuditing  // JPA 감시 활성화
public class JpaConfig {
}
  1. component - LonginUserAuditorAware
@Component  // 로그인 한 user 감시하는 역할
public class LonginUserAuditorAware implements AuditorAware<String> {

    @Override
    public Optional<String> getCurrentAuditor() {  // 현재 감시자.
        return Optional.of("AdminServer");         //  created, updated가 일어날 때 AdminServer 라는 이름을 주겠다
    }
}
  1. 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