我有一个HibernateUtil类,它是本书(Hibernate in action
)类的标准
它获得一个会话,刷新并关闭它。开始,提交和回滚事务并构建sessionFactory
目前,错误的是,我们的包中称为HibernateSessionFactory
我想把它重构为一个更合适的名字,但HibernateUtil这个名字让我感到困扰,因为我想选择一个更通用的名字,如PersistentManagerUtil
。
关于这样的名字有一个很好的java约定或共识吗?
修改 我想让它更通用的原因是我想尽量减少特定ORM实现的“曝光”。该类的大多数公共方法都具有void作为返回类型,因此它们不返回Hibernate类/接口。唯一的例外是getSession,它返回一个org.hibernate.Session。我之所以考虑这个方向,是因为我想切换到JPA并将hibernate作为实现,所以有更多的自由。 为什么不将其更改为EntityManagerUtil?就像在hibernate的文档中一样,他们说EntityManager与Session是同等的,并且EntityManagerFactory与HibernateSessionFactory等效。
提前致谢,
Ittai
答案 0 :(得分:2)
不要让它更通用,除非该类除了与Hibernate交谈之外还可以做任何事情。它在公共API中使用Hibernate类和接口,对吗?只要它是特定于Hibernate的(在接口和实现中),最好让每个人都知道它的名字。
HibernateUtil
听起来不错。
该类的大多数公共方法都具有void作为返回类型,因此它们不返回Hibernate类/接口。唯一的例外是getSession,它返回一个org.hibernate.Session。我之所以考虑这个方向,是因为我想切换到JPA并将hibernate作为实现,所以有更多的自由。
嗯,您可以在取消JpaUtil
后将名称更改为getSession
。
答案 1 :(得分:0)
你的课程是特定于Hibernate的,因此以其名义拥有它是件好事。
它会创建会话,还是从其他地方获取?如果它创造了它们,工厂也是一个好名字。如果没有,听起来它管理Sessions,那么'HibernateSessionManager'怎么样?
你的名字'HibernateUtil'是否过于笼统。我总是把'util'包和类作为代码气味;他们通常会弹出,因为设计师有一堆他/她不知道放在哪里的东西。你的课不是那样的,它显然专注于hibernate会话的管理。
关于您关于命名的现有约定或共识的问题。有一些指导原则(但你可能已经知道了):
哦,是的,我碰巧认为命名对于良好的软件设计非常重要。但我想这已经很清楚了( - :
编辑:回复您的编辑。只要它返回一个Hibernate类型,它仍然是Hibernate特有的。如果你设法完全从Hibernate抽象出来,转向JPA,那么将它命名为JpaSessionManager(或者你喜欢的是JPASessionManager)是有意义的。但这需要返回仅JPA会话对象。