Reference. 자바 ORM 표준 JPA 프로그래밍
책 목차 및 이전 글
더보기
들어가기 전 JPA 특징, Q&A
1. JPA 소개
3. 영속성 관리
4. 엔티티 매핑
4.1 - 4.3 @Entity, @Table, 다양한 매핑
4.4 - 4.5 데이터베이스 스키마 자동 생성, DDL 생성 기능
5. 연관관계 매핑 기초
6. 다양한 연관관계 매핑
7. 고급매핑
8. 프록시와 연관관계 관리
9. 값 타입
9.3~5 값 타입과 불변 객체, 값 비교, 값 타입 컬렉션
10. 객체지향 쿼리 언어
11. 웹 애플리케이션 제작
11.1 프로젝트 환경설정
11.2 도메인 모델과 테이블 설계
11.3 애플리케이션 구현
12. 스프링 데이터 JPA
12.1~3 스프링 데이터 JPA 소개, 공통 인터페이스 기능
12.5~10 명세, 사용자 정의 리포지토리, Web 확장...
13. 웹 애플리케이션과 영속성 관리
13.4 너무 엄격한 계층
- 컨트롤러에서 레포지토리 직접 접근하는 경우
class OrderController { @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; public String orderRequest(Order order, Model model) { long Id = orderService.order(order); //상품 구매 //레포지토리 직접 접근 Order orderRequest = orderRepository.findOne(id); model.addAttribute("order", orderResult); } } @Transactional class OrderService { @Autowired OrderRepository orderRepository; public Long order(Order order) { //... 비즈니스 로직 return orderRepository.save(order); } } class OrderRepository { @PersistenceContext EntityManager em; public Order findOne(Long id) { return em.find(Order.class, id); } }
- OSIV를 사용하면 영속성 컨텍스트가 프리젠테이션 계층까지 살아있으므로 미리 초기화할 필요가 없음, 단순한 엔티티 조회는 컨트롤러에서 레포지토리를 직접 호출해도 문제 발생 X
- 과거 EJB에는 프리젠테이션 계층에서 엔티티를 직접 반환하면 여러 문제가 발생
대부분 DTO를 만들어서 반환했고 엔티티가 계층을 뛰어 넘는것은 어려운 일
→ OSIV를 사용하면 유연하고 실용적 관점으로 접근하는 좋은 방법
'개발서적 > 자바 ORM 표준 JPA' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 14.2 @Converter (0) | 2021.10.25 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 14.1 컬렉션 (0) | 2021.10.25 |
[자바 ORM 표준 JPA 프로그래밍] 13.3 OSIV (0) | 2021.09.21 |
[자바 ORM 표준 JPA 프로그래밍] 13.2 준영속 상태와 지연 로딩 (0) | 2021.09.21 |
[자바 ORM 표준 JPA 프로그래밍] 13.1 트랜잭션 범위의 영속성 컨텍스트 (0) | 2021.09.21 |