[개발 일기] 2025.06.04 - H2는 Point 타입을 사용할 수 없다!!

2025. 6. 4. 12:55·개발 일기

💡 개요

 

보통 위치 좌표를 표현할 때 DB에선 Point 타입을 자주 사용한다.

 

 

 

🛠️ H2에서 Point?

 

…Repository을 테스트 할 땐 보통 @DataJpaTest 을 사용한다.

→ 그래야 기본적으로 인메모리 DB인 H2도 사용되고, 트랜잭션도 자동으로 적용되기 때문이다.

 

 

그런데, 엔티티에 Point 타입 필드를 사용하게 되면 H2는 기본적으로 Point 타입과 같은 공간(Spatial) 타입을 지원하지 않기 때문에, 테이블 생성 시 DDL 에러가 발생하며 테이블 생성이 실패한다.

 

 

그렇기 때문에 어쩔 수 없이 Point가 자주 사용되는 테스트라면 DB에 H2 말고 MySQL이나 PostgreSQL을 사용해야 한다.

 

 

다음은 @DataJpaTest 테스트 코드에 실제 MySQL DB을 적용하는 코드 예시이다.

 

 

👨🏻‍💻 JpaAbstractIntegrationTest.java

@DataJpaTest
@ActiveProfiles("test")
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Import({JpaAuditingConfig.class, GeometryConfig.class})
public abstract class JpaAbstractIntegrationTest {
    ....
}

 

 

👨🏻‍💻 application-test.yml

spring:
  config:
    import: .env-test.properties
    activate:
      on-profile: test
  datasource:
    url: ${DB_URL}
    driver-class-name: ${DB_DRIVER_CLASS_NAME}
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}
  jpa:
    database-platform: ${JPA_DB_PLATFORM}
    properties:
      hibernate:
        show-sql: true
        format-sql: true
    hibernate:
      ddl-auto: update
    ...
  • 참고로 ${DB_URL} 와 같은 DB관련 변수는 모두 테스트용 DB(MySQL)로 설정되어 있다.

 

 

 

📌 참고

 

Geometry DataType in H2 w/ Spring JPA

 

위 글에 나와있듯이 예전에는 application.yml에서 hibernate.dialect를 org.hibernate.spatial.dialect.h2geodb.GeoDBDialect로 설정하면 H2에서도 공간 타입이 작동한다고 알려져 있었지만, Hibernate 6 버전부터는 해당 Dialect가 더 이상 지원되지 않으므로 사용이 불가능하다고 보는 것이 맞다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.06.06 - FilterChainProxy  (0) 2025.06.06
[개발 일기] 2025.06.05 - 새로운 패키지 구조  (0) 2025.06.05
[개발 일기] 2025.06.03 - 값 검증을 응용 계층에서??  (0) 2025.06.03
[개발 일기] 2025.06.02 - JPQL과 Native Query 차이  (2) 2025.06.02
[개발 일기] 2025.06.01 - 제품과 리뷰의 관계  (1) 2025.06.01
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.06.06 - FilterChainProxy
  • [개발 일기] 2025.06.05 - 새로운 패키지 구조
  • [개발 일기] 2025.06.03 - 값 검증을 응용 계층에서??
  • [개발 일기] 2025.06.02 - JPQL과 Native Query 차이
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.06.04 - H2는 Point 타입을 사용할 수 없다!!
상단으로

티스토리툴바