경량 ORM:
•JPA와 같은 무겁고 복잡한 ORM보다 단순하게 설계되어 있음.
•SQL Mapper와는 다른 고수준의 API를 제공하면서도, SQL 작성에 유연성을 제공.
2.Entity Cache 지원:
•트랜잭션 단위로 엔티티 캐싱을 지원. (JPA와 유사하지만 구현 방식은 다를 수 있음.)
•캐시를 활용해 중복 데이터 로딩 방지.
3.DSL 지원:
•QueryDSL처럼 DSL 기반으로 직관적인 쿼리 작성을 지원.
•QClass는 QueryDSL처럼 자동 생성되지 않으며, 수동으로 선언하여 사용.
4.DAO 패턴:
•DAO(데이터 접근 객체) 패턴을 지원하며, Lazy와 Eager 로딩 전략 제공.
•기본적으로 Lazy 로딩을 사용하되, Eager 로딩 시 JOIN 쿼리 하나만 사용하지 않고, 다중 쿼리로 참조 객체를 로딩하여 N+1 문제를 방지.
5.Single Thread 기반:
•기본적으로 트랜잭션은 단일 스레드 환경에서 실행.
•Non-blocking Framework와 사용 시 I/O는 blocking될 수 있으나, Coroutine을 사용하여 비동기 작업 처리 가능.
6.Native Query 지원:
•필요시 네이티브 SQL 쿼리를 직접 작성 및 실행 가능.
7.Batch Update/Insert 지원:
•MySQL에서 JPA가 Identity Generator와 Context 문제로 지원하지 못하는 Batch 작업을 지원.
8.Spring @Transactional 지원:
•Spring 프레임워크의 @Transactional을 사용해 트랜잭션 관리 가능.
•트랜잭션 격리 수준(Isolation Level) 지정 가능.
•Propagation Level은 지원하지 않으나, NestedTransaction 플래그를 활성화해 부분적인 롤백 가능.
9.Multiple Datasource 지원:
•여러 데이터소스와 함께 사용할 수 있는 기능 지원.