Krush:Kotlin 轻量级持久层框架

Krush:Kotlin 轻量级持久层框架

krushIdiomatic persistence layer for Kotlin项目地址:https://gitcode.com/gh_mirrors/kr/krush

项目介绍

Krush 是一个基于 Exposed SQL DSL 的 Kotlin 轻量级持久层框架。它类似于 RequeryMicronaut-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 的类型安全查询和显式数据获取特性尤为重要。

技术优势

  • 代码优先:无需从现有数据库读取模式,直接从代码生成表映射,适合快速开发和迭代。
  • 显式关联获取:通过 leftJoininnerJoin 显式获取关联数据,避免不必要的性能开销。
  • 多数据类型支持:支持多种数据类型,包括类型别名和自定义数据类型。

项目特点

主要特点

  • 轻量级: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司莹嫣Maude

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值