Home > Spring > πŸƒ[Spring] spring.jpa.properties.hibernate.dialectμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?

πŸƒ[Spring] spring.jpa.properties.hibernate.dialectμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?
Spring Framework

πŸƒ[Spring] spring.jpa.properties.hibernate.dialectμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?

  • spring.jpa.properties.hibernate.dialectλŠ” Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ Hibernateκ°€ μ‚¬μš©ν•˜λŠ” SQL(Structured Query Language) λ°©μ–Έ(dialect)을 μ§€μ •ν•˜λŠ” μ„€μ •μž…λ‹ˆλ‹€.
  • Hibernate DialectλŠ” Hibernateκ°€ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έμž‘μš©ν•  λ•Œ μ‚¬μš©ν•˜λŠ” SQL 방언을 μ •μ˜ν•©λ‹ˆλ‹€.
    • 즉, μ„œλ‘œ λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€λ§ˆλ‹€ μ‚¬μš©ν•˜λŠ” SQL λ¬Έλ²•μ΄λ‚˜ κΈ°λŠ₯이 μ•½κ°„μ”© λ‹€λ₯΄κΈ° λ•Œλ¬Έμ—, Hibernateκ°€ 각 λ°μ΄ν„°λ² μ΄μŠ€μ˜ νŠΉμ„±μ— λ§žλŠ” SQL을 μƒμ„±ν•˜λ„λ‘ λ•λŠ” 역할을 ν•©λ‹ˆλ‹€.

1️⃣ μ™œ ν•„μš”ν•œκ°€μš”?

  • μ„œλ‘œ λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€λŠ” SQL(Structured Query Language) λ¬Έλ²•μ΄λ‚˜ κΈ°λŠ₯이 μ‘°κΈˆμ”© λ‹€λ¦…λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, MySQL, Oracle, PostgreSQL, SQL Server 등은 일뢀 SQL λ¬Έλ²•μ΄λ‚˜ ν•¨μˆ˜μ˜ 지원 방식이 λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
  • HibernateλŠ” λ°μ΄ν„°λ² μ΄μŠ€ 독립성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ λ‹€μ–‘ν•œ λ°μ΄ν„°λ² μ΄μŠ€μ— 맞좰 λ™μž‘ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
    • κ·ΈλŸ¬λ‚˜ 이λ₯Ό μœ„ν•΄ 각 λ°μ΄ν„°λ² μ΄μŠ€μ— λ§žλŠ” μ μ ˆν•œ SQL(Structured Query Language)을 생성해야 ν•˜λ©°, 이λ₯Ό μœ„ν•΄ Dialectλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • Hibernate DialectλŠ” νŠΉμ • λ°μ΄ν„°λ² μ΄μŠ€μ— 맞좰 SQL 쿼리λ₯Ό μ΅œμ ν™”ν•˜κ±°λ‚˜, λ°μ΄ν„°λ² μ΄μŠ€μ— νŠΉν™”λœ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

2️⃣ μ„€μ • 방법.

  • Spring Bootμ—μ„œ spring.jpa.properties.hibernate.dialectλ₯Ό application.properties λ˜λŠ” application.yml νŒŒμΌμ— μ„€μ •ν•˜μ—¬, μ‚¬μš©ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— λ§žλŠ” λ°©μ–Έ(dialect)을 λͺ…μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‘‰ application.properties νŒŒμΌμ—μ„œ μ„€μ •.

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

πŸ‘‰ application.yml νŒŒμΌμ—μ„œ μ„€μ •.

spring:
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect

3️⃣ λŒ€ν‘œμ μΈ Hibernate Dialect μ˜ˆμ‹œ.

1️⃣ MySQL

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

2️⃣ PostgreSQL

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

3️⃣ Oracle

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect

4️⃣ H2(In-Memory Database)

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

5️⃣ SQL Server

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect

