开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

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

关注

评论

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

如何在Excel中查找并高亮数据

Geek_249eec

C# .net Excel VB.NET

用Docker在本地搭建nginx静态服务器&反向代理

致知Fighting

Java Docker 后端

关系型数据库的架构演变

石臻臻的杂货铺

数据库 架构

打造自主可控云网算力,天翼云为湖南数字经济发展注入新动能

天翼云开发者社区

人工智能 LLM 革命前夜:一文读懂ChatGPT缘起的自然语言处理模型Transformer

阿里技术

人工智能 自然语言处理

OpenYurt v1.2 亮点速览丨云边流量峰值相比原生 K8s 降低 90%

阿里巴巴云原生

阿里云 开源 容器 云原生 openyurt

天翼云联合国际咨询机构IDC发布《中国医疗云建设与应用白皮书》

天翼云开发者社区

90%企业在探索的敏捷开发怎么做?极狐GitLab总结了这些逻辑与流程

极狐GitLab

DevOps 敏捷开发 持续集成 CI/CD 持续交付

了解医疗上云门道,尽在“共铸国云 红云行业思想汇”!

天翼云开发者社区

git使用ssh

刘旭东

git SSH

关于DataLeap中的Notebook,你想知道的都在这

字节跳动数据平台

数据库 大数据 数据治理 数据研发 企业号 2 月 PK 榜

serverless与容器优缺点

天翼云开发者社区

serverles

快速开发光伏电站数字孪生运维系统——实践类

阿里云AIoT

阿里云 物联网 IoT

安全可信| 首批!天翼云智算平台率先通过可信算力服务评估

天翼云开发者社区

PostgreSQL:内存结构

天翼云开发者社区

Teradata的离开,是国内ToB服务转变的信号

ToB行业头条

创建MQTT连接时如何设置参数?

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 连接参数

瓴羊Quick BI可视化功能,满足企业的数据分析需求

对不起该用户已成仙‖

聚焦现代化应用安全,F5的安全扩增,稳了!

F5 Inc

架构 安全 API 应用

eKuiper 1.8.0发布:零代码实现图像/视频流的实时AI推理

EMQ映云科技

物联网 IoT 视频流 流式计算 企业号 2 月 PK 榜

LED显示屏怎么翻新?

Dylan

LED LED显示屏 led显示屏厂家

火山引擎数智平台的这款产品,正在帮助APP提升用户活跃度

字节跳动数据平台

大数据 客户数据平台 客户 客户数据 企业号 2 月 PK 榜

百分点科技宣布接入百度文心一言能力 数据科学基础平台获领先AI技术加持

百分点科技技术团队

程序员超级干货书单:技术人必看

引迈信息

程序员 敏捷开发 书单

墨天轮【第二届数据库掌门人论坛】圆满收官 | 含嘉宾精彩观点回顾

墨天轮

数据库 Serverless TiDB oceanbase 国产数据库

大模型为什么是深度学习的未来?

GPU算力

人工智能 深度学习 大模型

腾讯内网“Redis 深度(全彩版小册)”限时开源!面面俱到太全了

架构师之道

Java 面试 架构师

直播 | StarRocks 实战系列第二期--导入优化&问题排查

StarRocks

数据库 开源

英特尔研究院探索负责任的生成式AI,让AI应用真正惠及大众

科技之家

使用 Ingest Pipeline 在 Elasticsearch 中对数据进行预处理

Se7en

C#/VB.NET 如何在不同工作簿之间复制单元格范围

在下毛毛雨

C# .net Excel 文档操作

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