快速业务通道

Polyforms——减少DAO代码重复 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

Polyforms——减少DAO代码重复

时间:2011-02-27 infoq 译: 崔康

Polyforms项目的目标是剔除用于绑定数据访问对象和底层持久化API的重复代码。该框架采用的办法是自动实现开发人员定义的Repository接口上的服务方法。接口中定义的方法默认通过命名规则连接到数据库操作上。例如,项目wiki上讨论了如何为User实体对象实现一个存储。首先,存储的API必须定义成:

public interface UserRepository extends EntityRepository<User, String> {   @Finder   List<User> findByCreator(User creator); }

@Finder注释标记了Polyforms的方法。接下来,不要实现UserRepostiory,而是通过另外的注释在User实体中提供一个匹配Hibernate的查询。

@NamedQueries({   @NamedQuery(name = "User.findByCreator", query = "select u from User u where u.creator = :creator"), }) public class User {  ... }

根据文档,用于查找查询语句的命名规则是基于方法名和实体名:

命名查询的映射规则是[name of Named Query] = [name of Entity].[name of method]。你可以通过@Finder指定命名查询的名字,如@Finder("findUserByName"),然后命名查询的名字会是“User.findUserByName”。

除了@Finder注释,还有@Updater和@Counter分别提供了对大规模更新和查询计数的支持。

EntityRepository

父接口已经支持保存单实体、删除和通过标识符获取的功能。

所有这些连接都是通过

Spring framework

完成的,并依赖Spring的切面来提供API的动态实现。

Polyforms支持的其他功能包括:

跟踪信息(创建者、创建日期、修改者、修改日期)的自动管理

透明的分页支持

通过注释定义事务边界

域事件模型,分离持久化事件和应用功能。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号