본문 바로가기
728x90
반응형

분류 전체보기170

[Spring Data JPA] 예제 도메인 모델 도메인 모델 도메인 모델 구현 및 동작확인 Member 엔티티 package study.datajpa.entity; @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; pub.. 2021. 11. 29.
[Spring Data JPA] 프로젝트 환경설정 프로젝트 생성 Spring Initializr에서 프로젝트 생성 프로젝트 구성 - Gradle Project, Java Language - Spring 2.5.X version, Java 11 version - Group Id : study, Artifact Id : data-jpa 프로젝트 의존성 - Spring Web - Spring Data JPA - H2 Database - Lombok 라이브러리 살펴보기 Gradle 의존관계 보기 ./gradlew dependencies --configuration compileClasspath 스프링 부트 라이브러리 spring-boot-starter-web ㄴ spring-boot-starter-tomcat : 톰캣(웹서버) ㄴ spring-webmvc : .. 2021. 10. 22.
[Spring Data JPA] 강좌 소개 강좌명 실전! 스프링 데이터 JPA 강의목표 스프링프레임워크와 JPA라는 기반 위에 JPA를 더욱 편리하게 사용하기 위한 도구 학습 커리큘럼 프로젝트 환경설정 예제 도메인 모델과 동작확인 공통 인터페이스 쿼리 메소드 확장 스프링 데이터 JPA 분석 프로젝트 환경 스프링 부트 JPA Spring Data JPA Gradle Hibernate H2 Database 참고 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84# 실전! 스프링 데이터 JPA - 인프런 | 강의 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼, 리포지토리에 구현 클래스 없이 인터페.. 2021. 10. 22.
[JPA] JPA 활용 II - API 개발 고급 (실무 필수 최적화) OSIV (Open Session In View) 영속성 컨텍스트를 View까지 열어두는 전략이다. 영속성 컨텍스트가 유지되면 엔티티도 영속 상태로 유지되기 때문에 View에서도 지연로딩을 사용할 수 있다. ※ 하이버네이트에선 Open Session In View라고 부르며 JPA에선 Open EntityManager In View라고 부른다. OSIV 설정 // application.yml spring: jpa: open-in-view: false // ON : true(default), OFF : false OSIV ON OSIV 전략을 사용할 경우 트랜잭션 시작부터 고객의 요청에 따른 처리결과가 반환될 때 까지 DB 커넥션을 유지하고 있는 것이다. DB 커넥션을 계속 유지함으로써 View Templ.. 2021. 10. 20.
[JPA] JPA 활용 II - API 개발 고급 (컬렉션 조회 최적화) 목표 이전 포스팅에서 조회한 주문내역에서 추가로 주문한 상품 정보인 OrderItem과 Item을 조회하고, 일대다 관계 조회 시 최적화하는 방법을 알아보자. V1. 엔티티 직접 노출 기본 조회 package jpabook.jpashop.api; @RestController @RequiredArgsConstructor public class OrderApiController { private final OrderRepository orderRepository; /** * V1. 엔티티 직접 노출 * - Hibernate5Module 모듈 등록, LAZY=null 처리 * - 양방향 관계 문제 발생 -> @JsonIgnore */ @GetMapping(value = "/api/v1/orders") publ.. 2021. 10. 20.