【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

Polyforms——减少 DAO 代码重复

  • 2008-10-29
  • 本文字数:924 字

    阅读完需:约 3 分钟

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

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

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

复制代码
<span>@NamedQueries</span><span>({</span><span><br></br></span><span>    </span><span>@NamedQuery</span><span>(</span><span>name </span><span>=</span><span> </span><span>"User.findByCreator"</span><span>,</span><span> query </span><span>=</span><span> </span><span>"select u from User u where u.creator = :creator"</span><span>),</span><span><br></br></span><span>})</span><span><br></br></span><span>public</span><span> </span><span>class</span><span> </span><span>User</span><span> </span><span>{</span><span><br></br>   </span><span>...</span><span><br></br></span><span>}</span>

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

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

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

EntityRepository

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

所有这些连接都是通过

Spring framework

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

Polyforms 支持的其他功能包括:

  • 跟踪信息(创建者、创建日期、修改者、修改日期)的自动管理
  • 透明的分页支持
  • 通过注释定义事务边界
  • 域事件模型,分离持久化事件和应用功能。

更多信息请访问

Polyforms wiki

查看英文原文: Polyforms - Reduce DAO Code Duplication

2008-10-29 07:43894
用户头像

发布了 501 篇内容, 共 248.3 次阅读, 收获喜欢 57 次。

关注

评论

发布
暂无评论
发现更多内容

Job Model

·大蕾同学

如果公司要招⼀个⾼级版你

向日葵

产品经理训练营

把我自己做成产品交付给目标岗位

havaguday

产品训练营作业1-李沂秾

克比

HDFS杂谈:数据读写原理

罗小龙

hadoop hdfs 28天写作

极客大学产品训练营作业(第1周)

朱航

用户增长产品经理招聘帖

梁媛

产品经理

产品经理岗位需求总结

Geek_a32093

产品经理岗位对比分析

DwToretto

第一章学习总结

Kalman

产品经理 产品经理训练营

产品经理第一周第二课总结(第一课手贱删除了,回头再补)

克比

第一节课总结

Jove

应聘&招聘

skylar

极客时间产品训练营-第一周学习总结(上)

Trigger

极客大学产品经理训练营

甲方日常 87

句子

工作 随笔杂谈 日常

如何给产品团队更好地提出设计反馈

Justin

心理学 产品设计 团队协作 28天写作

0互联网工作经验的我,面对字节跳动产品岗1723个招聘岗位慌了起来….

Geek_fe4aa7

产品经理训练营 极客大学产品经理训练营

对产品岗位的研究和一些看法

Dylan Zhu

HTML(三)——在网页中使用图像img

程序员的时光

程序员 28天写作

Dubbo源码解析-开始篇

冰三郎

Java 分布式 dubbo RPC

产品经理调研备忘录(何先生的梦呓)

小蜜蜂

产品经理 能力模型 产品经理训练营 何先生的梦呓 数据能力

assignment 01

Jove

Week1:按图索骥—从JD入手做能力建设

Y.

产品 产品经理训练营 极客大学产品经理训练营 求职岗位要求

【产品经理训练营】【作业】01

anyou

在线教育产品经理 & 物流行业的产品经理

哈撒啦岛

产品经理 产品经理训练营

产品经理训练营_Chapter1

芃芃

产品经理训练营

行业产品经理岗位分析

Shine

产品

产品经理岗位对比

思亭

ACC是如何实现的(28天写作 Day12/28)

mtfelix

自动驾驶 28天写作

产品训练营-作业1

简小一

第一章作业:认识产品经理

隋泽

产品经理训练营

Polyforms——减少DAO代码重复_Java_R.J. Lorimer_InfoQ精选文章