繁体   English   中英

什么是HibernateUtil类的通用替代品?

[英]What's a good alternative, general name to the HibernateUtil class?

我有一个HibernateUtil类,这是本书中的标准( Hibernate in action )类。
它获取一个会话,刷新并关闭它。 开始,提交和回滚事务,并建立sessionFactory。
目前,错误地在我们的程序包中将其称为HibernateSessionFactory。
我想将其重构为更合适的名称,但是名称HibernateUtil困扰我,因为我想选择一个更通用的名称,例如PersistentManagerUtil
关于这种名称是否存在良好的Java约定或共识?

编辑我想要更笼统的原因是我想最小化对特定ORM实现的“暴露”。 该类的大多数公共方法都将void作为返回类型,因此它们不返回Hibernate类/接口。 唯一的例外是getSession,它返回org.hibernate.Session。 我之所以想这个方向,是因为我想切换到JPA并休眠作为实现,因此有更多的自由。 为什么不将其更改为EntityManagerUtil? 就像在hibernate的文档中一样,他们说EntityManager等同于Session,而EntityManagerFactory等同于HibernateSessionFactory。

提前致谢,
以太

不要让它变得更笼统,除非该类除了与Hibernate对话外还可以做其他事情。 它在其公共API中使用Hibernate类和接口,对吗? 只要它是特定于Hibernate的(在接口和实现方面),最好以其名称让大家知道它。

HibernateUtil听起来不错。

该类的大多数公共方法都将void作为返回类型,因此它们不返回Hibernate类/接口。 唯一的例外是getSession,它返回org.hibernate.Session。 我之所以想这个方向,是因为我想切换到JPA并休眠作为实现,因此有更多的自由。

好了,一旦摆脱了getSession ,就可以将名称更改为JpaUtil

您的课程是特定于Hibernate的,因此最好使用它的名称。

它是创建会话还是从其他地方获取会话? 如果创建它们,Factory也是一个好名字。 如果没有,听起来好像它管理会话,那么“ HibernateSessionManager”又如何呢?

您的名字“ HibernateUtil”太笼统了。 我总是把'util'包和类当作代码来闻。 因为设计师有很多东西,他/她不知道放在哪里,所以它们通常会弹出。 您的课程并非如此,它显然侧重于休眠会话的管理。

关于您关于现有约定或关于命名的共识的问题。 有一些准则(但您可能已经知道了):

  • 方法应反映对它们所驻留的类的操作,并在可能的情况下具有逻辑参数顺序。 示例:ChessBoard.swapPlayers(玩家a,玩家b)
  • 对于返回布尔值的方法,请使用isActivated或hasPlayers之类的谓词
  • 方法链接是另一种样式,其中链接的方法读起来有点像英文句子:verify(mockedList,atLeastOnce())。add(“三次”); 嘲笑
  • 方法上的JavaDoc应该描述操作,例如:交换玩家A和B,使他们彼此之间的游戏继续进行。”
  • 班级应该代表具有明确责任的“事物”。 示例:StringBuilder,Customer,PdfServlet。 如果将次要责任归为一个类,则通常意味着应将其重构为两个协作类。
  • 关于类的JavaDoc应该描述“事物”及其主要职责。 行为应在对客户有价值的信息范围内进行描述。 实现细节通常不应在公共JavaDoc中描述。

哦,是的,我碰巧认为命名对于良好的软件设计极为重要。 但是我想这已经很清楚了(-:

编辑:响应您的编辑。 只要它返回Hibernate类型,它仍然是特定于Hibernate的。 如果您设法从Hibernate完全抽象到JPA,则可以将其命名为JpaSessionManager(如果愿意,可以命名为JPASessionManager)。 但这需要返回仅JPA的会话对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM