Java 利用Hibernate进行数据访问抽象

Java 利用Hibernate进行数据访问抽象,java,hibernate,design-patterns,rdbms,Java,Hibernate,Design Patterns,Rdbms,各位,我们正在用Java开发一个游戏服务器。首先是JPA/SpringData/Hibernate,然后我们放弃了(感谢上帝),我们决定直接使用Hibernate。在这一点上,我可以说,如果需要,我们不会改变数据访问、纯Hibernate和本机查询的技术 因此,我的问题是关于在这一点上正确的数据抽象。使用存储库模式有意义吗?或者,看在上帝的份上,放弃一个抽象的会话和事务处理模式,提供某种工作单元模式 在存储库的情况下将有太多需要自己方法的实现 对于工作单元我们公开hibernate会话,但同

各位,我们正在用Java开发一个游戏服务器。首先是JPA/SpringData/Hibernate,然后我们放弃了(感谢上帝),我们决定直接使用Hibernate。在这一点上,我可以说,如果需要,我们不会改变数据访问、纯Hibernate和本机查询的技术


因此,我的问题是关于在这一点上正确的数据抽象。使用
存储库
模式有意义吗?或者,看在上帝的份上,放弃一个抽象的
会话
事务
处理模式,提供某种
工作单元
模式

  • 存储库的情况下
    将有太多需要自己方法的实现
  • 对于
    工作单元
    我们公开hibernate
    会话
    ,但同时提供灵活性和封装
    事务
    管理
每种方法的优缺点是什么?还有其他建议吗?
DAO
模式是解决方案吗,还是直接使用
Session
更好?

我同意-

会话
是您的数据库抽象;你不需要一个。

那是设计图案墓地中的光芒。谢谢。我真不敢相信艾伦德对那篇文章做了多少坏事。所有那些开发人员仅仅因为不了解一个简单的模式就将自己绑定到ORM上。存储库将持久性抽象为一个整体,而不仅仅是一个rdbms。我想没有人会使用NOSQl db,也没有人需要可以使用Redis或MongoDb以及rdbms的应用程序。@MikeSW我不同意。如果您使用nosql解决方案,则创建存储库。不要因为可能发生或不可能发生的事情而提前限制自己。你的论点是一种过早的优化不,我没有用任何东西限制自己。我真的不明白,当我不受任何东西束缚的时候,我怎么能限制自己。我从内存/假存储库开始,这样应用程序才能正常运行。在对业务层感到满意之后,我将重点放在DAL上,并实现真正的存储库。存储库是DAL和其他层之间的契约。ORM只是一种将表映射到对象的方法。也许这篇文章能帮助你理解我的观点