반응형

전체 글 105

객체지향 쿼리 언어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

다양한 연관관계 매핑

연관관계 매핑시 고려사항 3가지- 다중성    - 다대일 : @ManyToOne    - 일대다 : @OneToMany    - 일대일 : @OneToOne    - 다대다 : @ManyToMany- 단방향, 양방향    - 테이블(단방향) : 외래 키 하나로 양쪽 조인이 가능하다 즉 방향이라는 개념 자체가 없다.    - 객체(양방향) : 객체는 참조용 필드가 있는 쪽으로만 참조가 가능하다. 한쪽만 참조하면 단방향이고, 양쪽이 참조하면                                 양방향이다.- 연관관계의 주인    - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다.    - 객체 양방향 관계는 A->B, B->A처럼 참조가 2군데이다.    - 객체 양방향 관계는 참조가 2군데 있..

공부/JPA 2024.12.03

연관관계 매핑 기초

https://surrealcode.tistory.com/103 엔티티 매핑엔티티 매핑엔 다음과 같은 어노테이션이 사용된다.객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn  객체와 테이블 매핑@Entity- @Ensurrealcode.tistory.com앞서서 왜 테이블 설계와 개발 후 왜 연관관계가 필요한지에 알아봤다.참고하도록 하자. 목표- 객체와 테이블 연관관계의 차이를 이해- 객체의 참조와 테이블의 외래 키를 매핑- 용어 이해  - 방향(Direction) : 단방향, 양방향  - 다중성(Multiplicity) : 다대일, 일대다, 일대일, 다대다 이해  - 연관관계 주인(Ow..

공부/JPA 2024.12.02

엔티티 매핑

엔티티 매핑엔 다음과 같은 어노테이션이 사용된다.객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn  객체와 테이블 매핑@Entity- @Entity가 붙은 클래스는 JPA가 관리하고, 엔티티라 한다.- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다.- 주의  - 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)  - final 클래스, enum, interface, inner 클래스는 사용할 수 없다.  - 저장할 필드에 final은 사용할 수 없다.속성 : name  - JPA에서 사용할 엔티티 이름을 지정한다.  - 기본값 : 클래스 ..

공부/JPA 2024.11.30

JPA 영속성 관리

JPA에서 가장 중요한 2가지1. 객체와 관계형 데이터베이스 매핑하기(ORM : Object Relational Mapping)2. 영속성 컨텍스트 JPA 내부 구조JPA의 내부 구조를 이해하기 위해서는 영속성 컨텍스트에 대해 이해해야 한다.https://surrealcode.tistory.com/101 JPA 설정하기기본 세팅은 아래 블로거가 정말 잘 요약해놓은 것이 있다. 이걸 참고하자https://velog.io/@chosj1526/JPA-Hello-JPA-프로젝트-생성 [JPA] Hello JPA 프로젝트 생성이 강의는 인프런 김영한님의'자바 ORM 표준 JPsurrealcode.tistory.com이전에 확인하였듯이 웹 어플리케이션은 persistence를 통해 emf를 한개 생성후 요청이 올때..

공부/JPA 2024.11.28

JPA 설정하기

기본 세팅은 아래 블로거가 정말 잘 요약해놓은 것이 있다. 이걸 참고하자https://velog.io/@chosj1526/JPA-Hello-JPA-프로젝트-생성 [JPA] Hello JPA 프로젝트 생성이 강의는 인프런 김영한님의'자바 ORM 표준 JPA 프로그래밍 - 기본편'을 보며 공부하고 작성한 게시글임을 밝힙니다. 강의 내용 외에도 공부한 내용과 본인생각이 함께 있습니다 💻 하이버네이velog.io   JPA 구동 방식JPA는 Persistence라는 클래스가 있다. 이 Persistence가 resources/META-INF/persistence.xml 설정 정보를 읽어서 EntityManagerFactory를 만들고 EntityManger를 찍어내서 돌린다. Member를 만든다고 가정하자...

공부/JPA 2024.11.26
반응형