[QueryDsl+DataJpa] QueryDslRepositorySupport 사용!
Uploaded by N2T
- 자바/QueryDsl
- · 2023. 11. 17.
스프링 데이터 JPA 의 페이징 과 정렬에 대해Sort 와 Pageable 2 가지의 특별한 파라미터 제공주요 기능Sort정렬 기능을 제공Pageable페이징 기능을 제공하고 내부적으로 Sort 를 포함함사용Pageable 의 사용Page findByPriceGreaterThan(float price, Pageable pageable);예제에서는PageRequest pageRequest = new PageRequest(0, 10, new Sort(Sort.Direction.DESC, "name")); Page result = memberRepository.findByNameStartingWith("김", pageRequest);이런식으로 요구하는데data jpa 3 에서는PageRequest pageRe..
Uploaded by N2T
JPA 사용 환경의 비교J2SE 환경개발자가 엔티티 매니저 생성 및 트랜잭션 관리가 필요하다스프링/J2EE 컨테이너컨테이너가 제공하는 전략을 따라야 한다.스프링 컨테이너의 기본 전략트랜잭션 범위의 영속성 컨텍스트트랜잭션을 시작하는 경우영속성 컨텍스트를 생성종료시영속성 제거구현@Transactional 어노테이션스프링의 트랜잭션의 관리트랜잭션 AOP메서드 호출 전트랜잭션 시작메서드 정상 종료트랜잭션 커밋 및 종료영속성 플러시변경내용을 DB에 반영예외가 발생하는 경우트랜잭션을 롤백하고 , 플러시를 호출하지 않는다.코드예제@Controller class HelloController { @Autowired HelloService helloService; public void hello() { // 반환된 mem..
준영속 상태와 지연 로딩엔티티의 생명주기데이터 접근 전략 등을 설명준영속 + 트랜잭션범위의 영속성스프링이나 J2EE 컨테이너는 트랜잭션 범위 영속성 컨텍스트를 기본 전략으로 사용서비스 계층에서 시작된 트랜잭션 종료시영속성도 종료엔티티가 서비스와 레포 계층에서 영속 상태를 유지하지만,프레젠테이션 (컨트롤러 뷰 등) 에서는 준영속 상태가 됨지연로딩과 준영속 상태준영속 상태에서는엔티티 변경감지지연 로딩이 동작하지 않음코드@Entity public class Order { @Id @GeneratedValue private Long id; @ManyToOne(fetch = FetchType.LAZY) // 지연 로딩 전략 private Member member; // 주문 회원 }class OrderControl..
준영속 상태와 지연 로딩엔티티의 생명주기데이터 접근 전략 등을 설명준영속 + 트랜잭션범위의 영속성스프링이나 J2EE 컨테이너는 트랜잭션 범위 영속성 컨텍스트를 기본 전략으로 사용서비스 계층에서 시작된 트랜잭션 종료시영속성도 종료엔티티가 서비스와 레포 계층에서 영속 상태를 유지하지만,프레젠테이션 (컨트롤러 뷰 등) 에서는 준영속 상태가 됨지연로딩과 준영속 상태준영속 상태에서는엔티티 변경감지지연 로딩이 동작하지 않음코드@Entity public class Order { @Id @GeneratedValue private Long id; @ManyToOne(fetch = FetchType.LAZY) // 지연 로딩 전략 private Member member; // 주문 회원 }class OrderControl..
파사드 계층의 역할과 특징논리적 의존성의 분리프레젠테이션 계층과 서비스 계층간의 논리적 의존성 분리프록시 객체 초기화프레젠테이션 계층에서 필요한 프록시 객체를 초기화비즈니스 로직 수행엔티티 조회레포를 직접 호출해 뷰가 요구하는 엔티티를 찾는다.트랜잭션의 관리프록시를 초기화하기 위해 파사드 계층에서 트랜잭션을 시작해야class OrderFacade { @Autowired OrderService orderService; public Order findOrder(id) { Order order = orderService.findOrder(id); // 프리젠테이션 계층이 필요한 프록시 객체를 강제로 초기화한다. order.getMember().getName(); return order; } } class Or..