본문 바로가기
반응형

JPA21

JPA 쿼리 JPQL 벌크 연산 - -안녕하세요? 오늘은 JPA의 JPQL 중 벌크 연산에 대해 알아보도록 하겠습니다.-벌크 연산: 쿼리 한번으로, 여러 테이블 로우 변경: executeUpdate의 결과는 영향받은 엔티티 수를 반환: Update / Delete 지원: 하이버네이트는 Insert ( insert into .. select ) 지원샘플 쿼리)EntityManagerFactory emf = Persistence.createEntityManagerFactory("유닛명");EntityManager em = emf.createEntityManager();EntityTransaction tx = em.getTransaction();tx.begin();// Flush 자동 호출 : commit / [쿼리날라갈때] / 강제호출St.. 2024. 10. 24.
JPA 쿼리 패치 조인 JPQL FETCH JOIN - -안녕하세요? 오늘은 JPA에서 JPQL 패치(FETCH) 조인 에 대해 알아보도록 하겠습니다. -페치 조인 ★★★(FETCH JOIN): SQL 조인 종류가 아니라, JPQL에서 성능최적화를 위해 제공: 연관된 엔티티나 컬렉션을 SQL 한번에 함께 조회JPQLSELECT e FROM 엔티티 e JOIN FETCH e.연관관계객체 sSQLSELECT t1.*, t2.* FROM 테이블1 as t1INNER JOIN 테이블2 as t2ON t1.key = t2.key+예로 들어서, Member 엔티티와, Team 엔티티가 존재하고, Member는 Team과 다대일 [N:1] 연관관계라고 가정했을 때멤버 엔티티 생성)@Entitypublic class Member {    @Id @GeneratedVal.. 2024. 10. 24.
JPA JPQL 경로 표현식 - -안녕하세요? 오늘은 JPA에서 JPQL의 경로 표현식 에 대해 알아보도록 하겠습니다. -경로 표현식: 점(.)을 찍어 객체 그래프를 탐색하는 것: 상태필드 / 연관필드로 나눠진다.상태필드(state field)경로 탐색의 끝, 더이상 탐색 불가연관필드(accociation field)단일 값 연관필드@ManyToOne, @OneToOne, 대상이 엔티티컬렉션 값 연관필드@OneToMany, @ManyToMany, 대상이 컬렉션+상태필드: SELECT e.컬럼 FROM 엔티티 e> 경로 탐색의 끝>> 추가 탐색 불가+단일값 연관필드(@ManyToOne, @OneToOne): SELECT e.단일연관관계객체 FROM 엔티티 e> 묵시적 내부 JOIN 발생> 추가 탐색 가능+컬렉션값 연관필드(@OneTo.. 2024. 10. 23.
JPA JPQL 타입 표현식과 기타식 그리고 조건식과 기본 함수 - -안녕하세요? 오늘은 JPA의 JPQL 타입 표현식과 기타식 그리고 조건식과 기본 함수 에 대해서 알아보도록 하겠습니다. JPQL 타입 표현: 문자는 싱글쿼테이션 사용: 숫자/불리언 타입은 자바와 동일: enum은 패키지명을 포함해야한다.> 파라메터에 셋팅해서 사용 가능: 엔티티 타입은, 상속관계에서 사용한다.타입 표현예제문자'HELLO', 'She''s'숫자10L(Long), 10D(Double), 10F(Float)BooleanTRUE, FALSEENUMjpabook.MemberType.Admin (패키지명 포함)엔티티타입TYPE(m) = Member (상속 관계에서 사용)샘플코드)String jpql = "SELECT e.컬럼, 'TEST', true FROM 엔티티 e"            +.. 2024. 10. 18.
JPA 쿼리 JPQL 페이징 조인 서브쿼리 - -안녕하세요? 오늘은, JPA의 쿼리 방법 중 하나인, JQPL에 대해 알아보도록 하겠습니다.  JPQL(Java Persistence Query Language) : 객체지향 쿼리 언어: 테이블 대상이 아닌,엔티티를 대상으로 쿼리: SQL을 추상화 > 특정 DB에 의존하지 않음: JPQL은 결국 SQL로 변환샘플 예시)select 문 :: =select_절from_절[where_절][groupby_절][having_절][orderby_절]update_문 :: = update_절 [where_절]delete_문 :: = delete_절 [where_절] 사용법 : 엔티티와 속성은 대소문자 구분이 필수: JPQL 키워드는 대소문자 구분 불필요: 엔티티 이름 사용> 테이블 이름 X: 별칭(Alias)은 .. 2024. 10. 18.
JPA QueryDSL 네이티브SQL JDBC MyBatis - -안녕하세요? 오늘은 JPA의 다양한 쿼리 방법에 대해서 알아보도록 하겠습니다. JPA에서는,JPQL ★★★JPQ CriteriaQueryDSL ★★★네이티브 SQLJDBC 직접 사용(MyBatis, SpringJdbcTemplate ...)등등 다양한 쿼리 방법을 지원합니다.그 중에서, JPQL에 대해서, 다뤄보도록 하겠습니다.JQPL ★★★: JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공: SQL과 문법이 유사 (SELECT / FROM / WHERE / GROUP BY / HAVING / JOIN): JPQL은 엔티티 객체  대상으로 쿼리 (SQL은 데이터 베이스 테이블을 대상으로 쿼리): 가장 단순한 조회 방법: 특정 DB SQL에 의존하지 않음: JPA를 사용하면, 엔티.. 2024. 10. 18.
JPA 지연로딩 즉시로딩 - -안녕하세요? 오늘은 JPA에서 중요한 핵심 기능인 즉시로딩과 지연로딩에 대해서 알아보도록 하겠습니다.※ 지난 시간에서 다뤘던 프록시의 개념을 참고해주세요.https://logger-debug.tistory.com/entry/JPA-%EC%A7%80%EC%97%B0%EB%A1%9C%EB%94%A9-%EC%A6%89%EC%8B%9C%EB%A1%9C%EB%94%A9-%ED%94%84%EB%A1%9D%EC%8B%9C-proxy JPA 지연로딩 즉시로딩 프록시 proxy- -안녕하세요? 오늘은, JPA의 연관관계 관리 중, 프록시( proxy )에 대해서 알아보도록 하겠습니다.  프록시란?: JPA에서는 불필요한 쿼리를 최적화하기 위해서는, 지연로딩과 프록시라는 개념으logger-debug.tistory.c.. 2024. 10. 17.
JPA 지연로딩 즉시로딩 프록시 proxy - -안녕하세요? 오늘은, JPA의 연관관계 관리 중, 프록시( proxy )에 대해서 알아보도록 하겠습니다.  프록시란?: JPA에서는 불필요한 쿼리를 최적화하기 위해서는, 지연로딩과 프록시라는 개념으로 해결※ 지연로딩은, 다음 포스팅에 다뤄보도록 하겠습니다.※ 해당 포스팅은, 즉시로딩과 지연로딩의 매커니즘의 이해를 돕기위한, 개념 지원 포스팅 입니다.* find(): DB를 통해서 실제 엔티티를 바로 조회* getReference(): DB 조회를 미루는 가짜(프록시) 엔티티 객체 조회+getReference() 가 실행 되었을 때, 프록시 객체는 실제 객체의 참조(target)을 보관한다.프록시 객체를 호출 시, 프록시 객체는 실제 객체의 메소드를 호출하게 된다.샘플소스)EntityManagerFa.. 2024. 10. 17.
JPA 영속성 전이 CASCADE 고아 객체 - -안녕하세요? 오늘은 JPA CASCADE 영속성 전이와 고아 객체 에 대해서 알아보도록 하겠습니다. -영속성 전이(CASCADE): 연관관계랑은 전혀 상관이 없다.: 단일 소유자로써 ★★★부모 엔티티의 데이터를 등록할 때,연관관계가 설정된 자식 엔티티의 정보를일괄 등록하는 기능> 부모가 하나일 때에만 사용 가능>> 단일 엔테티에 종속적일때 사용 ★★★>>> 타 엔티티와의 영향도 고려 필수 ★★★부모 엔티티 생성)@Entitypublic class Parent {    @Id @GeneratedValue  @Column(name = "PARENT_ID")  private Long id;    @Column(name = "PARENT_NAME")  private String name;    @OneTo.. 2024. 10. 15.
JPA 영속성 영속상태와 준영속상태 - -안녕하세요? 오늘은, JPA의 특성 중 하나인, 영속 상태와 준영속 상태에 대해서 알아보도록 하겠습니다.※ JPA의 영속성과 영속성 컨텍스트/이점과 flush 등의 관련된 내용은, 아래 포스팅을 참조하시길 바라겠습니다.https://logger-debug.tistory.com/entry/JPA-%EC%98%81%EC%86%8D%EC%84%B1%EA%B3%BC-%EC%98%81%EC%86%8D%EC%84%B1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC JPA 영속성과 영속성 컨텍스트에 대하여!- -안녕하세요? 오늘은 JPA에서 가장 중요한 개념인, 영속성에 관련해서 알아보도록 하겠습니다.JPA를 공부할 때 가장 .. 2024. 10. 15.
JPA 영속성 Flush - -안녕하세요? 오늘은, 이전 포스팅에서 다뤘던, 영속성 컨텍스트의 이점 중에서, 1차캐시 중, 트랜잭션의 commit 시점에서, 내부적으로 이루어지는 flush에 대해서 알아보도록 하겠습니다.※ JPA의 영속성과 영속성 컨텍스트/이점 등의 관련된 내용은, 아래 포스팅을 참조하시길 바라겠습니다.https://logger-debug.tistory.com/entry/JPA-%EC%98%81%EC%86%8D%EC%84%B1%EA%B3%BC-%EC%98%81%EC%86%8D%EC%84%B1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC JPA 영속성과 영속성 컨텍스트에 대하여!- -안녕하세요? 오늘은 JPA에서 가장 중요한 .. 2024. 10. 15.
JPA 영속성 컨텍스트의 장점에 대하여! - -안녕하세요? 오늘은, JPA에서 가장 중요한 개념인, 영속성에서 더 나아가서, 영속성 컨텍스트의 이점에 대해서 알아보도록 하겠습니다.※ JPA의 영속성과 영속성 컨텍스트에 대해서는, 아래 포스팅을 참조하시면 됩니다.https://logger-debug.tistory.com/entry/JPA-%EC%98%81%EC%86%8D%EC%84%B1%EA%B3%BC-%EC%98%81%EC%86%8D%EC%84%B1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC JPA 영속성과 영속성 컨텍스트에 대하여!- -안녕하세요? 오늘은 JPA에서 가장 중요한 개념인, 영속성에 관련해서 알아보도록 하겠습니다.JPA를 공부할 때 가장 중요.. 2024. 10. 15.
JPA 영속성과 영속성 컨텍스트에 대하여! - -안녕하세요? 오늘은 JPA에서 가장 중요한 개념인, 영속성에 관련해서 알아보도록 하겠습니다.JPA를 공부할 때 가장 중요한 점은,1. 객체와 관계형 데이터베이스를 매핑하는 것(Object Relational Mapping)2. 영속성 컨텍스트를 이해하는 것이라고 볼 수 있습니다.JPA에서는, 요청이 올때마다, EntityManagerFactory를 통해서 EntityManager를 생성을 해주게 됩니다.EntityManager에서는 이제, 데이터 커넥션을 사용해서 DB를 사용하게 됩니다.엔티티의 생명주기는 크게 비영속 / 영속 / 준영속 / 삭제 로 나눠집니다.그럼 각각에 대해서 자세히 알아보도록 하겠습니다.-비영속: 영속성 컨텍스트와 전혀 관계가 없는 상태// 객체를 생성만 한 상태(비영속) En.. 2024. 10. 15.
Git ignore 적용 불필요 파일 무시 방법에 대해서! - -안녕하세요? 오늘은 형상관리서버인 Git에서, 불필요한 파일을 커밋목록에서 제외시키는 방법을 알아보도록 하겠습니다.gitignore란?: Project에 원하지 않는 Backup File이나 Log File, 혹은 컴파일 된 파일들을 commit 목록에서 제외시킬수 있는 설정 File※항상 최상위 디렉토리에 존재해야한다.1. .gitignore 파일을 생성해줍니다.아래 사이트에서 ignore 예시가 나와있습니다.https://github.com/github/gitignore GitHub - github/gitignore: A collection of useful .gitignore templatesA collection of useful .gitignore templates. Contribute t.. 2024. 10. 14.
JPA 데이터 타입과 기본 임베디드 컬렉션에 대하여! - -안녕하세요? 오늘은 JPA에서의 데이터 타입 분류에 대해서 알아보도록 하겠습니다.JPA에서의 데이터 타입은, 엔티티 타입과, 값 타입으로 분류합니다.엔티티 타입: @Entity로 정의하는 객체: 식별자가 존재: 생명주기 관리 가능: 공유 가능: 데이터가 변해도,식별자로 지속해서 추적 가능값 타입: 의미있는 비지니스 메소드 생성 사용 가능: 식별자 미존재: 공유하지 않고, 복사해서 사용: 불변 객체로 만들어서 사용 (getter 생성, setter 미생성): int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체: 복잡한 객체 세상을 단순화하기 위한 개념> 단순하고 안전하게 다룰 수 있어야한다.>> 엔티티를 값 타입으로 만들면 X>>> 식별자가 필요하고, 지속해서 값.. 2024. 10. 14.
JPA 키 매핑 종류와 전략에 대해서! - - 안녕하세요? 오늘은 JPA 에서의 키 매핑의 방법과, 키 매핑 전략에 대해서, 알아보도록 하겠습니다.   ※ JPA의 중요 매핑 어노테이션에 대해서는, 아래 포스팅을 참조 바라겠습니다. https://logger-debug.tistory.com/entry/JPA-%EC%A3%BC%EC%9A%94-%EB%A7%A4%ED%95%91-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C JPA 주요 매핑 어노테이션에 대해서!- -안녕하세요? 오늘은, JPA에서의 중요 매핑 어노테이션에 대해서 알아보도록 하겠습니다.-JPA의 중요 매핑 어노테이션의 종류는,@Entity @Table @ID @Column @Enu.. 2024. 10. 14.
JPA 주요 매핑 어노테이션에 대해서! - -안녕하세요? 오늘은, JPA에서의 중요 매핑 어노테이션에 대해서 알아보도록 하겠습니다.-JPA의 중요 매핑 어노테이션의 종류는,@Entity @Table @ID @Column @Enumerated @Temporal @Lob  @Transient 등등이 존재합니다. 우선 샘플코드로 어떻게 사용하는지 알아보도록 하겠습니다.@Entity@Table(name="")public class 엔티티명 { @ID private Long id; @Column(name="") private String name; @Column private Integer age; @Enumerated(EnumType.STRING) private RoleType roleType; @Temporal(T.. 2024. 10. 14.
JPA 상속관계 매핑 MappedSuperclass --안녕하세요? 오늘은 JPA의 상속관계중에서, MappedSuperclass에 대해서 알아보도록 하겠습니다.※ JPA의 상속관계 매핑에 대해서는 아래 포스팅을 참조 부탁드리겠습니다.https://logger-debug.tistory.com/entry/JPA-%EC%83%81%EC%86%8D%EA%B4%80%EA%B3%84-%EB%A7%A4%ED%95%91 JPA 상속관계 매핑--안녕하세요? 오늘은, JPA의 고급매핑 중에서, 상속관계 매핑에 대해서 알아보도록 하겠습니다. -상속관계 매핑이란?: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑: @Ingeritance 를logger-debug.tistory.com -@MappedSuperclass : 공통 매핑 정보가 필요할 때 사용: 부모 클.. 2024. 10. 11.
JPA 상속관계 매핑 --안녕하세요? 오늘은, JPA의 고급매핑 중에서, 상속관계 매핑에 대해서 알아보도록 하겠습니다.-상속관계 매핑이란?: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑: @Ingeritance 를 사용해서 전략 설정※ 객체는 상속관계가 존재하지만, 관계형 데이터베이스에는 상속관계가 존재하지 않습니다.그나마, 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사합니다.상속관계 매핑은 조인 전략, 단일 테이블 전략, 구현 클래스마다의 테이블 전략 세가지가 존재합니다. -조인 전략 : 각각 테이블로 변환해서, 조인으로 관리하고자하는 전략: 가장 정규화된 전략: 외래 키 참조 무결성 제약조건 활용 가능 (타 테이블에서 데이터 조회 시 설계가 깔끔): 저장공간의 효율화 최대: 조회시 조인을 많이 .. 2024. 10. 11.
JPA 객체 지향 모델링 연관관계 매핑 (2탄) --안녕하세요? 오늘은 JPA의 다양한 연관관계 매핑에 대해서 알아보도록 하겠습니다.※ JPA의 연관관계에 대해서는 이전 포스팅을 참조해주시길 바라겠습니다.https://logger-debug.tistory.com/entry/JPA-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EB%AA%A8%EB%8D%B8%EB%A7%81-%EC%97%B0%EA%B4%80%EA%B4%80%EA%B3%84-%EB%A7%A4%ED%95%91-1%ED%83%84 JPA 객체 지향 모델링 연관관계 매핑 (1탄)- -안녕하세요? 오늘은 JPA의 가장 중요 관점인, 객체 지향 모델링에 대해서, 알아보도록 하겠습니다.-기존의 DB 모델링과 비교를 했을때, JPA는 객체 중심으로 이루어져있는데,객체를 테이블에.. 2024. 10. 11.
JPA 객체 지향 모델링 연관관계 매핑 (1탄) - -안녕하세요? 오늘은 JPA의 가장 중요 관점인, 객체 지향 모델링에 대해서, 알아보도록 하겠습니다. -기존의 DB 모델링과 비교를 했을때, JPA는 객체 중심으로 이루어져있는데,객체를 테이블에 맞추어, 데이터 중심으로 모델링을 하게되면, 협력 관계를 만들 수 없습니다.테이블은 외래 키로 조인을 사용해서, 연관된 테이블을 찾게 되고, 객체는 참조를 사용해서 연관된 객체를 찾게 되는데요,이렇게 테이블과 객체 사이에는 이런 큰 간격이 존재합니다.그렇기에, JPA에서는 연관관계 설정을 해서 사용하게 됩니다.연관관계 설정에서는, 단방향 연관관계와 양방향 연관관계가 존재합니다.-단방향 연관관계샘플코드로 한번 알아보도록 하겠습니다.단방향 주 테이블 외래 키 관리 엔티티 생성)@Entitypublic class .. 2024. 10. 11.
반응형