프로그래밍/JPA 9

JPQL

JPQL Type Expression 문자 'Hello' 숫자 10L(Long) 10D(Double) 10F(Float) Boolean ENUM package path 포함 Entity TYPE(m) = 상속관계 select i from Item i where type(i) = Book 조건식 - CASE 식 기본 CASE 식 select case when m.age = 60 then '경로요금' else '일반요금' end from Member m 단순 CASE 식 select case t.name when '팀A' then '인센티브 110%' when '팀B' then '인센티브 120%' else ..

프로그래밍/JPA 2024.01.10

값 타입

기본값 타입 JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의 하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 값 타입 int, Integer, String처럼 단순한 값으로 사용하는 기본 타입이나 객체 식별자가 없고 값만 있어서 변경시 추적 불가 값 타입 분류 기본값 타입 primitive type wrapper class type String embedded type (복합 값타입) collection value type 기본 값 타입 생명주기를 엔티티의 의존 값 타입은 공유하면 안됨 임베디드 타입 새로운 값 타입을 직접 정의할 수 있음 JPA는 임베디드 타입이라고 함 주로 기본 값 타입을 모아서 만들어서 복합 값타입이라고 함 int, String과 같은 값 타입 @Embeddabl..

프로그래밍/JPA 2024.01.10

프록시와 연관관계

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard Proxy Proxy 기초 em.find() vs em.getReference() em.find(): 데이터베이스를 통해서 실제 엔티티 객제 조회 em.getReference(): 데이터베이스 조회를 미루는 가짜 엔티티 객체 조회 조회 시점에는 DB로 쿼리가 전송이 안되지만, 실제 사용하는 곳에서 쿼리가 전송 됨. 특징 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉모양이 같다. 사용하는 입장에서는 진짜 객체인지? 프록시 객체인지 구분하지 않고 사용하면 된다. (이론상) 프록시 객체는 실제 객체의 참조를 보관 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 프록시 객체는 처음 사용할때,..

프로그래밍/JPA 2022.10.23

고급 매핑 전략

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 상속 관계 매핑 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속 관계 매핑 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브 타입 테이블로 변환 -> 구현 클래스마다 테이블 전략주요 어노테이션 @Inheritance(strategy = InheritanceType.XXX) JOINED SINGLE_TABLE TABLE_PER_CLASS @DiscriminatorColumn(name = "DTYPE") 운영상 DTYPE은 있는게 좋다. @DiscriminatorValue("XXX") 조인 전략 장점..

프로그래밍/JPA 2022.10.23

다양한 연관관계 매핑

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 연관관계 매핑시 고려사항 3가지 다중성 @ManyToOne @OneToMany @OneToOne @ManyToMany N:M의 경우 실무에서 쓰지 않는게 좋다. 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 방향이라는 개념이 없다. 객체 참조용 필드가 있는 곳으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양뱡하야 관계는, A -> B, B -> A처럼 참조가 2개 둘중 테이블의 외래 키를 관리할 곳을 지정해야 함 연관관계의 주인: 외래 키를 관리하는 참조 주인의 반대편: 외래 키에 영향을 주지 않음,..

프로그래밍/JPA 2022.10.23

연관관계 매핑

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향: 단방향, 양방향 다중성: 다대일, 일대다, 일대일, 다대다 연관관계의 주인: 객체 양방향 연관관계는 관리 주체 필요 객체를 테이블에 맞추어 데이터 중심으로 모델링 하면, 협력 관계를 만들 수 없다. sample) @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME", nullable = false) private String name; @Column(name = "TEAM_ID") priv..

프로그래밍/JPA 2022.10.23

엔티티 맵핑

Entity Mapping 객체와 테이블: @Entity, @Table 필드와 컬럼: @Column 기본키: @Id 연관관계: @ManyToOne, @JoinColumn @Entity 해당 어노테이션이 붙으면 JPA가 관리 기본 생성자 필수 final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X @Table name: 매핑할 테이블 이름 catalog: 데이터베이스 catalog 매핑 schema: 데이터베이스 schema 매핑 DDL 유니크 제약 조건 데이터베이스 스키마 자동생성 DDL을 어플리케이션 실행 시점에 자동 생성 테이블 중심 -> 객체 중심 이런 DDL은 개발장비에서만 사용 hibernate.hbm2ddl.auto 운영장비에는 절대로 c..

프로그래밍/JPA 2022.10.23

영속성 관리

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard JPA의 구동 방식 Persistence 클래스에서 설정 정보를 조회 한다. META-INF/persistence.xml Persistence는 EntityManagerFactory를 생성한다. EntityManagerFactory는 EntityManager를 생성한다. EntityManage는 쓰레드간 공유가 안됨 (쓰고 버려야 함.) JPA의 모든 데이터 변경은 transaction 안에서 이루어져야 한다.JPQL 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리 SQL을 추상화해서 특정 데이터베이스 SQL에 의존 X JPQL을 한마디로 정의하면 객체 지향 SQL 영속성 컨텍스트 논리적인 개념 E..

프로그래밍/JPA 2022.10.23

JPA 입문

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard ORM Object-Relational Mapping 객체는 객체대로 설계 관형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 JPA 동작 - 저장 Entity 분석 INSERT QUERY생성 JDBC API사용 패러다임 불일치 해결 JPA 동작 - 조회 SELECT SQL생성 JDBC API 사용 ResultSet 매핑 패러다임 불일치 해결 JPA 소개 EJB(과거 자바 표준)는 사용하기에 너무 복잡하고, 불편한 구조로 되어 있었고, 성능상 약점이 많았다. 그렇게 Hibernate가 나오게 되는 계기가 되었다. 그리고, Hibernate 기반으로 JPA가 표준이 만들어졌다...

프로그래밍/JPA 2022.10.23
반응형