인증, 인가, 로깅, 트랜잭션, 예외 처리 등 여러 레이어에 반복적으로 등작하는 처리
| 항목 | Filter | Interceptor | AOP |
|---|---|---|---|
| 처리위치 | DispatcherServlet 이전 | 컨트롤러 실행 전후 | Spring Bean 메서드 전후 |
| 대상 | 서블릿 요청 | 핸들러 | 모든 Bean 메서드 |
| 사용 목적 | 인증, 로깅, CORS 등 | 세션 체크, 권한 검사 | 로깅, 트랜잭션, 예외 처리 등 |
| 선언 방법 | Filter 구현체 | 1HadlerInterceptor 구현체 | @Asperct 클래스 |
Entity 객체를 대상으로 쿼리를 작성하는 객체 지향 SQL입니다
객체 중심 개발에 자연스럽게 사용 가능
데이터베이스 독립성 확보
정적 타입 지원 + 자동 바인딩
복잡한 쿼리도 객체 기준으로 구성 가능
| 로딩 방식 | EAGER | LAZY |
|---|---|---|
| 설명 | 연관된 엔티티를 즉시 로딩 | 실제 사용하는 시점에 로딩 |
| SQL 실행 시점 | 해당 엔티티 조회 시 바로 함께 조회(즉시 Join) | getter 등으로 접근할 때 쿼리 실행 |
| 실무 기본 전략 | 잘 안씀(비효율적) | 실무 기본값 |
| 방식 | 특징 | 페이징 가능 | JPQL 필요 | 실무 활용 |
|---|---|---|---|---|
| Fetch Join | 빠르고 직관적 | X | O | O |
| BatchSize | Lazy 유지 + IN 조건으로 개선 | O | X | O |
| EntityGraph | 선언적 설정 | X | X | △ |