반응형

jpa 20

Spring JPA과 QueryDSL

Spring JPA스프링 데이터 JPA는 JPA를 사용할때 지루하게 반복하는 코드를 자동화 해준다. 이미 라이브러리는 포함되어있다. MemberRepository를 스프링 데이터 JPA로 변경해보자.public interface MemberRepository extends JpaRepository { //select m from Member m where m.name = ? List findByName(String name);}public class MemberService { private final MemberRepository memberRepository; //회원 가입 @Transactional public Long join(Member member) { ..

공부/Spring Boot 2025.02.20

API 개발 고급 - 실무 필수 최적화

OSIV와 성능 최적화Open Session In View : 하이버 네이트Open EntityManager In View : JPA(관례상 OSIV라고 한다.) spring.jpa.open-in-view : JPA 기본값 애플리케이션을 동작하면 시작지점 로그에 warn이 하나 뜨게 되는데, WARN 6920 --- [  restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. spring.jpa.open-in-view is enabled by default라는 warn 로그가 출력되는 것을 알 수 있다. OSIV 전략은 트랜잭션 시작(서비스계층의 @Transactional)..

공부/Spring Boot 2025.02.19

API 개발 고급 - 컬렉션 조회 최적화

https://surrealcode.tistory.com/121 API 개발 고급 - 지연 로딩과 조회 성능 최적화https://surrealcode.tistory.com/120 API 개발 고급 - 준비현업에서는 API 개발을 한 이후 성능이 나오지 않아 튜닝을 하기도 하는데 보통은 아래와 같은 문제를 지키지 않아 발생한다.- 지연로딩, 조회 성surrealcode.tistory.com앞서 본 API 개발은 xToOne 관계만 있는 개발이었다. 이번에는 컬렉션인 OneToMany 를 조회하고, 최적화를 진행해 볼 예정이다. 주문내역에서 추가로 주문한 상품 정보를 추가로 조회하자.Order 기준으로 컬렉션인 'OrderItem'과 'Item'이 필요하다. 컬렉션 조회 같은 경우에는 DB 입장에서 뻥튀기가..

공부/Spring Boot 2025.02.19

API 개발 고급 - 지연 로딩과 조회 성능 최적화

https://surrealcode.tistory.com/120 API 개발 고급 - 준비현업에서는 API 개발을 한 이후 성능이 나오지 않아 튜닝을 하기도 하는데 보통은 아래와 같은 문제를 지키지 않아 발생한다.- 지연로딩, 조회 성능 최적화- 컬렉션 조회 최적화- 페이징, 한계 돌surrealcode.tistory.com개발에 앞서, 이전 포스팅을 참고하여 조회용 데이터 샘플을 넣어주도록 하자.  지연 로딩과 조회 성능 최적화이전까지는 단일 엔티티만을 조회하는 API를 만들었다. 이번엔 주문 + 배송정보 + 회원을 조회하는 API를 만들어본다.여러 정보를 조회하는 API의 문제는 지연 로딩이다.지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해보자. **참고 : 지금부터 설명되는 내용은 정말 중..

공부/Spring Boot 2025.02.03

API 개발 기본

API(Application Programming Interface) : 클라이언트(웹 브라우저, 모바일 앱)와 서버 간의 데이터 교환을 위한 인터페이스이다. API의 역할1. 클라이언트 요청을 받아 서버에서 처리2. 데이터베이스에서 데이터를 가져와 JSON 형태로 응답3. CRUD(Create, Read, Update, Delete)의 기능 제공 스프링 부트에서는 API가 기본적으로 JSON 형식의 데이터를 주고 받는다.API가 정상적으로 동작하는지 알아보기 위해 우선 Postman을 설치한다.https://www.postman.com/ Postman: The World's Leading API Platform | Sign Up for FreeAccelerate API development with P..

공부/Spring Boot 2025.01.31

객체지향 쿼리 언어2 - 중급 문법

JPQL - 경로 표현식경로 표현식 : .(점)을 찍어 객체 그래프를 탐색하는 것을 경로 표현식이라고 한다.ex)select m.username -> 상태 필드(엔티티 안에서 값을 바로 찍음)  from Member m    join m.team t      -> 단일 값 연관 필드(엔티티에서 엔티티를 찍음)    join m.orders o   -> 컬렉션 값 연관 필드(엔티티에서 컬렉션을 찍음)where t.name = '팀A' 상태 필드(state field) : 단순히 값을 저장하기 위한 필드연관 필드(association field) : 연관관계를 위한 필드  - 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티  - 컬렉션 값 연관 필드 : @OneToMany, @..

공부/JPA 2025.01.03

객체지향 쿼리 언어1 - 기본 문법

JPA는 다양한 쿼리 방법을 지원한다.- JPQL- JPA Criteria- QueryDSL- 네이티브 SQL- JDBC API 직접 사용, MyBatis, SpringJdbcTemplate JPQL- 가장 단순한 조회 방법이다.  - EntityManager.find()  - 객체 그래프 탐색(a.getB().getC()) 만약 나이가 18살 이상인 회원을 모두 검색하고 싶다면 어떻게 해야 할까?JPA를 사용하면 엔티티 객체를 중심으로 개발하게 되는데 문제는 검색 쿼리이다.검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야 한다.모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 하다.애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다. JPQL..

공부/JPA 2024.12.30

값 타입

JPA는 데이터 타입을 최상위 레벨로 분류하면 2가지로 분류한다. 1. 엔티티 타입  - @Entity로 정의하는 객체  - 데이터가 변해도 식별자로 지속해서 추적 가능 ex) 회원의 키나 값을 변경해도 식별자로 인식 가능2. 값 타입  - int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체  - 식별자가 없고, 값만 있으므로 변경시 추적 불가  - 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체  값 타입은 또 세가지로 분류될 수 있다.1. 기본값 타입2. 임베디드 타입3. 컬렉션 값 타입 값 타입1. 기본값 타입  - 자바 기본 타입(int, double)  - 래퍼 클래스(Integer, Long)  - String 기본 값 타입은 String ..

공부/JPA 2024.12.23

프록시와 연관관계 정리

프록시프록시는 왜 사용할까? 아래의 그림을 보자.Member를 조회할때 Team도 함께 조회가 필수인가?아래의 코드를 보자.Member member = em.find(Member.class, 1L);printMemberAndTeam(member);private static void printMemberAndTeam(Member member) { String name = member.getName(); System.out.println("name = " + name); Team team = member.getTeam(); System.out.println("team = " + team);} em.find하여 쿼리가 나갈때 team과 member 쿼리가 두 방이 나가서 한번에 찾을 수 ..

공부/JPA 2024.12.21

JPA 고급 매핑

상속 관계 매핑- 관계형 데이터베이스는 상속관계가 없다.- 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다.- 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑한다슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법은 다음과 같다.(DB의 전략)     1. 조인 전략- 장점  - 테이블 정규화  - 외래 키 참조 무결성 제약조건 활용가능  - 저장공간 효율과- 단점  - 조회시 조인을 많이 사용, 성능 저하  - 조회 쿼리가 복잡함  - 데이터 저장시 INSERT SQL 2번 호출package hellojpa.prac1;import jakarta.persistence.*;@Entity@Inheritance(strategy = InheritanceType..

공부/JPA 2024.12.08
반응형