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 출력 시 데이터 값도 출력
'기존 > 🏀JpaEnvorinoment' 카테고리의 다른 글
[스프링부트] maria db 환경 사용자계정 추가 (0) | 2022.11.12 |
---|---|
[JPA] Maven JPA 설정 (0) | 2022.11.01 |