[JPA] 벌크 연산 - Bulk Opertation
executeUpdate() 여러 건을 하나의 쿼리로 수정하거나 삭제하는 방법
38 posts in this category
executeUpdate() 여러 건을 하나의 쿼리로 수정하거나 삭제하는 방법
Fetch Join은 일반적인 SQL JOIN이 아닌 JPQL에서 성능 최적화를 위해 제공하는 기능이다. Fetch Join은 연관된 엔터티 혹은 컬렉션을 한번에 조회하는...
1. 낙관적 락 - Optimistic Lock 데이터 갱신시 충돌이 발생하지 않을 것이라고 낙관적으로 가정하는 방법이다.
왜 필요할까?
Spring Data JPA 사용전
이 md는 김영한씨의 실전! 스프링 데이터 JPA 라는 강의를 보고 정리합니다.
만약 findByUsername같이 Entity 종속적인 기능을 사용하려면 어떻게 해야 할까? Spring JPA는 쿼리 메소드라는것을 제공한다. 쿼리 메소드 기능 3가지
CASCADE(영속성 전이)
과연 Member만 조회할 때 Team도 조회해야 할까? <img width=400px src=./img/when-member-get-team.png>
Entity : DB에서 영속적으로 저장된 데이터를 자바 객체로 매핑하여 ‘인스턴스의 형태’ 로 존재하는 데이터 Entity 클래스는 실제 DataBase의 테이블과 1...
JPA Auditing 사용동기 MembershipApi를 만들면서 유저 가입일을 추가해보고싶었다.
: 데이터를 영속화 하는 API
@MappedSuperclass <img width=450px src=./img/mapped-superclass.png>
Paging
em.find() vs em.getReference() em.find() : DB를 통해서 실제 엔티티 객체 조회 em.getReference() : DB 조회를 미루는 가짜(Proxy)엔티티 객체 조회 <img...
: Querydsl 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크이다 Querydsl은 타입에 안전한 방식으로 HQL 쿼리를...
SQL, JPQL을 코드로 작성할 수 있도록 도와주는 빌더 API JPA Criteria에 비해서 편리하고 실용적 오픈소스
값 타입 : 복잡한 객체 세상을 조금이나마 단순화하려고 만든 개념이다. 따라서 값 타입은 단순하고 안전하게 다룰 수 있어야 한다.
repo: https://github.com/siwony/HelloJPA/tree/valueTypeMapping_06 값 타입 매핑(실습)
: 값 타입을 하나 이상 저장할 때 사용한다. @ElementCollection, @CollectionTable 사용한다. DB는 컬렉션같은 테이블을 저장할 수 없다. 컬렉션을 저장하기 위한...
: 복잡한 객체 세상을 조금이나마 단순화하려고 만든 개념이다. 따라서 값 타입은 단순하고 안전하게 다룰 수 있어야 한다.
@Entity : 컬럼 매핑 table과 매핑될 클래스에 @Entity가 붙여진다 @Entity가 붙은 클래스는 JPA가 관리한다.
JPA는 다양한 쿼리 방법을 지원한다. JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접사용, MyBatis, SpringJdbcTemplate 함께 사용
JPA는 DB의 슈퍼타입/서브타입 과 같은 어떠한 논리적 기법을 어떤 3가지 방법으로 매핑을 하던 모든 매핑을 지원한다. 상속관계 매핑 : 객체의...
: 부모 엔티티와 자식관계가 끊어진 엔티티 고아 객체 제거: 부모 엔티티와 자식관계가 끊어진 엔티티를 제거한다. orpanRemoval = true Parent parent1...
생명주기를 Entity에 의존한다. 값 타입을 공유하면 안 된다. ex) String name, int age
기본키 매핑 방법 1. 직접 할당 @Id 만 사용한다.
실습 repo: https://github.com/siwony/HelloJPA/tree/variousRelationshipMapping_03 다양한 연관관계 매핑(실전) 엔티티 - 배송, 카테고리 추가 <img width=450px src=./img/various-relationship-mapping-entity.png>
연관관계 매핑시 고려사항 다중성 단방향, 양방향 연관관계의 주인(mappedBy)
실습 repo: https://github.com/siwony/HelloJPA/tree/inheritMapping_04 상속관계 매핑(실전) 요구사항 추가 상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장될 수 있다. 모든 데이터는...
실습 repo: https://github.com/siwony/HelloJPA/tree/basicMapping_02 연관관계 매핑 시작 할수 있으면 최대한 단방향 실무에서 JPQL을 많이 짜기 때문에 양방향이 많다.
객체를 테이블에 맞추어 모델링 연관관계가 없는 객체
영속성 컨텍스트는 JPA를 이해하는데 가장 중요하다. Entity ManagerFactory 와 EntityManager <img width=500px src=./img/entity-manager-factory.png>
객체지향스럽게 개발을 하려고 쓰는 것이다.
정리 엔티티 타입의 특징 식별자가 존재한다. 생명 주기를 관리한다. 공유한다.
: 영속 상태의 Entity가 영속성 컨텍스트에서 분리되는 것 영속에서 준 영속으로 바뀌는 상태 준 영속상태에서는 영속성 컨텍스트가 제공하는 기능을 사용할...
: SELECT 절에 조회할 대상을 지정하는것 프로잭션으로 관리되는 Entity는 모두다 영속성 컨텍스트에 관리된다. 프로젝션 대상 1. 엔티티 SELECT m FROM...
: 영속성 컨텍스트의 변경내용을 DB에 반영하는 것 영속성 컨텍스트를 비우지 않는다. 영속성 컨텍스트의 변경내용을 DB에 동기화한다. transaction이라는 작업 단위가 중요하다....