说起持久层框架, Hibernate和mybatis
(早期版本名为 ibatis)应该不少人都听过或使用过,
虽然无从考证上述两个持久层框架的市场份额, 但在国内应算是最为流行的两个框架.
大名鼎鼎的 Hibernate 可能是很多人接触的第一个持久层框架. 它与Struts、 Spring 组成的SSH组合对于程序猿而言就如偶像团体SHE对于追星族般如雷贯耳……
介绍Hibernate的书籍几乎已经到了泛滥成灾的地步. 本人也曾在多个项目中使用过Hibernate, 其强大的功能确实为程序开发带来了不少便利. 找一本入门的书或网上下载一个入门教程, 跟随教程的步骤相信运行起一个简单的例程估计不是什么大问题, 但随着项目复杂度的增加, 配置和使用也同样变得复杂, 偶尔可能还需要应用一些性能优化方面的"技巧". 面对如此庞大的框架, 不经意间抛出的运行时异常着实让人无从下手.
另一持久层框架:mybatis 同样也拥有不少粉丝, 本人也一度是其拥趸者.
相对于Hibernate,
其拥有另一种风格的配置和使用方式, 但面对那密密麻麻的XML配置文件, 以及事必躬亲的查询配置, 本人开始犯懒了…… 当然, 一些配套的工具或插件可以帮我们干不少繁重的工作, 也许还有一些优秀的辅助工具本人未尝见识, 不敢枉加评论.
说了这么多, 并无贬低上述两个持久层框架的意思, 无论什么工具总有其优缺点, 《人月神话》中有句话叫做“没有银弹”. 这里只是想向大家介绍一个
我认为被国人雪藏的优秀持久层框架: Cayenne.
经过本人在几个小项目中的试用, 个人觉得不错, 初步使用后有些体会, 仅供参考:
(1) 配置文件与Hibernate和mybatis类似, 使用XML文件(Hibernate较新的版本中支持注解方式配置), 里面虽然也是令人头大的密密麻麻的映射关系说明, 但官方提供了可视化的建模工具CayenneModeler, 可自动生成XML配置文件和Java持久层的实体类. 此工具支持数据库反向工程(根据已有的数据库提取表/视图结构和外键关系, 自动生成配置文件
), 同样也支持在建模工具中直接创建数据模型后将表和关系生成到数据库中. 这个工具还是比较强大的, 至少在目前本人实践的几个小项目中没有出现过需要手动去修改XML文档的情况.
(2) 提供多种查询方式:
SelectQuery query =
new
SelectQuery(Artist.class,