| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 환급챌린지
- 내일배움카드
- Java
- mysql
- 패스트캠퍼스
- 자바
- UXUI기초정복
- 국비지원교육
- 부트캠프
- 국비지원
- 티스토리챌린지
- UXUI챌린지
- UXUIPrimary
- KDT
- 백엔드개발자
- Be
- 오픈챌린지
- 객체지향
- 오블완
- baekjoon
- 백준
- 디자인챌린지
- 백엔드 부트캠프
- 디자인교육
- 디자인강의
- 국비지원취업
- 오픈패스
- JPA
- OPENPATH
- Spring
- Today
- Total
목록JPA (17)
군만두의 IT 개발 일지
목차16장. 트랜잭션과 락, 2차 캐시16.1 트랜잭션과 락16.1.1 트랜잭션과 격리 수준트랜잭션은 ACID라 하는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 한다.원자성(Atomicity): 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하든가 모두 실패해야 한다.일관성(Consistency): 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다.격리성(Isolation): 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다.지속성(Durability): 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다.문제는 격리성인데 트랜잭션 간에 격리성을 완벽히 보장하..
목차15장. 고급 주제와 성능 최적화15.1 예외 처리15.1.1 JPA 표준 예외 정리JPA 표준 예외들은 javax.persistence.PersistenceException의 자식 클래스이며, 모두 RuntimeException의 자식이므로 언체크 예외다.JPA 표준 예외는 크게 2가지로 나눌 수 있다.트랜잭션 롤백을 표시하는 예외: 심각한 예외이므로 복구해선 안 된다.트랜잭션 롤백을 표시하지 않는 예외: 개발자가 트랜잭션을 커밋할지 롤백할지 판단한다.주요 예외EntityExistException: EntityManager.persist() 호출 시 이미 같은 엔티티가 있으면 발생한다.EntityNotFoundException: EntityManager.getReference()를 호출했는데 실제 ..
목차 14장. 컬렉션과 부가 기능- 컬렉션: 다양한 컬렉션과 특징을 설명한다.- 컨버터: 엔티티의 데이터를 변환해서 데이터베이스에 저장한다.- 리스너: 엔티티에서 발생한 이벤트를 처리한다.- 엔티티 그래프: 엔티티를 조회할 때 연관된 엔티티들을 선택해 함께 조회한다.14.1 컬렉션JPA는 자바에서 기본으로 제공하는 Collection, List, Set, Map 컬렉션을 지원한다.컬렉션은 다음 경우에 사용할 수 있다.@OneToMany, @ManyToMany를 사용해서 일대다나 다대다 엔티티 관계를 매핑할 때@ElementCollection을 사용해서 값 타입을 하나 이상 보관할 때자바 컬렉션 인터페이스의 특징Collection: 자바가 제공하는 최상위 컬렉션 (하이버네이트는 순서X, 중복O로 가정)Se..
목차13장. 웹 애플리케이션과 영속성 관리13.1 트랜잭션 범위의 영속성 컨텍스트순수하게 J2SE 환경에서 JPA를 사용하면 개발자가 직접 엔티티 매니저를 생성하고 트랜잭션도 관리해야 한다.스프링이나 J2EE 컨테이너 환경에서 JPA를 사용하면 컨테이너가 제공하는 전략을 따라야 한다.13.1.1 스프링 컨테이너의 기본 전략스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다.트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고, 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다.같은 트랜잭션 안에서는 항상 같은 영속성 컨텍스트에 접근한다.@Transactional 어노테이션이 있으면 메소드를 실행하기 직전에 스프링의 트랜잭션 AOP가 먼저 동작한다.트랜잭션이 같으면 같은 영속성 컨텍스트를 사..
목차10장. 객체지향 쿼리 언어- JPQL (Java Persistence Query Language)- Criteria 쿼리와 QueryDSL- 네이티브 SQL과 다양한 쿼리 기술10.1 객체지향 쿼리 소개JPA는 복잡한 검색 조건을 사용해서 엔티티 객체를 조회할 수 있는 다양한 쿼리 기술을 지원한다.EntityManager.find() 메소드만으로는 애플리케이션에서 필요한 모든 검색 기능을 구현하기는 현실적으로 어렵다.ORM을 사용하면 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 검색도 테이블이 아닌 엔티티 객체를 대상으로 하는 방법이 필요하다.JPA가 공식 지원하는 쿼리 방법JPQL (Java Persistence Query Language): SQL과 가장 비슷하며 가장 일반적으로..
목차8장. 프록시와 연관관계 관리- 프록시와 즉시로딩, 지연로딩- 영속성 전이와 고아 객체8.1 프록시엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다. 예를 들어, 회원 엔티티를 조회활 때 회원과 연관된 팀 엔티티까지 데이터베이스에서 조회하는 것은 비효율적이다.따라서 JPA는 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 지연 로딩 방법을 제공한다.지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체인 프록시 객체가 필요하다.8.1.1 프록시 기초JPA에서 식별자로 엔티티 하나를 조회할 때는 EntityManager.find()를 사용한다.EntityManager.find(): 영속성 컨텍스트에 엔티티가 없으면 데이터베이스를 조회한..
목차7장. 고급 매핑- 상속 관계 매핑: 객체의 상속 관계를 데이터베이스에 어떻게 매핑하는지- @MappedSuperclass: 등록일, 수정일 같이 여러 엔티티에서 공통으로 사용하는 매핑 정보만 상속받고 싶으면 사용- 복합키와 관계 매핑: 데이터베이스의 식별자가 하나 이상일 때 매핑하는 방법- 조인 테이블: 연관관계를 관리하는 연결 테이블을 매핑하는 방법- 엔티티 하나에 여러 테이블 매핑하기: 엔티티 하나에 여러 테이블을 매핑하는 방법7.1 상속 관계 매핑관계형 데이터베이스에는 객체지향 언어에서 다루는 상속 개념이 없다. ORM에서 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타임 관계를 매핑하는 것이다.슈퍼타입 서브타입 논리 모델을 실제 물리 모델(테이블)로 구현하는 방법각각의 테..
목차6장. 다양한 연관관계 매핑- 다중성: 다대일(@ManyToOne), 일대다(@OneToMany), 일대일(@OneToOne), 다대다(@ManyToMany)- 단방향, 양방향: 객체 관계에서 한 쪽만 참조하는 것을 단방향 관계, 양쪽이 서로 참조하는 것을 양방향 관계라 한다.- 연관관계의 주인: JPA는 두 객체 연관관계 중 하나를 정해서 데이터베이스 외래키를 관리한다.6.1 다대일객체 양방향 관계에서 연관관계의 주인은 항상 다쪽이다.6.1.1 다대일 단방향 [N:1]예) 회원은 Member.team으로 팀 엔티티를 참조할 수 있지만, 반대로 팀에는 회원을 참조하는 필드가 없다. 따라서 회원과 팀은 다대일 단방향 연관관계다.6.1.2 다대일 양방향 [N:1, 1:N]양방향은 외래키가 있는 쪽이 연관..
