하이버네이트(Hidernate) 설명 및 설정법

하이버네이트(Hidernate) 설명 및 설정법

반응형

Hibernate란?

하이버네이트는 자바 언어를 위한 ORM 프레임워크이고 JPA의 구현체로, JPA 인터페이스를 구현하고 내부적으로 JDBC API를 사용한다.

하이버네이트는 자바객체를 통해 데이터베이스가 Oracle, MySql, MSSQL 등 에 상관없이 다룰수 있도록 하는 추상화를 목표로 한다.

Mybatis에 익숙한 사람들이라면, Mybatis 구조가 들어가는 자리에 Hiberante가 들어오는 구조라고 이해하면 된다.

이를 통해 개발자는 SQL를 직접 사용하지 않고 메서드 호출만으로 쿼리가 수행된다, 즉 SQL을 작성하는 시간을 줄여 생산성이 높아진다.

하지만 직접 SQL을 작성하는것보다는 성능상 좋지 않고 세밀하게 데이터를 조작하기 힘들다.

이를 보안하기 위해 JPQL과 NativeQuery를 지원하고 Querydsl을 함께 사용할 수 있다.

설정법

설정은 스프링 부트, gradle 기준으로 작성하였다.

build.gradle

dependencies { ... // JPA implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // JDBC implementation 'org.springframework.boot:spring-boot-starter-jdbc' // MySQL runtimeOnly 'mysql:mysql-connector-java' ... }

application.yml

server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/devbeekei?characterEncoding=UTF-8&serverTimezone;=Asia/Seoul username: root password: password jpa: show-sql: true hibernate: dialect: org.hibernate.dialect.MySQL5InnoDBDialect ddl-auto: validate properties: hibernate: enable_lazy_load_no_trans: false format_sql: true use_sql_comments: true logging: level: org: hibernate: type: descriptor: sql: trace

jpa.hibernate.dialect

데이터베이스 방언 설정

jpa.hibernate.ddl-auto

스키마 자동생성 설정

- none

- update : 테이블의 내용이 변경된 경우 자동으로 스키마 update

- create : 애플리케이션 구동 시 스키마 create

- create-drop : 애플리케이션 구동 시 스키마 create, 종료 시 drop

- validate : 매핑 유효성 검증만 실행

jpa.properties.hibernate.enable_lazy_load_no_trans

영속성 컨텍스트가 종료되어도, 새로운 데이터베이스 커넥션을 획득해서 지연로딩이 가능하도록 설정

(성능상 false 권장)

jpa.properties.hibernate.format_sql

Query 출력 시 Query를 가독성 좋게 줄바꿈( jpa.show-sql이 true일때)

jpa.properties.hibernate.use_sql_comments

Query 출력 시 설명 주석 추가( jpa.show-sql이 true일때)

logging.level.org.hibernate.type.descriptor.sql

Query 출력 시 데이터 값도 출력

반응형

from http://devbksheen.tistory.com/187 by ccl(A) rewrite - 2021-12-28 17:27:33