4️⃣ μžλ™ μ„€μ •.

  • Spring BootλŠ” λŒ€λΆ€λΆ„μ˜ 경우 spring.datasource.url 속성에 μ„€μ •λœ λ°μ΄ν„°λ² μ΄μŠ€ URL을 기반으둜 μ μ ˆν•œ Hibernate Dialectλ₯Ό μžλ™μœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€.
    • κ·Έλž˜μ„œ 보톡 spring.jpa.properties.hibernate.dialectλ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ„€μ •ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.
  • κ·ΈλŸ¬λ‚˜ νŠΉμ •ν•œ λ°μ΄ν„°λ² μ΄μŠ€ 버전에 λ§žλŠ” νŠΉν™”λœ μ΅œμ ν™” κΈ°λŠ₯을 μ‚¬μš©ν•˜κ±°λ‚˜, μžλ™ 섀정이 μ œλŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” 이 섀정을 λͺ…μ‹œμ μœΌλ‘œ μ •μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

5️⃣ Hibernate Dialect의 μ—­ν• .

1️⃣ SQL 문법 μ΅œμ ν™”.

  • νŠΉμ • λ°μ΄ν„°λ² μ΄μŠ€μ— λ§žλŠ” SQL 문법을 μ‚¬μš©ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, MySQLκ³Ό Oracleμ—μ„œ μžλ™ 증가 ν•„λ“œ(autoincrement)λ₯Ό μ²˜λ¦¬ν•˜λŠ” 방식이 λ‹€λ¦…λ‹ˆλ‹€.
      • HibernateλŠ” 이 차이점을 Dialectλ₯Ό 톡해 μ²˜λ¦¬ν•©λ‹ˆλ‹€.

2️⃣ 데이터 νƒ€μž… λ§€ν•‘.

  • 각 λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ„œλ‘œ λ‹€λ₯Έ 데이터 νƒ€μž…μ„ μ§€μ›ν•©λ‹ˆλ‹€.
    • DialectλŠ” μžλ°”μ˜ 데이터 νƒ€μž…μ„ ν•΄λ‹Ή λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ§€μ›ν•˜λŠ” λ°μ΄ν„°νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.

3️⃣ λ°μ΄ν„°λ² μ΄μŠ€ νŠΉν™” κΈ°λŠ₯.

  • 일뢀 λ°μ΄ν„°λ² μ΄μŠ€λŠ” νŠΉμ • κΈ°λŠ₯을 μ œκ³΅ν•˜λ©°, DialectλŠ” μ΄λŸ¬ν•œ κΈ°λŠ₯을 ν™œμš©ν•  수 μžˆλ„λ‘ μ΅œμ ν™”λœ 쿼리λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, PostgreSQL의 μ‹œν€€μŠ€λ‚˜ MySQL의 LIMIT 절 듀이 κ·Έ μ˜ˆμž…λ‹ˆλ‹€.

6️⃣ μš”μ•½.

  • spring.jpa.properties.hibernate.dialectλŠ” Hibernateκ°€ μ‚¬μš©ν•  λ°μ΄ν„°λ² μ΄μŠ€ λ°©μ–Έ(Dialect)을 μ •μ˜ν•˜λŠ” μ„€μ •μž…λ‹ˆλ‹€.
  • 각 λ°μ΄ν„°λ² μ΄μŠ€λŠ” SQL(Structured Query Language) λ¬Έλ²•μ΄λ‚˜ κΈ°λŠ₯이 μ•½κ°„μ”© λ‹€λ₯΄κΈ° λ•Œλ¬Έμ—, HibernateλŠ” Dialectλ₯Ό μ‚¬μš©ν•΄ νŠΉμ • λ°μ΄ν„°λ² μ΄μŠ€μ— λ§žλŠ” SQL을 μƒμ„±ν•©λ‹ˆλ‹€.
  • Spring BootλŠ” λ°μ΄ν„°λ² μ΄μŠ€ URL을 톡해 μžλ™μœΌλ‘œ μ μ ˆν•œ Dialectλ₯Ό μ„€μ •ν•˜λ €κ³  μ‹œλ„ν•˜μ§€λ§Œ, λͺ…μ‹œμ μœΌλ‘œ 이 섀정을 μ§€μ •ν•΄ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έμž‘μš©μ„ μ΅œμ ν™”ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.