컴퓨터응용과학부 Java Enterprize(DB) 제 14 주 2014년 12월 2일 하이버네이트, JPA와 스프링의 연계(10,11장)
토론을 위한 질문 ?
책 읽기 퀴즈 . MVC 두 가지 프로퍼티 Result Action Context
단어 퀴즈 스
다음 주 과제 12,13장 읽어오기 숙제 해서 제출하기
제10장 하이버네이트와 스프링의 연계 영속화에 무엇을 사용하면 좋을까? 하이버네이트란? 하이버네이트의 사용법 하이버네이트의 기능 하이버네이트의 연계 목적과 과제 연계 전의 소스 코드 인티그레이션 기능에 의한 하이버네이트 연계 하이버네이트와 스프링 연계에서 일어나는 트랜 잭션의 함정
하이버네이트란? SQL문을 이용하지 않고 도메인 클래스를 데이터 베이스의 테이블에 연결하는 ORM 이다.
하이버네이트 사용법 정의 파일 데이터베이스 설정 매핑 파일 도메인 테이블 매핑
도메인 클래스의 제약 인수가 없는 생성자가 있어야 한다. 프로퍼티에 대한 액세스 메소드가 있어야 한다. 프라이머리 키의 프로퍼티와 액세스 메소드가 있 어야 한다.
데이터 베이스 사용 절차 비즈니스 클래스는 데이터액세스 오브젝트(DAO) 에 액세스 한다. DAO는 하이버네이트가 제공하는 SessionFactory 오브젝트로부터 Session 오브 젝트를 가져오고 세션오브젝를 사용해 도메인을 생성하고 갱신한다.
하이버네이트의 기능 HQL(hibernate query language) 사용 프라이머리 키 자동생성 도메인 클래스의 연관 설정 오브젝트를 실제 사용할 때에 데이터베이스를 연 결하여 성능향상 캐시를 사용하여 데이터베이스 액세스 횟수 감소
하이버네이트의 연계 목적과 과제 스프링과 연계하지 않으면 코드가 길어진다. 트랜잭션 관리를 명시적으로 해야 한다. 스프링 연동으로 위 문제 해결
인테그레이션 기능에 의한 하이버네이트 연계 스프링 정의 파일에 하이버네이트 관련 설정 추가
Db 설정
하이버네이트 설정
HibernateTemplate 설정
스프링 인젝션 사용
DAO 클래스
Session의 사용 스프링과 연계한 경우 Session을 사용하고자 하면 반드시 sessionFactory.getCurrentSession() 을 이용해야 한다. openSession() 함수를 사용하면 트랜잭션 관리를 할 수 없다.
하이버네이트와 스프링 연계에서 일어나는 트랜잭션 함정 캐시를 사용하기 때문에 예기치 못한 일이 발생할 수 있다. 중복된 프라이머리 키 예외발생 문제 flush 함수 사용 N+1 selection 문제 하이버네이트는 다양한 함정이 도사린다. 하이버네이트 전문가 필수 스프링 JDBC 고려
실습 예제 pom.xml 스프링 Maven Project
제11장 JPA와 스프링의 연계 JPA란 무엇인가? POJO 기반의 도메인 클래스 Persistence.xml 파일 편집 JPS의 실행 – EJB 컨테이너가 없을 때 스프링의 JPA 인티그레이션 기능 DAO 클래스의 구현 Bean 정의 파일 설정 지연로드 문제 트랜잭션 뷰 패턴 스프링의 OpenEntityMangerInViewFilter Triggering Lazy Loading 트랜스퍼 오브젝트를 사용한다 선택 정리
JPA(Java Persistence API)란 무엇인가? JPA(Java Persistence API)는 EJB 2.x에서 DB에 접근 하기 위해 사용되었던 Entity Bean을 JSR-220(Enterprise JavaBeans 3.0)에서 대체하는 새 로운 기술이다. JPA는 Entity Bean과는 아주 다른 POJO(Plain Old Java Object) 기반의 ORM(Object-Relational Mapping) 프로그래밍 모델을 제공하며 기존에 존재하 던 Hibernate와 같은 ORM솔루션과 유사하다. EJB3.0에 국한되지 않은 범용적인 기술로 만들어 졌기 때문에 JAVA EE 와 SE 환경에서 모두 사용 할 수 있으 며 JAVA SE 5.0 Annotation을 사용하여 Java 객체에 서 RDB로 Mapping하는 방법을 단순화시켰다.
JPA의 특성 POJO 기반의 단순한 Persistence Model 표준화된 O/R 매핑 객체간의 상속관계 지원 Annotation AND/OR XML 사용 디폴트 규칙 적용으로 대부분의 경우 별도의 O/R 매핑을 지정할 필요가 없음. 객체간의 상속관계 지원 EJBQL에 비해 확장된 쿼리 언어 Bulk Update/Delete, Subquery, Native Query 지원 Java EE And Java SE 환경 모두 지원 프로바이더(Provider)를 플러그인 해서 사용 가능
Oracle JDBC 다운로드 http://www.oracle.com/technetwork/apps- tech/jdbc-112010-090769.html