ANSI SQL
SQL(Structured Query Language)란 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다.
DBMS Vendor(벤더, 공급업체)란 MS-SQL, Oracle, MySQL, PostgreSQL 등 DBMS을 개발하고 판매하는 기업을 말한다.
각 DBMS Vendor에서는 자신만의 기능을 추가한 SQL이 있다.
그림에서 볼 수 있듯이, ANSI SQL이 모든 DBMS에서 공통으로 사용가능한 핵심 표준 SQL이다.
ANSI : 미국 표준 협회
ANSI SQL 특징
- 표준 SQL문이기 때문에 특정 DBMS의 종류에 제약을 받지 않는다.
- 가독성이 일반 Query보다 좋다.
마치 대한민국의 서울에서 사용하는 표준어가 있고, 충청, 강원, 제주, 경상 등 여러 지방에서 사용하는 방언이 있는 것이라 볼 수 있다!
Dialect(방언)
RDBMS마다 ANSI SQL을 표준으로 두고 있지만, 자신만의 고유하고 독자적인 기능
JPA가 작동하는 방식을 이해해보자.
JPA는 어플리케이션이 직접 JDBC 레벨에서 SQL을 작성하는 것이 아니라, JPA가 직접 SQL을 작성하고 실행한다.
DBMS 종류마다 SQL 문법이 다른데 어떻게 실행하는 걸까?
만약 Oracle DB을 데이터베이스로 사용하다가 MS-SQL에 맞게 추가로 개발하려는 상황이 생긴다면, 엄청난 비용이 들 것이다.
이와 같은 문제를 해결하기 위해 하이버네이트를 포함한 대부분의 JPA 구현체들은 다양한 데이터베이스 방언 클래스를 제공한다.
JPA를 사용하고 있는 프로젝트의 개발자는 사용하는 데이터베이스가 변경되더라도, 데이터베이스 방언만 교체하면 쉽게 데이터베이스를 변경할 수 있다.
DB 방언 장점
- 개발자는 DB에 의존적인 개발을 지양할 수 있다.
- 데이터베이스를 변경할 시 간단히 데이터베이스 방언만 변경해주면 된다.
Hibernate 데이터베이스 방언 종류
- H2 : org.hibernate.dialect.H2Dialect
- Oracle 10g : org.hibernate.dialect.Oracle10gDialect
- MySQL : org.hibernate.dialect.MySQL5InnoDBDialect
실제 MySQL 데이터베이스 방언 설정 예시
틀린 부분이 있으면 지적해주시면 감사하겠습니다.
Reference
[Spring JPA ] 데이터베이스 방언(Dialect) 이란?
'Database' 카테고리의 다른 글
[MySQL] 붙여넣기 안 됨 [mac/맥북] (0) | 2024.07.08 |
---|---|
E-R 다이어그램 그리기 (0) | 2024.07.06 |
[AWS] AWS의 데이터베이스 정리 (0) | 2024.07.03 |