AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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:431142
用户头像

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

关注

评论

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

域名的命名规则有哪些?注册域名需要注意哪些?

国科云

快速上手:淘宝/天猫商品快递费用API返回值解析

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

HarmonyOS NEXT 底部选项卡功能

威哥爱编程

HarmonyOS ArkTS HarmonyOS NEXT

刘洋,一个爱 drink 的好运程序员|MarsCoders 开发者说

Trae

人工智能 程序员 AI 智能

inBuilder低代码平台新特性推荐-第二十五期

inBuilder低代码平台

低代码 组件

JNPF:开启智能制造新工具时代

不在线第一只蜗牛

低代码 制造业

万界星空科技MES系统与各大系统的集成

万界星空科技

系统集成 mes 万界星空科技mes 生产管理MES系统

HarmonyOS NEXT 开发之ArkTS基础入门

威哥爱编程

HarmonyOS ArkTS HarmonyOS NEXT

10款好用的开源 HarmonyOS 工具库

威哥爱编程

鸿蒙 HarmonyOS HarmonyOS NEXT

SD-WAN:大型集团机构组网方案

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

SD-WAN解决视频会议加速难题

Ogcloud

网络加速 SD-WAN SD-WAN组网 SDWAN 视频会议加速

ArkTS 和仓颉的特性对比与案例

威哥爱编程

HarmonyOS ArkTS 仓颉 HarmonyOS NEXT

iPaaS全面选型指南

RestCloud

系统架构 产品开发 ipaas

做效能度量,如何避免落入“此消彼长”的怪圈?

思码逸研发效能

程序员 DevOps 研发效能 效能度量 业技融合

现场直击!2023望繁信科技产品发布会精彩回顾

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 数字北极星

cad设计绘图工具:AutoCAD(CAD2024)中文特别版

你的猪会飞吗

AutoCAD 2024 Mac版 AutoCAD 2024下载 AutoCAD 2024破解

Vue状态管理库Pinia详解

威哥爱编程

JavaScript Vue Pinia

最大噪音值甚至受法规限制,如何基于LBM算法有效控制风扇气动噪音

Altair RapidMiner

仿真 噪音数据 altair

30个sql调优及高级sql技巧

威哥爱编程

MySQL oracle #SQL

百度AI继续霸榜!百度搜索蝉联国内AI产品第一

极客天地

尝鲜 HarmonyOS NEXT 开发环境搭建

威哥爱编程

鸿蒙 HarmonyOS HarmonyOS NEXT

在 ArkTS 中,如何有效地进行内存管理和避免内存泄漏?

威哥爱编程

鸿蒙 HarmonyOS HarmonyOS NEXT

Go语言对接微信支付与退款全流程指南

不在线第一只蜗牛

golang 微信 开发语言

张博,在压力下保持松弛的研一字节“老员工”|MarsCoders 开发者说

Trae

程序员 AI 开发工具 智能

免费试听 | 深圳测试开发高薪线下周末班即将开班,从自动化到测试平台开发,职场进阶快人一步

测吧(北京)科技有限公司

测试

阿里巴巴商品详情API返回值:电商行业发展的新动力

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

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