冥想 教程

您所在的位置:网站首页 冥想教程 冥想 教程

冥想 教程

2024-07-12 17:41:38| 来源: 网络整理| 查看: 265

冥想 教程

一年前,我的一位同事向我展示了一个非常有趣的框架,名为Krank (后来更名为Crank,因为先前的名称在德语中表示“病”,对任何框架而言都不是好兆头)。 Crank的目标是简化Java Persistence API 1.0之上的开发。 当时有两个有趣的功能引起了我的注意:

通用的DAO,可即时实现CRUD操作。 这是一个圣杯,只需尝试使用Google的“ Generic DAO”并观看结果:每个人似乎都提供了此类。 是否每个人都成功,我留给读者。 此通用DAO与命名查询之间的绑定机制,使您免于必须自己创建查询对象的负担

不幸的是,自2008年以来Crank没有任何活动,我认为可以肯定地将其分类。 但是,我不知道是否存在链接,一个新项目已经出现,它不仅实现了相同的功能,而且还增加了更多创新的功能。 我最近才发现的这个项目是Hades项目 ,该项目的目的是提高持久层的生产力,特别是对于JPA v2。 现在,它绝对位于我的“热门话题”列表的顶部。

为了评估Hades,我实现了一些非常简单的单元测试:它照原样工作! 让我们概述一下Hades功能。

配置阴影

无论您是否喜欢,Hades的配置都基于Spring。 就我个人而言,我这样做是因为它使配置Hades变得轻而易举。 Hades为此使用了Spring的一个鲜为人知的功能,即创作(有关该主题的更多信息,请参见我之前的Spring创作文章)。 考虑一下我们已经有一个Spring bean配置文件,并且已经定义了实体管理器工厂。 只需将Hades命名空间添加到标题中,并引用DAO类的基本包即可:

由于Hades在配置上使用约定,因此它将:

在配置的包中为每个DAO接口(必须继承自GenericDAO )透明地创建一个Spring bean 在第一个字母设置为小写的非限定类名称下引用它 向其注入默认的实体管理器工厂和事务管理器,前提是它们分别声明为“ entityManagerFactory”和“ transactionManager” 通用DAO

Hades通用DAO支持单个实体和整个表上的标准CRUD操作以及COUNT。 在幕后,它将使用注入的实体管理器工厂来获取对实体管理器的引用,并将后者用于这些操作。

命名查询

使用JPA的命名查询需要最少的样板代码(但仍然需要),并且不提供泛型签名(此后需要转换):

Queryquery=em.createNamedQuery("findUsersByName").setParameter(name); Listresult=query.getResultList();

另一方面,Hades在命名查询和接口的方法名称之间提供了一种绑定机制:

publicinterfaceUserDaoextendsGenericDao{ ListfindUsersByName(Stringname); }

现在,您只需要将DAO注入服务中并按原样使用即可。

通过方法名称进行简单条件查询

您手动编写的大多数命名查询的形式为SELECT * FROM MYTABLE WHERE A = 'a' and B = 'b'或其他简单条件。 Hades可以自动生成并执行与您的方法名称相关的查询。 例如,如果您的DAO的方法签名是List findByLastNameOrAgeLessThan(String name, Date age) ,则Hades将创建关联的查询SELECT * FROM User u where u.lastName = ?1 and u.age < ?2并绑定传递的参数。

尽管我对基于方法名称的此类功能有所警惕,但我意识到它可以确保方法的语义与方法的功能保持一致。 而且,没有任何代码可编写! 确实,我可以很容易地爱上这个功能...

增强您的DAO

曲柄的通用DAO有一个主要缺点。 如果要添加方法,则必须创建一个具体的DAO类,用通用类组成DAO,然后将所有标准CRUD操作委托给通用。 然后,您可以在具体的DAO上编写额外的方法。 至少这是我必须要做的设计,这并不是很复杂,因为可以使用您最喜欢的IDE编码委托,但是这很无聊,并且您最终得到了一个非常长的类,其中包含委派电话。 不是我所说的简单代码。

Hades从一开始就设计了这种行为。 当您需要将方法添加到特定的DAO时,您要做的就是:

用额外的方法创建一个接口 创建一个实现此接口的具体类,并对这些方法进行编码。 由于您使用的是Spring,因此只需将其作为Spring Bean引用即可注入实体管理器工厂 重用简单的DAO接口,并使其扩展您的特定接口以及GenericDao (如之前)

完成:像馅饼一样简单,设计精美。 你还能要求什么呢?

结论

Hades似乎相对较新(2009年4月的第一张票),但看起来很有希望。 在那之前,我可能会看到的唯一“缺陷”是事务管理:默认情况下,CRUD操作是事务性的,尽管恕我直言,事务性应该在服务层中进行处理。 但是,就其带来的所有好处而言,它相对较小。 此外,可以避免使用这种新项目的麻烦,因为它将在不久的将来加入 Spring Data ,我认为这是Hades简单性和功能的很好标志。

对于我而言,我没有用过,只是随便看了一下Hades。 有人在“真实”项目中使用过它吗? 在哪种情况下? 有什么结果? 如果您有任何反馈,我将非常感兴趣。

与往常一样,您可以在此处找到本文的资源。

更进一步: Hades快速入门 Hades文档 Hades Javadocs Hades转向Spring Data发布 Spring Data网站

翻译自: https://blog.frankel.ch/hades-your-next-persistence-angel/

冥想 教程



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