使用 Spring Hibernate 使用注释编写更少的 DAO

2024-02-24

我的 Spring+Hibernate 配置文件很小而且非常紧凑。我使用自动扫描来查找我的模型实体/DAOS。

我不想为层次结构中的每个实体编写 DAO + DAOImpl。

有些可能有资格拥有自己的,例如,如果他们与其他实体有复杂的关系并且需要的不仅仅是基本的 CRUD 功能。但对于其余的...

有什么办法可以规避事实上的标准吗?

比如说,类似于通用 DAO,例如:

http://www.ibm.com/developerworks/java/library/j-genericdao/index.html http://www.ibm.com/developerworks/java/library/j-genericdao/index.html

然后我可以做类似的事情

  GenericDao dao = appContext.getBean("genericDao");
  dao.save(car);            
  dao.save(lease);

这可以通过注释实现吗?我不想在 xml 中配置任何内容。如果我不能执行上述操作,是否仍然可以拥有一个 GenericDaoImpl.java ,其中包含以下内容:

 @Repository("carDao")
 @Repository("leaseDao")
 class GenericDaoImpl extends CustomHibernateDaoSupport implements GenericDao {
 ...
 }

and then

  GenericDao dao = appContext.getBean("carDao");
  dao.save(car);            
  dao = appContext.getBean("leaseDao"); //carDao is garbage coll.
  dao.save(lease);

这实用吗?


使用泛型,你可以尝试这样的事情:

@Repository
@Transactional
public class GenericDAOImpl<T> implements GenericDAO<T> {

    @Autowired
    private SessionFactory factory;

    public void persist(T entity) {
        Session session = factory.getCurrentSession();
        session.persist(entity);
    }

    @SuppressWarnings("unchecked")
    public T merge(T entity) {
        Session session = factory.getCurrentSession();
        return (T) session.merge(entity);
    }

    public void saveOrUpdate(T entity) {
        Session session = factory.getCurrentSession();
        session.saveOrUpdate(entity);
    }

    public void delete(T entity) {
        Session session = factory.getCurrentSession();
        session.delete(entity);
    }

}

内容可能不同,但大体思路是适用的。

然后,您应该能够使用以下命令在控制器和服务类中自动装配 DAO

@Autowired
private GenericDAO<Car> carDao;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring Hibernate 使用注释编写更少的 DAO 的相关文章

  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 是否可以使用 Flying Saucer (XHTML-Renderer) 将 css 解析为类路径资源?

    我正在尝试将资源打包到 jar 中 但我无法让 Flying Saucer 在类路径上找到 css 我无法轻松构建 URL 来无缝解决此问题 https stackoverflow com questions 861500 url to l
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • 在 SWT/JFace RCP 应用程序中填充巨大的表

    您将如何在 SWT 表中显示大量行 巨大是指超过 20K 行 20 列的东西 不要问我为什么需要展示那么多数据 这不是重点 关键是如何让它尽可能快地工作 这样最终用户就不会厌倦等待 每行显示某个对象的实例 列是其属性 一些 我想使用 JFa
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • 如何使用play框架上传多个文件?

    我在用play framework 2 1 2 使用java我正在创建视图来上传多个文件 我的代码在这里 form action routes upload up enctype gt multipart form data
  • 将 Apache Camel 执行器指标发送到 Prometheus

    我正在尝试转发 添加 Actuator Camel 指标 actuator camelroutes 将交换 交易数量等指标 发送到 Prometheus Actuator 端点 有没有办法让我配置 Camel 将这些指标添加到 Promet
  • 配置“DataSource”以使用 SSL/TLS 加密连接到 Digital Ocean 上的托管 Postgres 服务器

    我正在尝试托管数据库服务 https www digitalocean com products managed databases on 数字海洋网 https en wikipedia org wiki DigitalOcean 创建了

