Java 带Hibernate的活动记录模式
我正在使用SpringMVC+JSP+Hibernate开发一个相当简单的web应用程序。为了开始,我遵循了本教程: 这工作正常,但我担心代码的冗长。为了支持用户实体,我们还有UserDao、UserDaoImpl、UserService和userserviceinmpl。我知道,对于大型企业应用程序,您可能实际上需要这样做。但对于我的简单web应用程序来说,这是不必要的(也是不必要的)复杂性。我可以用Python更简单地实现这一切 那么,有没有办法让Hibernate使用活动记录设计模式?我希望做的事情是让用户从基类继承像get()这样的方法。所以你可以使用User.get(用户名) 我对使用不同的ORM休眠持开放态度;我刚开始这么做,因为这似乎是常见的选择。而且据说它与我熟悉的Python SQLAlchemy类似 我也对更多的开箱即用的解决方案持开放态度,也许是一个可以自动生成DAO类的IDE插件 任何建议,谢谢Java 带Hibernate的活动记录模式,java,spring,hibernate,orm,Java,Spring,Hibernate,Orm,我正在使用SpringMVC+JSP+Hibernate开发一个相当简单的web应用程序。为了开始,我遵循了本教程: 这工作正常,但我担心代码的冗长。为了支持用户实体,我们还有UserDao、UserDaoImpl、UserService和userserviceinmpl。我知道,对于大型企业应用程序,您可能实际上需要这样做。但对于我的简单web应用程序来说,这是不必要的(也是不必要的)复杂性。我可以用Python更简单地实现这一切 那么,有没有办法让Hibernate使用活动记录设计模式?我
Paul看看springroo,它使用活动记录模式 或者(在看了roo之后)您可以自己构建它。您所需要的只是:
- @可在实体上配置以启用注入(这也需要真正的AspectJ)
您可以使用它注入EntityManager或hibernateSession,我想您可能正在寻找它。因为您指的是Python,所以jOOQ可能比Hibernate更适合,因为它更以SQL为中心 Java中另一个流行的ActiveRecord实现是,据我所知,它提供了您正在通过插装寻找的方法。他们网站上的一个例子:
List<Person> people = Person.where("name = 'John'");
Person aJohn = people.get(0);
String johnsLastName = aJohn.get("last_name");
List people=Person.where(“name='John'”);
Person aJohn=people.get(0);
字符串johnsLastName=aJohn.get(“姓氏”);
(当然,这个答案是有偏见的,因为我是jOOQ开发人员)
接口使模拟对象的测试更容易,我想如果你不打算使用模拟的话,你可以去掉它们
我有一个用于简单get/set的通用方法-youdon;除非涉及多个实体,否则不需要服务类别
为了进一步减少您编写的代码,请看一看a,尽管我想这可能有点过头了。I don;我看不出这是如何回答这个问题的。问题是:“那么,有没有办法让Hibernate使用活动记录设计模式?”Roo是一个例子,说明了如何使用spring构建活动记录体系结构。大多数人学习良好的表单示例。你有没有向实体添加configuravble以启用其注入的示例?@NimChimpsky:启动roo shell,创建一个新项目,配置设置,让roo创建一个实体(谷歌搜索任何roo教程并遵循第一步),然后查看代码(包括roo生成的aspectj文件)-我不想显得不礼貌,但我在手机上写下了这篇文章(在爪哇岛度假),所以我只能写这些说明了。哇,roo看起来太棒了!我现在正在玩它。我想我可能不会在这个项目中使用它,但知道它很好。谢谢,谢谢,这是一个很好的方法,可以简化我现在拥有的东西,而无需进行重大更改。谢谢……我决定继续使用Hibernate,但它是g很高兴了解这些。jOOQ看起来是一个很酷的项目。顺便说一句,我在SQLAlchemy MS-SQL支持方面做了很多工作,所以我对您作为ORM开发人员的痛苦有了一些了解:-)@paj28:没有痛苦。这很有趣!我特别喜欢SQL Server,它是一个很棒的数据库!
UserDao, UserDaoImpl, UserService and UserServiceImpl