콘텐츠로 이동
Bluetape4k 문서1.11

Hibernate 다음의 기술 선택

최신 안정판 Bluetape4k 1.11.0 릴리스 기준

ORM이 필요한 문제인지 먼저 본다

섹션 제목: “ORM이 필요한 문제인지 먼저 본다”

Hibernate는 aggregate와 entity lifecycle, dirty checking, lazy association, JPA annotation과 Spring Data JPA가 필요한 애플리케이션에 맞습니다. 단순 SQL adapter나 통계 query까지 모두 entity로 표현하면 mapping과 flush 규칙이 오히려 복잡해집니다.

필요한 것시작할 경로선택 기준
SQL·connection·vendor 기능 직접 제어bluetape4k-jdbc작은 adapter, 명시적 mapping과 transaction
JPA entity lifecycle과 Spring Databluetape4k-hibernateaggregate 쓰기 모델과 ORM mapping
Kotlin table·column·SQL DSLbluetape4k-exposedSQL 중심 모델, JDBC 또는 R2DBC runtime
non-blocking persistencebluetape4k-hibernate-reactive, bluetape4k-r2dbcblocking Session을 coroutine으로 감싸지 않음

한 애플리케이션 안에서 Hibernate와 JDBC를 함께 쓸 수 있습니다. 다만 같은 transaction에서 각 기술이 별도 connection을 얻지 않도록 transaction owner를 통일합니다. entity, Exposed row와 JDBC DTO는 persistence boundary 밖에서 섞지 않습니다.

Hibernate는 entity 상태 전이와 연관 mapping이 중심입니다. Exposed는 Kotlin DSL로 SQL 구조를 드러내며 JDBC와 R2DBC 구현을 선택할 수 있습니다.

  • aggregate를 수정한 뒤 dirty checking으로 저장하는 모델이면 Hibernate가 자연스럽습니다.
  • 복잡한 SQL을 코드에 명시하고 row를 DTO로 바로 바꾸면 Exposed가 단순합니다.
  • JPA annotation, Spring Data repository와 기존 운영 도구가 중요한 팀은 Hibernate의 이점이 큽니다.
  • coroutine API가 있다는 사실만으로 JDBC가 non-blocking이 되지는 않습니다. runtime driver까지 확인합니다.

버전은 각 저장소의 library 번호를 직접 맞추지 않고 bluetape4k-dependencies BOM으로 정렬합니다.

중앙 생태계 가이드가 생기면 Hibernate vs Exposed, JDBC→R2DBC 전환과 transaction manager 조합 같은 비교 주제는 그곳에서 확장할 수 있습니다. 이 장은 현재 매뉴얼에서 선택 기준과 실제 학습 자료를 잇는 출발점입니다.