随机推荐

  • 如何使用需要从命令提示符/批处理文件引用的参数来调用 PowerShell Start-Process 命令?

    我在尝试执行一个命令时收到此错误PowerShell 我在尝试着exec这个命令 powershell exe Start Process FilePath C Windows System32 attrib h s CD Verb run
  • 为什么我的终端不能正确输出 unicode 字符?

    例如 我的终端是这样做的 echo e xE2 x98 xA0 我希望它能做到这一点 echo e xE2 x98 xA0 为什么 如何让我的终端输出正确的 unicode 符号 我在 Arch Linux 上使用 Gnome 3 的终端
  • 纠正使用 jQuery 动画文本不透明度时的 IE Cleartype/Filter 问题

    大家好 我遇到了一个 IE 问题 这似乎是一个众所周知 常见的错误 我有一个用 jQuery 构建的图像幻灯片 可以在其他浏览器中完美运行 然而 在 IE 中 我遇到了一个问题 即幻灯片运行一次后文本就会消除锯齿 也就是说 如果幻灯片中有三
  • Chrome 扩展:chrome.storage 未定义

    我将以下代码添加到我的其他工作的 Google Chrome 扩展中 var storage chrome storage console log storage is storage var bookmarks chrome bookma
  • 使用 awk 和变量正则表达式提取两个模式之间的行

    我正在寻找一种方法来使用 awk 提取两个模式之间的行 变量 每个部分结束于下一个部分的开始处 示例文件 SECTION 1 info 1 info 2 info 3 SECTION 2 info 4 info 5 info 6 SOMET
  • 从 .gitmodules 恢复 git 子模块

    我有一个文件夹 它是一个 git 存储库 它包含一些文件和 gitmodules 文件 现在 当我这样做时git init进而git submodule init 后面的命令输出什么也没有 如何帮助 git 查看 gitmodules 文件
  • sympy 将分数与变量分开

    使用 sympy 如何将分数与变量分开 Mul Fraction 3 5 Pow K Integer 2 2 3 K 5 to 3 2 K 5 我知道这个简化版本还不错 但是当我有很大的方程时 它会变得混乱 我不太熟悉漂亮的打印或 LaTe
  • Maven 过滤

    我正在使用 Maven 3 x 在 Hudson 中构建 Android 应用程序 作为构建的一部分 我使用过滤 配置文件对 strings xml 文件进行文本替换 因此 在 strings xml 中 我将包含以下条目
  • 3D 绘图中 y 轴和 z 轴的交换位置

    默认情况下 在 3D 中绘制一组点 或其他内容 matplotlib 找到z垂直轴 如下所示 代码如下 我需要交换z and y轴 使得y轴垂直显示 我环顾四周但找不到办法告诉matplotlib去做这个 Add 我不想诉诸于交换数据和标签
  • 好友列表:关系数据库表设计

    所以 好友列表的现代概念是 假设我们有一个名为 Person 的表 现在 该 Person 需要有许多好友 其中每个好友也属于 person 类 构建关系最明显的方法是通过连接表 IE buddyID person1 id person2
  • Shiny布局,是否可以在Shiny中拥有左侧和骑侧边栏布局?

    在 Shiny 中可以有这样的布局吗 我理想地想要一个左侧和右侧边栏 我已经看到了一些解决方案shinydashboardPlus但这不正是我所追求的 我有一个与此示例结构类似的应用程序 mychoices lt c pick me A p
  • 如何在此处的集群地图中显示重复的制造商

    我在这里使用地图并使用聚类 但我在显示坐标相同 dublicate 的制造商时遇到问题 当我放大聚类时 不幸的是 制造商不可见 但聚类仍然可见 当集群缩放时如何显示这些标记 我的集群选项如下 var clusteredDataProvide
  • 使用 Rails5 和 ActionCable 时不允许请求来源:http://localhost:3001

    Rails 5 0 0 beta2 中尝试使用 ActionCable 的应用程序出现服务器问题 使用 localhost 3000 效果很好 因为这是大多数 ActionCable 的默认设置 但是如果我尝试在端口 3001 上运行 Ra
  • 有没有办法在 Azure DevOps 中创建组织仪表板?

    我们的团队目前正在使用 DevOps 并对一切的运行情况感到非常满意 我们在每个项目中设置了仪表板来跟踪工作项和冲刺 并希望在组织级别执行相同的操作 有没有办法创建组织中多个项目的总体概述 不幸的是 我们无法创建组织级别的仪表板 它不受支持
  • 将颜色从 Javascript 传递到片段着色器

    我目前正在学习webgl 有一个问题 我正在尝试制作一个三角形并将颜色信息从 js 文件传递 到片段着色器中 以下是我的js代码 var VSHADER SOURCE attribute vec4 a Position n attribut
  • Python - 通常如何使用递归方法将实例变量作为隐式参数传递给方法

    我在将对象的实例变量传递给实例方法时遇到问题 我在其他地方搜索过这个 但我一直找到的只是有关如何使用对象将对象传递给方法的信息self 我已经知道了 或者只是关于类和实例方法之间的一般差异的教程 但没有具体回答我的问题 我的问题的答案肯定存
  • CMake graphviz 自动生成

    我知道通过 CLI 生成 CMake 项目依赖关系图的常用方法 cmake graphviz file 但是有没有一种方法可以通过在 CMakeList 中设置标志或命令来自动生成它 这个想法是让 CMakeLists txt 本身触发图形
  • PHP递归函数返回值[重复]

    这个问题在这里已经有答案了 我在 PHP 中编写了一个递归函数来裁剪文本 裁剪后的文本将 附加到末尾 未裁剪的文本将以其原始状态返回 如果文本适合最大宽度 则该方法有效 但是 如果它不适合给定的宽度 该函数将不会返回值 但它应该返回 看来整
  • 更改默认拨号器的请求在某些设备上不显示系统对话框

    我们的应用程序需要成为默认拨号器应用程序 也称为 默认电话处理程序 默认呼叫应用程序 以便它能够在 Android 下拨打电话新的权限策略 https support google com googleplay android develo
  • 使用 Spring Hibernate 使用注释编写更少的 DAO

    我的 Spring Hibernate 配置文件很小而且非常紧凑 我使用自动扫描来查找我的模型实体 DAOS 我不想为层次结构中的每个实体编写 DAO DAOImpl 有些可能有资格拥有自己的 例如 如果他们与其他实体有复杂的关系并且需要的