Krush:Kotlin 轻量级持久层框架
krushIdiomatic persistence layer for Kotlin项目地址:https://gitcode.com/gh_mirrors/kr/krush
项目介绍
Krush 是一个基于 Exposed SQL DSL 的 Kotlin 轻量级持久层框架。它类似于 Requery 和 Micronaut-data jdbc,但专为 Kotlin 和不可变数据类设计,能够以惯用的方式工作。
Krush 的核心在于其编译时 JPA 注解处理器,该处理器会自动生成 Exposed DSL 表和对象映射,使开发者能够立即开始编写类型安全的 SQL 查询,而无需编写样板基础设施代码。
项目技术分析
技术栈
- Exposed SQL DSL:Krush 基于 JetBrains 的 Exposed SQL DSL,提供了一种类型安全的 SQL 查询方式。
- JPA 注解处理器:通过编译时注解处理,自动生成表映射和对象映射代码。
- Kotlin:专为 Kotlin 设计,支持不可变数据类和惯用 Kotlin 代码风格。
核心功能
- 类型安全的 SQL 查询:使用类似 SQL 的 DSL 进行类型安全的查询,无需字符串或方法名解析。
- 最小化对领域模型的修改:只需在现有领域模型上添加注解,无需扩展外部接口或使用特殊类型。
- 显式数据获取:在查询中显式指定需要获取的数据,避免额外的数据加载。
- 无运行时魔法:没有代理、延迟加载等运行时机制,只有包含从数据库中获取的数据的普通数据类。
- 实用性强:易于上手,同时在复杂场景(如关联、分组查询)中也非常强大。
项目及技术应用场景
应用场景
- Kotlin 项目:适用于所有使用 Kotlin 编写的项目,尤其是那些需要与数据库交互的项目。
- 微服务架构:在微服务架构中,Krush 可以帮助开发者快速实现数据持久化,同时保持代码的简洁和可维护性。
- 数据密集型应用:对于需要频繁与数据库交互的数据密集型应用,Krush 的类型安全查询和显式数据获取特性尤为重要。
技术优势
- 代码优先:无需从现有数据库读取模式,直接从代码生成表映射,适合快速开发和迭代。
- 显式关联获取:通过
leftJoin
和innerJoin
显式获取关联数据,避免不必要的性能开销。 - 多数据类型支持:支持多种数据类型,包括类型别名和自定义数据类型。
项目特点
主要特点
- 轻量级:Krush 是一个轻量级的持久层框架,专注于提供最基本的数据库操作功能,没有复杂的 ORM 特性。
- 类型安全:通过 Exposed SQL DSL 提供类型安全的 SQL 查询,减少运行时错误。
- 显式数据获取:在查询中显式指定需要获取的数据,避免不必要的延迟加载和数据冗余。
- 无运行时魔法:没有代理、延迟加载等运行时机制,代码更直观,性能更可控。
与其他框架的对比
- 与 Requery 和 Micronaut-data jdbc 相比:Krush 专为 Kotlin 设计,支持不可变数据类,代码风格更符合 Kotlin 的惯用法。
- 与传统 ORM 框架相比:Krush 没有复杂的 ORM 特性(如延迟加载、脏检查、缓存等),更适合需要简单、直接数据库操作的场景。
总结
Krush 是一个专为 Kotlin 设计的轻量级持久层框架,通过编译时注解处理器自动生成表映射和对象映射代码,使开发者能够快速开始编写类型安全的 SQL 查询。其显式数据获取和无运行时魔法的特点,使得代码更直观、性能更可控。无论是 Kotlin 项目、微服务架构,还是数据密集型应用,Krush 都是一个值得尝试的选择。
如果你正在寻找一个简单、高效且类型安全的 Kotlin 持久层解决方案,不妨试试 Krush,它将为你带来不一样的开发体验。
krushIdiomatic persistence layer for Kotlin项目地址:https://gitcode.com/gh_mirrors/kr/krush