Hibernate:可以不将 SessionFactory 绑定(bind)到 JNDI 名称吗?

标签 hibernate jndi sessionfactory

有一种方法可以在 hibernate.cfg.xml 文件中设置 SessionFactory 的 JNDI 名称。但是,如果我没有在我的 Web 应用程序中明确使用 JNDI 查找来获取我的 SessionFactory,可以不给它一个 JNDI 名称吗?

我问的原因是,如果我没有设置我的 JNDI 名称,我的 JUnit 测试将运行良好。但是,如果我通过仅在 hibernate.cfg.xml 的 sessionfactory 标记中指定“名称”来设置它,它首先会说:

WARN  [WebApp:SessionFactoryObjectFactory.addInstance] Could not bind factory to JNDI

然后抛出一个异常:

javax.naming.NoInitialContextException:Need to specify class name in environment or system property, or as an appletparameter, or in an application resource file:

所以我的解决办法是从我的 hibernate.cfg.xml 中删除 JNDI 名称,但不知道这是否会导致其他问题?

最佳答案

我会说大多数情况下都可以,但您也可以考虑为您的 JUnit 测试使用不同的 hibernate.cfg.xm。

关于Hibernate:可以不将 SessionFactory 绑定(bind)到 JNDI 名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/659167/

相关文章:

java - 将 Hibernate 配置为 Tomcat Apache 和 MySQL 上的 JPA 2.0 提供程序的学习资源

java - WebLogic + Spring 的 JNDI 查找配置错误

java - Tomcat JNDI数据源错误 "No suitable driver"

java - 如何将我的数据库连接放在 .war 文件之外?

hibernate - 我们可以限制从 SessionFactory 获取的 session 数量吗?

java - Spring 5 + hibernate 5 : How SessionFactory is getting Autowired with LocalSessionFactoryBean

c# - 具有后台 worker 的 Web 应用程序的 Nhibernate session 管理策略?

java - Hibernate:从 3.6.9 迁移到 4.2

java - 如何在带有 set 的参数上使用 hibernate 搜索条件

hibernate - EntityManager Hibernate 没有持久性提供程序