Polyforms——减少DAO代码重复

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支持的其他功能包括:

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

透明的分页支持

通过注释定义事务边界

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

时间: 2024-12-23 21:30:18

Polyforms——减少DAO代码重复的相关文章

减少Scala中的代码重复

所有的函数都被分割成通用部分,它们在每次函数调用中都相同,以及非通用部分,在不同的函数调用中可能会变化.通用部分是函数体,而非通用部分必须由参数提供.当你把函数值用做参数时,算法的非通用部分就是它代表的某些其它算法.在这种函数的每一次调用中,你都可以把不同的函数值作为参数传入,于是被调用函数将在每次选用参数的时候调用传入的函数值.这种高阶函数:higher-order function--带其它函数做参数的函数--给了你额外的机会去组织和简化代码. 高阶函数的一个好处是它们能让你创造控制抽象从而

php使用类继承解决代码重复的问题

 这篇文章主要介绍了php使用类继承解决代码重复的问题,实例分析了继承的原理与使用技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了php使用类继承解决代码重复的问题.分享给大家供大家参考.具体分析如下: 继承直白地说就是给一个类建一个或多个子类,要创建子类就必须在类声明中使用 extends 关键字,新类名在前,extends 在中,父类名在后. 下例中,我们创建两个新类,BookProduct 和Cdproduct ,它们都继承自 ShopProduct 类. 代码如下:

radio button-C#编程 其中radioButton控件48个,button控件24个,请教各位大牛,如何简化编写,功能如下代码重复24次。

问题描述 C#编程 其中radioButton控件48个,button控件24个,请教各位大牛,如何简化编写,功能如下代码重复24次. 1C private void radioButton1_CheckedChanged(object sender EventArgs e) { if (radioButton1.Checked == true) button1.BackColor = Color.Red; } private void radioButton2_CheckedChanged(o

ajax后台代码重复执行

问题描述 ajax后台代码重复执行 10C 自己写个小程序遇到个奇葩问题在点击按钮发送ajax请求查询数据的时候数据能正常显示但是在火狐控制台有报错报错原因是说语法错误ajax返回内容为 ""请求参数不正确!"" 这句话是我在Controller层返回的.如果参数缺失才会提示这个.但是我检查后发现并不是参数缺失而且请求被重复提交第二次提交参数都丢失了有点像被重定向了.第一次数据有正常返回在页面显示但是不知道为什么会又提交一次并且网络请求里面只有一次请求!!! js代

php使用类继承解决代码重复的问题_php技巧

本文实例讲述了php使用类继承解决代码重复的问题.分享给大家供大家参考.具体分析如下: 继承直白地说就是给一个类建一个或多个子类,要创建子类就必须在类声明中使用 extends 关键字,新类名在前,extends 在中,父类名在后.   下例中,我们创建两个新类,BookProduct 和Cdproduct ,它们都继承自 ShopProduct 类. 复制代码 代码如下: <?php header('Content-type:text/html;charset=utf-8'); // 从这篇开

利用预编译指令防止代码重复编译

 看下面一段代码     #include "test.h"   //看到这句我们重复了 三次 按照我们以往的编写 我们可能认为 他会出现变量函数 等重复定义的错误   在一个文件中这样写显然是不好  我这里是做演示 因为我们在大型项目开发中很有可能的重复包含 同一个头文件 为了防止错误的发生我们要再 头文件中利用#idndef  #ifdef 等预编译指令 来处理代码   #ifdef identifier #ifndef identifier   identifier标示符 可以使

如何用CodeSmith减少代码重复编写

  上次简单介绍了下CodeSmith,今天做些详细介绍(转),希望可以对大家有帮助:CodeSmith 是一种语法类似于asp.net的基于模板的代码生成器,程序可以自定义模板,从而减少重复编码的劳动量,提高效率.     安装CodeSmith 2.6注册后发现有两个可运行程序CodeSmith Studio.exe和CodeSmith Explorer.exe     CodeSmith Studio.exe用来创建自定义模板     CodeSmith Explorer.exe用来导入模

在SpringSide2.0中使用Tiles模板以减少网页代码的重复

在Web开发中,网页代码的重复是一个不可避免的问题.我们做的网站,所有的页面都会 有一个比较统一的页面布局,只有和数据有关的部分会不同.如果每一个页面都包含完整的 HTML代码,那么就会造成很多的重复代码,而且在修改那些公共部分(如页头和页尾)的时 候,要对多个页面进行修改,非常的麻烦. 当然,解决这个问题的办法有很多,在ASP.NET中,有一种叫做母板页的机制可以做到, 在Java开发中,也有很多的办法,最简单的就是使用在jsp文件中使用include指令,也可以 使用其它很多的第三方模板库.

PHP面向对象继承用法详解(优化与减少代码重复)_php技巧

本文实例讲述了PHP面向对象继承用法.分享给大家供大家参考,具体如下: 继承 先看两个类 <?php class CdProduct { public $playLength; // 播放时间 public $title; public $producerMainName; public $producerFirstName; public $price; function __construct( $title, $firstName, $mainName, $price, $playLeng