Java-Spring/자바 ORM 표준 JPA 프로그래밍

자바 / 스프링 / 스프링부트 스터디 정리
Java-Spring/자바 ORM 표준 JPA 프로그래밍

자바 ORM 표준 JPA 프로그래밍 - 목차

01장. JPA 소개 JPA 소개 02장. JPA 시작 JPA 시작 03장. 영속성 관리 영속성 관리 04장. 엔티티 매핑 엔티티 매핑 실전 예제 05장. 연관관계 매핑 기초 연관관계 매핑 기초 실전 예제 06장. 다양한 연관관계 매핑 다양한 연관관계 매핑 실전 예제 07장. 상속 관계 매핑 고급 매핑 실전 예제 08장. 프록시와 연관관계 관리 프록시와 연관관계 관리 실전 예제 09장. 값 타입 값 타입 실전 예제 10장. 객체지향 쿼리 언어 소개 JPQL (1) JPQL (2) Criteria QueryDSL 네이티브 SQL 심화 11장.웹 애플리케이션 제작 프로젝트 환경 설정 도메인 모델과 테이블 설계 애플리케이션 구현 12장. 스프링 데이터 JPA 스프링 데이터 JPA (1) 스프링 데이터 JPA ..

Java-Spring/자바 ORM 표준 JPA 프로그래밍

[자바 ORM 표준 JPA 프로그래밍] 트랜잭션과 락, 2차 캐시

트랜잭션과 락 트랜잭션과 격리 수준 트랜잭션은 ACID라 하는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 함 문제는 격리성인데 트랜잭션 간에 격리성을 완벽히 보장하려면 트랜잭션을 거의 차례대로 실행해야 함 이렇게 하면 동시성 처리 성능이 매우 나빠지므로 ANSI 표준은 트랜잭션의 격리 수준을 4단계로 나누어 정의함 ACID 원자성 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 함 일관성 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 함 예) 데이터베이스에서 정한 무결성 제약 조건을 항상 만족 격리성 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리해야 ..

Java-Spring/자바 ORM 표준 JPA 프로그래밍

[자바 ORM 표준 JPA 프로그래밍] 고급 주제와 성능 최적화 ②

성능 최적화 JPA로 애플리케이션을 개발할 때 발생하는 다양한 성능 문제와 해결방안 N+1 문제 읽기 전용 쿼리의 성능 최적화 배치 처리 SQL 쿼리 힌트 사용 트랜잭션을 지원하는 쓰기 지연과 성능 최적화 N+1 문제 JPA로 애플리케이션을 개발할 때 성능상 가장 주의해야 하는 것이 N+1 문제 // 회원 엔티티 @Entity public class Member { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "member", fetch = FetchType.EAGER) // 1:N 양방향 연관관계, 즉시 로딩 private List orders = new ArrayList(); ... } // 회원의 주문 정보 @Entity @Table(na..

Java-Spring/자바 ORM 표준 JPA 프로그래밍

[자바 ORM 표준 JPA 프로그래밍] 고급 주제와 성능 최적화 ①

예외 처리 JPA 표준 예외 정리 JPA 표준 예외들은 PersistenceException의 자식 클래스이며 이 예외 클래스는 RuntimeException의 자식임 따라서 JPA 예외는 모두 언체크 예외이며 크게 2가지로 나눌 수 있음 트랜잭션 롤백을 표시하는 예외 트랜잭션 롤백을 표시하는 예외는 심각한 예외이므로 복구해서는 안 됨 이 예외가 발생하면 트랜잭션을 강제로 커밋해도 트랜잭션이 커밋되지 않고 대신에 RollbackException 예외가 발생 트랜잭션 롤백을 표시하지 않는 예외 트랜잭션 롤백을 표시하지 않는 예외는 심각한 예외가 아니므로 개발자가 트랜잭션을 커밋할지 롤백할지를 판단하면 됨 스프링 프레임워크와 JPA 예외 반환 서비스 계층에서 JPA의 예외를 직접 사용하면 JPA에 의존하게 ..

Java-Spring/자바 ORM 표준 JPA 프로그래밍

