JAP는 특정 데이터베이스에 종속적이지 않은 기술이므로, 개발시 어느 데이터베이스를 사용하던지 손쉽게 교체 할 수 있고, 사용함에 있어서 이상이 없어야 한다. 일반적으로 각각의 데이터베이스는 문법과 함수가 다른데, 예를 들어서 아래와 같다.

 

- 데이터 타입 : 가변문자 타입으로 MySQL은 VARCHAR, 오라클은 VARCHAR2를 사용한다.

- 다른 함수명 : 문자열을 자르는 함수로 예를 들면 SQL 표준은 SUBSTRING() 이지만, 오라클은 SUBSTR()을 사용한다.

- 페이징 처리 : MySQL 은 LIMIT를 사용하지만 오라클은 ROWNUM을 사용한다.

 

이와같이 SQL별로 표준을 지키지 않은 데이터베이스만의 고유한 기능을 '데이터베이스 방언' 이라고 한다. JAP 구현체는 이러한 문제점을 해결하기 위하여 데이터베이스 방언 클래스를 제공한다. JPA를 사용하고있는 프로젝트의 개발자는 이에 대하여 사용하는 데이터베이스가 변경되더라도 데이터베이스 방언만 교체하면 쉽게 데이터베이스를 변경할 수 있다.

 

 

데이터베이스 방언을 사용하는 예

 

하이버네이트에는 다양한 데이터베이스 방언을 제공한다. 대표적으로 아래와 같다.

- H2: org.hibernate.dialect.H2Dealect

- 오라클 10g : org.hibernate.dialect.Oracle10gDialect

- MySQL : org.hibernate.dialect.MySQL5InnoDBDialect

 

 

 

● 참고

하이버네이트가 지원하는 여러 데이터베이스 방언 항목들

http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#configuration-optional-dialects

 

HIBERNATE - Relational Persistence for Idiomatic Java

Sometimes, you probably don't want to implement an intrusive interface, maybe due to portable concern, which is fine and Hibernate will take care of this internally with a wrapper class which implements that interface, and also an internal cache that maps

docs.jboss.org

 

'develop > JPA, Hibernate' 카테고리의 다른 글

엔티티 매니저 등록/수정/삭제/조회 정리  (0) 2019.11.24
엔티티 매니저 설정, 생성과정  (0) 2019.11.24
JPQL 이란? (querydsl)  (0) 2019.10.12
Hibernate 란?  (0) 2019.09.30
JPA, ORM이란 무엇인가?  (0) 2019.09.30

■ Hibernate 란?

 

ORM 프레임 워크중 하나이다. 과거와 다르게 자바 엔터프라이즈(J2EE) 애플리케이션 서버가 없어도 별도로 동작한다.

 

Hibernate concept

 

Hibernate 뿐만 아니라, 모든 ORM의 컨셉은 객체와 persistence계층 간(데이터베이스 테이블)에 맵핑을 하는 것이다.

객체  관계에는 연관(assosiation), 집합(aggregation), 의존(dependency) 관계가 존재하며, 데이터베이스에는 primary key  foreign key 관계로 표현된다. ORM은 이 관계의 맵핑을 바탕으로, 객체에 대한 조작만으로, 구체적인 persistence(데이터베이스, 파일시스템, 네트웍 등) 계층에 대해 알지 못해도 데이터들을 다룰수 있게하는 것이다.

, ORM의 일종인 Hibernate  자바객체를 통해 데이터베이스가 Oracle, MySql, MSSQL 등 에 상관없이 다룰수 있도록 하는 추상화를 목표로 한다 이 때, 자바객체는 domain model 이 되며, 이 도메인 모델에 대한 생성, setter, getter, 삭제를 통해 데이터베이스 테이블을 변경시 킬 수 있다.

 

 

 

출처) https://m.blog.naver.com/PostView.nhn?blogId=movman&logNo=100106214299&proxyReferer=https%3A%2F%2Fwww.google.com%2F

'develop > JPA, Hibernate' 카테고리의 다른 글

엔티티 매니저 등록/수정/삭제/조회 정리  (0) 2019.11.24
엔티티 매니저 설정, 생성과정  (0) 2019.11.24
데이터베이스 방언  (0) 2019.10.19
JPQL 이란? (querydsl)  (0) 2019.10.12
JPA, ORM이란 무엇인가?  (0) 2019.09.30

+ Recent posts