[ShowMyCNFT] JPA Auditing

junghan·2023년 4월 11일
0

SpringBootProject

목록 보기
26/35
post-thumbnail

JPA Auditing이란?

JPA Auditing은 JPA를 이용하여 엔티티를 저장, 수정, 삭제할 때, 자동으로 생성일(createdDate)과 수정일(modifiedDate)을 처리하는 기능을 제공합니다. JPA Auditing을 사용하면, 엔티티 객체를 생성하거나 수정할 때 자동으로 생성일과 수정일을 설정할 수 있습니다.


JPA Auditing 적용

JPA AUDITING을 위한 클래스

@Getter
@MappedSuperclass // JPA Entity 클래스들이 BaseTimeEntity를 상속할 경우 필드들도 (createData, modifiedDate)칼럼으로 인식하도록할 것
@EntityListeners(AuditingEntityListener.class) // Auditing 기능을 포함
public abstract class BaseTimeEntity {

    @CreatedDate // Entity가 생성되어 저장될 때 자동저장
    private LocalDateTime createdDate;

    @LastModifiedDate // 변경될 때 자동저장
    private LocalDateTime modifiedDate;
}

위 코드에서 @MappedSuperclass 애노테이션을 사용하여 BaseTimeEntity 클래스를 상속하는 모든 엔티티 클래스가 createdDatemodifiedDate 필드를 상속받아 칼럼으로 인식하도록 설정하였습니다.

또한, @EntityListeners 애노테이션을 사용하여 AuditingEntityListener 클래스를 빈으로 등록하고, 엔티티 클래스에 생성일과 수정일을 저장할 필드를 추가하여, @CreatedDate@LastModifiedDate 애노테이션을 사용하여 자동으로 처리하도록 설정하였습니다.

아래에서 BaseTimeEntity를 상속 받는 User엔티티를 예시로 들어보겠습니다.

상속을 통한 Auditing 적용

@Entity
public class User extends BaseTimeEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, length = 100)
    private String name;

    @Column(nullable = false, length = 100)
    private String email;
}

위 예시에서 User 클래스는 BaseTimeEntity 클래스를 상속하였으므로, createdDate와 modifiedDate 필드를 자동으로 상속받아 칼럼으로 인식합니다.

이를 통해, User 엔티티를 저장, 수정할 때 자동으로 생성일과 수정일이 처리되며, BaseTimeEntity 클래스에 추가한 createdDate와 modifiedDate 필드를 사용하여 데이터를 저장할 수 있습니다.

예를 들어, User 객체를 저장할 때는 다음과 같이 코드를 작성할 수 있습니다.

user 인스턴스 생성 후 DB에 삽입

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public void saveUser(User user) {
        userRepository.save(user);
    }
}

위 코드에서 userRepository.save(user) 메소드를 호출하여 User 객체를 저장할 때, BaseTimeEntity 클래스에서 상속받은 createdDate와 modifiedDate 필드가 자동으로 처리됩니다. 이를 통해, User 엔티티를 저장, 수정할 때 생성일과 수정일을 간단하게 처리할 수 있습니다.

또한, JPA Auditing을 사용하려면 스프링 설정 파일이나 main에서 @EnableJpaAuditing 애노테이션을 추가하여 활성화해야 합니다.
이 애노테이션을 추가하면, JPA Auditing에 필요한 설정을 자동으로 처리해줍니다.

EnableJpaAuditing적용

@EnableJpaAuditing // JPA Auditing 활성화
@SpringBootApplication //스프링부트의 자동설정, 스프링 Bean읽기와 생성 모두 자동
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args); //내장 was 실행
    }
}
@Configuration
@EnableJpaAuditing
public class JpaConfig {
    //...
}

위 코드들에서 @EnableJpaAuditing 애노테이션을 사용하여 JPA Auditing을 활성화하였습니다.
이 애노테이션을 추가하면, Auditing 기능을 사용하기 위한 빈들을 자동으로 생성해줍니다.
또한, AuditorAware 인터페이스를 구현한 빈을 등록하면 자동으로 생성자와 수정자 정보를 설정할 수 있습니다.

profile
42seoul, blockchain, web 3.0

0개의 댓글