[자바 ORM 표준 JPA 프로그래밍] 컬렉션과 부가 기능

컬렉션 JPA는 자바에서 기본으로 제공하는 Collection, List, Set, Map 컬렉션을 지원하며 @OneToMany, @ManyToMany를 사용해서 일대다나 다대다 엔티티 관계를 매핑할 때, @ElementCollection을 사용해서 값 타입을 하나 이상 보관할 때 사용 자바 컬렉션 인터페이스의 특징 Collection : 자바가 제공하는 최상위 컬렉션으로 하이버네이트는 중복을 허용하고 순서를 보장하지 않음 Set : 중복을 허용하지 않는 컬렉션으로 순서를 보장하지 않음 List : 순서가 있는 컬렉션으로 순서를 보장하고 중복을 허용 Map : Key, Value 구조로 되어 있는 특수한 컬렉션 JPA와 컬렉션 하이버네이트는 엔티티를 영속 상태로 만들 때 컬렉션 필드를 하이버네이트에서 준..

Java-Spring/자바 ORM 표준 JPA 프로그래밍

[자바 ORM 표준 JPA 프로그래밍] 웹 애플리케이션과 영속성 관리

트랜잭션 범위의 영속성 컨텍스트 순순하게 JS2E 환경에서 JPA를 사용하면 개발자가 직접 엔티티 매니저를 생성하고 트랜잭션도 관리해야 함 하지만 스프링이나 J2EE 컨테이너 환경에서 JPA를 사용하면 컨테이너가 제공하는 전략을 따라야 함 스프링 컨테이너의 기본 전략 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용하며 이는 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다는 뜻으로 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료하여 같은 트랜잭션 안에서는 항상 같은 영속성 컨텍스트에 접근함 스프링 프레임워크를 사용하면 보통 비즈니스 로직을 사용하는 서비스 계층에서 @Transactional 어노테이션을 선언해서 트랜잭션을 시작하며 외부..

Java-Spring/자바 ORM 표준 JPA 프로그래밍

[자바 ORM 표준 JPA 프로그래밍] 스프링 데이터 JPA ③

Web 확장 스프링 데이터 프로젝트는 스프링 MVC에서 사용할 수 있는 편리한 기능을 제공 설정 스프링 데이터가 제공하는 Web 확장 기능을 활성화하려면 SpringDataWebConfiguration을 스프링 빈으로 등록하면 됨 또는 JavaConfig를 사용하면 EnableSpringDataWebSupport 어노테이션을 사용 설정을 완료하면 도메인 클래스 컨버터와 페이징과 정렬을 위한 HandlerMethodArgumentResolver가 스프링 빈으로 등록됨 // 스프링 빈 등록 // JavaConfig 사용 // org.springframework.data.web.config.EnableSpringDataWebSupport 어노테이션 사용 @Configuratrion @EnableWebMvc @..

Java-Spring/자바 ORM 표준 JPA 프로그래밍

[자바 ORM 표준 JPA 프로그래밍] 스프링 데이터 JPA ②

쿼리 메소드 기능 메소드 이름만으로 쿼리를 생성하는 기능이 있어 인터페이스에 메소드만 선언하면 해당 메소드의 이름으로 적절한 JPQL 쿼리를 생성해서 실행 스프링 데이터 JPA가 제공하는 쿼리 메소드 기능 메소드 이름으로 쿼리 생성 메소드 이름으로 JPA NamedQuery 호출 @Query 어노테이션을 사용해서 리포지토리 인터페이스에 쿼리 직접 정의 메소드 이름으로 쿼리 생성 예) 이메일과 이름으로 회원을 조회하려면 다음과 같은 메소드를 정의 인터페이스에 정의한 메소드를 실행하면 스프링 데이터 JPA는 메소드 이름을 분석해서 JPQL을 생성하고 실행 이를 위해서는 정해진 규칙에 따라 메소드 이름을 지어야 하므로 스프링 데이터 JPA 공식 문서가 제공하는 표를 이해해야 함 public interface ..

김깅긍
'Java-Spring/자바 ORM 표준 JPA 프로그래밍' 카테고리의 글 목록