一个支持动态配置、ORM、SQL 重构、跨数据库的 Java 持久层工具。
1jSqlBox 是什么?
jSqlBox 是一个微型的、易学易用的、支持简单的 O-R 映射的持久层工具,目标是用来代替功能强大但过于复杂的 Hibernate,以及一些相对简单但功能不尽人意的持久层工具如MyBatis / JDBC / JDBCTemplate / DButils / EBean / OpenJPA / jFinal / jActiveRecord / ActiveJDBC / JOOQ / BeetlSQL / NutzDao 等。目前 jSqlBox 项目尚未完全开发完成,欢迎有兴趣者试用或加入开发组。
一张对比图显示 jSqlBox 项目的定位和开发目标:(打分仅为个人看法,0 到 5 分制, 0~5分,X 号表示重大缺陷,只要有 X 号即不推荐使用) 。
上表只是对软件架构方面的一个比较。速度、可靠性、开发进度、日志、文档、覆盖测试等指标不在比较范围内,因为开源项目用的人多了,这些属于软件质量上的问题自然会日益改进,但是如果因为设计思路的问题,造成易用性和可维护性上存在缺陷,则无论怎样改进软件质量也是无法弥补的。
2为什么要开发jSqlBox?
因为作者发现了一种利用 Java 初始块来代替 XML 和 Annotation 配置的方法(即"BOX"模式,详见 jBeanBox 项目),凡是利用 XML 和 Annotation 作为配置文件的项目,都存在着 XML 和 Annotation 不够灵活,配置文件不能动态生成、修改的问题,这对于需要动态生成或修改配置的场合是个致命缺陷。作者在完成 jBeanBox 项目后,发现 Hibernate 和 MyBatiis 这两个流行的持久层工具也都存在这个问题,这是 jSqlBox 项目产生的原因。简单说, jSqlBox 的开发目标就是一个支持动态配置的持久化工具。这是一个先有了锤子,再找钉子的项目, Hiberante 和 MyBatis 就是这个项目的两个钉子。
开发之前,作者研究了 Hibernate 存在的一些问题,主要归纳如下:
jSqlBox 虽然最初目的是给 Hibernate 加一个动态配置,但考虑到实体容器开发及使用的复杂性,以及个人水平有限,借鉴了 MyBatis 的做法,即在运行期如需用到 OR 映射时,在程序中动态配置并完成 OR 转换。与 MyBatis 不同的是 jSqlBox 在易用性上作了极大改进,取消了繁琐的 XML 配置和注解,简单的 CRUD 之类 SQL 更不必手工创建。与目前流行的一些小众持久层工具相比, jSqlBox 则胜在体积虽小功能齐全,例如:无 XML、无注解、动态配置、CRUD 方法、ORM、动态关联、越级查找关联、跨数据库、分页、多种主键生成、对象及查询缓存、支持 SQL重构、首创 SQL 内直接写参数等,很多微型持久层工具都缺少若干项这些对易用性、可维护性非常关键的特性。
3主要特点
4jSqlBox缺点