[ @EnableJpaAuditing을 Application 클래스 vs PersistenceConfig 클래스에 적용하는 차이 ]
1. @EnableJpaAuditing이 하는 역할
@EnableJpaAuditing은 JPA Auditing 기능을 활성화하는 어노테이션으로,
@CreatedDate, @LastModifiedDate 같은 자동 날짜 관리 기능을 사용할 수 있도록 해줍니다.
이 어노테이션을 어디에 선언하느냐에 따라 Spring의 실행 방식에 차이가 생길 수 있습니다.
2. @EnableJpaAuditing을 Application 클래스에 선언할 때
✔ 특징
- Spring Boot 애플리케이션이 실행될 때 JPA Auditing이 함께 활성화됨
- @SpringBootApplication이 위치한 곳에서 모든 설정을 관리할 수 있음
- 단점:
- 테스트 코드에서 별도의 설정 없이 바로 Auditing이 적용될 수도 있음(원치 않는 영향)
- Config 클래스로 분리되지 않아 확장성이 떨어질 수 있음
- Application 클래스의 역할이 많아져서 책임 분리가 부족해질 수 있음
➡ 단순한 프로젝트에서는 이렇게 사용해도 문제없지만, 규모가 커질수록 유지보수성이 떨어질 수 있음
3. @EnableJpaAuditing을 PersistenceConfig 클래스에 선언할 때
✔ 특징
- Persistence(데이터 저장 관련) 설정을 별도의 클래스로 분리하여 관리 가능
- @EnableJpaAuditing이 명확히 PersistenceConfig 내에서만 작동
- 테스트 코드에서 Auditing 기능을 끄거나 조정하기 쉬움
- Application 클래스가 가벼워지고, 역할 분리가 명확해짐
➡ 대규모 프로젝트에서는 Persistence 관련 설정을 별도로 관리하는 것이 더 유지보수에 유리!
4. 두 방식의 비교 (어느 방법이 더 좋을까?)
적용 위치 | 장점 | 단점 | 추천 상황 |
Application 클래스 (@SpringBootApplication) |
- 설정을 한곳에서 관리할 수 있음 - 작은 프로젝트에서는 간단하게 설정 가능 |
- 역할이 많아져 가독성이 떨어질 수 있음 - 테스트에서 의도치 않게 활성화될 가능성 있음 |
작은 프로젝트 또는 빠른 개발이 필요할 때 |
PersistenceConfig 클래스 (@Configuration) |
- Persistence 관련 설정을 분리하여 관리 가능 - 테스트에서 쉽게 ON/OFF 가능 - 유지보수성이 뛰어남 |
- 별도의 설정 클래스를 만들어야 함 | 대규모 프로젝트 또는 유지보수가 중요한 경우 |
*결론
작은 프로젝트 → @EnableJpaAuditing을 Application 클래스에 선언해도 OK
대규모 프로젝트 → PersistenceConfig 클래스로 분리하는 것이 더 좋음
➡ 프로젝트가 커질수록 PersistenceConfig 클래스로 관리하는 것이 유지보수성과 확장성 측면에서 더 유리합니다!
'개발 > 부트캠프' 카테고리의 다른 글
본캠프 : Redis 기초 (0) | 2025.04.02 |
---|---|
본캠프 : 어노테이션 정리_freship project (0) | 2025.03.28 |
본캠프 : methodargumentnotvalidexception (0) | 2025.03.27 |
본캠프 : 개인 과제(플러스 심화) 트러블 슈팅 (0) | 2025.03.20 |
본캠프 : JWT Stateless Spring Security (0) | 2025.03.17 |