728x90
반응형
@Service
- 해당 클래스가 Spring의 서비스 컴포넌트임을 나타낸다.
- 비지니스 로직을 처리하는 역할
- @Component의 확장 개념으로, 자동으로 Spring Bean으로 등록된다.
@RequiredArgsConstructor
- Lombok 제공 어노테이션
- final or @NonNull 이 붙은 필드를 자동으로 생성자 주입
- 즉, @Autowired 없이 생성자 주입 방식으로 의존성 주입을 처리할 수 있다.
@Slf4j
- Lombok에서 제공하는 로깅 어노테이션
- log.info(), log.debug(), log.error() 등을 사용 할 수 있음
- 로그 출력을 위해 LoggerFactory.getLogger(ClassName.class)를 직접 선언할 필요가 없다.
@Transactional
- Spring의 트랜잭션 관리 어노테이션
- 해당 클래스 또는 메서드의 데이터 변경 작업을 하나의 트랜잭션으로 묶어 처리
- 예외 발생 시 자동으로 롤백
Lazy Loading을 사용하면 트랜잭션이 유지되는 범위 안에서만 연관된 엔티티를 조회할 수 있다.
- 즉, Lazy Loading이 발생하는 시점에 트랜잭션이 활성화되어 있어야 Hibernate가 account 엔티티를 가져올 수 있다.
- @Transactional이 없다면 Lazy Loading을 통해 조회할 때 프록시 객체만 남고, 실제 데이터를 가져오려는 순간 예외가 발생할 수 있다.
728x90
반응형
'Spring' 카테고리의 다른 글
Spring, DTO, DAO, BO, VO 차이점 (1) | 2025.04.01 |
---|---|
Spring, Pageable/List 기본 정렬 기준 (0) | 2025.03.18 |
Spring, Lazy Loading 사용하는 방법 / 외래키로 연결된 테이블의 데이터 같이 가져오는 방법(JPA) (0) | 2025.03.18 |
Spring, Controller 어노테이션 정리 (0) | 2025.03.17 |
Spring, Entity 구조 정리 / JPA에서 자주 사용되는 어노테이션 (0) | 2025.03.17 |