Hibernate5.x

26
HIBER NATE 5.x 시시시시 [email protected]

Transcript of Hibernate5.x

Page 1: Hibernate5.x

HIBER NATE 5.x시작하기[email protected]

Page 2: Hibernate5.x

왜 ? Hibernate??

1. SQL 짜기 싫어 !~ ㅠㅠ2. 매번 객체 맵핑 시키는거 귀찮아 ~

3. 나는 비지니스 로직에 집중할꺼야 ~

Page 3: Hibernate5.x

엔티티 생명주기

( 비영속 )( 영속 ) ( 준영속 )

김현하
Page 4: Hibernate5.x

Hibernate 셋팅 compile(group: 'org.hibernate', name: 'hibernate-core', version: '5.2.5.Final')

• Source 레벨에서 가능• Config 파일로 가능• XML• properties

• 매개변수로 가능

Page 5: Hibernate5.x

@Entity• 클래스를 영속화하려면 먼저 엔티티로 정의해야 합니다 .

Page 6: Hibernate5.x

식별자 key• 각 객체는 유일한 식별자를 가지고 데이터베이스에 영속화되어야 한다 .

GenerationType.AUTO

GenerationType.IDENTITY

GenerationType.SEQUENCE

GenerationType.TABLE

Page 7: Hibernate5.x

복합 식별자 ID (KEY)

복합 composite-id  식별자 설정과 관련된 세 가지 방법1. @Embededdable2. @EmbeddedId3. @IdClass

ID  값으로 사용되는 클래스에서 구현해야될것들1.     Default Constructor()2.     hashCode()3.     equals()4.    implements Serializable

tip : Lombok lib 사용한다면 위 내용을 자동으로 생성해준다 .( https://projectlombok.org/ )

Page 8: Hibernate5.x
Page 9: Hibernate5.x

Join  조인• 1:1

• 1:N, N:1

• N:N

하이버네이트는 다중성과 방향성을 모두 지원한다 .

Page 10: Hibernate5.x
Page 11: Hibernate5.x
Page 12: Hibernate5.x
Page 13: Hibernate5.x

상속 전략• Entity  상속으로 처리하는 방법이 3 가지 있다 .

1.     Table-per-Class  전략2.     Table-per-Subclass  전략3.     Table-per-Concrete-Class  전략

Page 14: Hibernate5.x
Page 15: Hibernate5.x
Page 16: Hibernate5.x
Page 17: Hibernate5.x

조회하기• 1. 지연로딩 FetchType.LAZY  ( 기본값 )• @OneToMany(cascade = CascadeType.ALL, fetch = FetchType-

.LAZY)

• 2. 즉시로딩 FetchType.EAGER• @OneToMany(cascade = CascadeType.ALL,fetch = FetchType-

.EAGER)

Page 18: Hibernate5.x

하이버네이트 질의어• HQL(Hibernate Query Language) 에서는 WHERE, ORDER

BY, AVG, MAX  등을 SQL 처럼 사용할수 있습니다 .• HQL 은 객체 (Entity) 를 사용합니다 .   테이블을 나타내는 자리에 엔티티 객체 클래스명을 사용해야 합니다 .

Page 19: Hibernate5.x

@Embedded Objects• object 를 하나의 Entity 에 속해있는것처럼 할수 있는 방법

Page 20: Hibernate5.x

ElementCollection• 별도의 Entity 를 만들지 않고 Collection 을 테이블로 사용하자 .

Page 21: Hibernate5.x

페이지네이션• 몇 개의 레코드만 가져오려면 setMaxResults() 메소드에 한계치와 함께 호출함으 로써 페이지네이션

Pagination  기능을 사용할 수 있다

Page 22: Hibernate5.x

Criteria• 하이버네이트에서는 criteria 를 도입하여 필터링의 또 다른 방법을 제공합니다 .• Criteria 와 Restrictions  클래스를 이용하여 좀더 편하게 필터링을 해보자구요 ~

더복잡하게 느껴지는건 기분탓인가 ??

Page 23: Hibernate5.x

네임드 쿼리• 클래스 레벨에서 엔티티의쿼리를 사용하기 위해

@NamedQuery 이용매핑 파일에 선언사용할수 있다 .

Page 24: Hibernate5.x

네이티브 쿼리

Page 25: Hibernate5.x

Groovy Template  이용하여 Dynamic Query  사용하기

Page 26: Hibernate5.x

감사합니다 .