본문 바로가기

JPA16

Chap.16 트랜잭션과 락, 2차 캐시 - 트랜잭션과 락: JPA가 제공하는 트랜잭션과 락 기능을 다룬다. - 2차 캐시: JPA가 제공하는 애플리케이션 범위의 캐시를 다룬다. 16.1 트랜잭션과 락 - 트랜잭션 기초와 JPA가 제공하는 낙관전 락과 비관적 락에 대해 알아보자. 16.1.1 트랜잭션과 격리 수준 - 트랜잭션은 ACID라 하는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 한다. 원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하든가 모두 실패해야 한다. 일관성: 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다. 격리성: 동시에 실행.. 2021. 9. 13.
Chap.15 고급 주제와 성능 최적화 - 예외 처리: JPA를 사용할 때 발생하는 다양한 예외와 예외에 따른 주의점 설명 - 엔티티 비교: 엔티티를 비교할 때 주의점과 해결 방법을 설명 - 프록시와 심화 주제: 프록시로 인해 발생하는 다양한 문제점과 해결 방법을 다룸 - 성능 최적화 : N+1문제 발생하는 상황과 해결방법 : 엔티티를 단순회 조회만 하면 영속성 컨텍스트에 스냅샷을 유지할 필요도 없고 영속성 컨텍스트를 플러시할 필요도 없다. 엔티티를 읽기 전용으로 할 때 성능 최적화 방안을 다룸 : 수백만 건의 데이터를 처리해야 하는 배치 처리 상황에서 JPA를 어떻게 사용할 수 있는지 다룸 : 하이버네이트를 통해 SQL 쿼리 힌트를 사용하는 방법을 다룸 : 트랜잭션을 지원하는 쓰기 지연을 통해 성능을 최적화하는 방법을 다룸 15.1 예외 처.. 2021. 9. 3.
Chap.14 컬렉션과 부가 기능 JPA가 지원하는 컬렉션의 종류와 중요한 부가 기능들을 알아보자. - 컬렉션: 다양한 컬렉션과 특징을 설명한다. - 컨버터: 엔티티의 데이터를 변환해서 데이터베이스에 저장한다. - 리스너: 엔티티에 발생한 이벤트를 처리한다. - 엔티티 그래프: 엔티티를 조회할 때 연관된 엔티티들을 선택해서 함께 조회한다. 14.1 컬렉션 - @OneToMany, @ManyToMany를 사용해서 일대다나 다대다 엔티티 관계를 매핑할 때 - @ElementCollection을 사용해서 값 타입을 하나 이상 보관할 때 - JPA 명세에는 자바 컬렉션 인터페이스에 대한 특별한 언급이 없다. 따라서 JPA 구현체에 따라서 제공하는 기능이 조금씩 다를 수 있는데 여기서는 하이버네이트 구현체를 기준으로 이야기하겠다. 14.1.1 J.. 2021. 8. 28.
Chap.13 웹 애플리케이션과 영속성 관리 스프링이나 J2EE 컨테이너 환경에서 JPA를 사용하면 컨테이너가 트랜잭션과 영속성 컨텍스트를 관리해주므로 애플리케이션을 손쉽게 개발할 수 있다. 하지만 컨테이너 환경에서 동작하는 JPA의 내부 동작 방식을 이해하지 못하면 문제가 발생했을 때 해결하기 쉽지 않다. 이번 장을 통해 컨테이너 환경에서 JPA가 동작하는 내부 동작 방식을 이해하고, 컨테이너 환경에서 웹 애플리케이션을 개발할 때 발생할 수 있는 다양한 문제점과 해결 방안을 알아보자. 더보기 J2EE (Java 2 Entrerprice Edition)? J2EE는 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합입니다. https://cheershennah.tistory.com/74 13.1 트랜잭션 범위의 영속성 .. 2021. 7. 30.
Chap.12 스프링 데이터 JPA 12.1 스프링 데이터 JPA 소개 - 스프링 데이터 JPA는 스스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트다. 이 프로젝트는 데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 세련된 방법으로 해결한다. 우선 CRUD를 처리하기 위한 공통 인터페이스를 제공한다. 그리고 리포지토리를 개발할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해준다. 따라서 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있다. CRUD를 처리하기 위한 공통 메소드는 스프링 데이터 JPA가 제공하는 org.springframework.data.jpa.repository.JpaRepository 인터.. 2021. 7. 19.
Chap.10 객체지향 쿼리 언어 - 2 10.3 Criteria - Criteria 쿼리는 JPQL을 자바 코드로 작성하도록 도와주는 빌더 클래스 API다. - Criteria를 사용하면 문자가 아닌 코드로 JPQL을 작성하므로 문법 오류를 컴파일 단계에서 잡을 수 있고 문자 기반의 JPAL보다 동적 쿼리를 안전하게 생성할 수 있는 장점이 있다. 하지만 실제 Criteria를 사용해서 개발해보면 코드가 복잡하고 장황해서 직관적으로 이해가 힘들다는 단점도 있다. - Criteria는 결국 JPQL의 생성을 돕는 클래스 모음이다. 따라서 내용 대부분이 JPQL과 중복되므로 사용법 위주로 알아보자. // JPQL: select m from Member m CriteriaBuilder cb = em.getCriteriaBuilder(); // Cri.. 2021. 7. 5.