hibernate - 使用 eclipse Hibernate 插件的问题 - 无法在 JNDI 中找到 sessionfactory

标签 hibernate eclipse-plugin jndi sessionfactory

我正在使用 eclipse hibernate 插件中内置的逆向工程功能为每个表生成 dao 和 hbm.xml 文件。

它做得很好,但是当我尝试使用生成的对象时,我得到了一个无法在 JNDI 中找到 SessionFactory 的错误。

我看到一个帖子说当你在 hibernate.cfg.xml 文件中命名你的 SessionFactory 时会发生这种情况,所以我删除了名称标签,但我仍然遇到同样的错误。

这是我的 hibernate.cfg.xml

    <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">qwerty</property>
        <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/agilegroup3</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.default_catalog">agilegroup3</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
        <mapping resource="generated/Usersroles.hbm.xml" />
        <mapping resource="generated/Role.hbm.xml" />
        <mapping resource="generated/Logdata.hbm.xml" />
        <mapping resource="generated/Logtrigger.hbm.xml" />
        <mapping resource="generated/User.hbm.xml" />
    </session-factory>
</hibernate-configuration>

这是触发异常的生成代码
protected SessionFactory getSessionFactory() {
    try {
        return (SessionFactory) new InitialContext()
                .lookup("SessionFactory");
    } catch (Exception e) {
        log.error("Could not locate SessionFactory in JNDI", e);
        throw new IllegalStateException(
                "Could not locate SessionFactory in JNDI");
    }
}

我对 JNDI 了解不多,但我猜它是某种对配置文件的查找等价物。我不想使用 JNDI,但我不知道如何使用 eclipse 插件来实现这一点。

更改生成的代码对我没有真正的帮助,因为我需要在某些时候继续重新生成它,所以如果有人能解释为什么/如何发生这种情况以及我能做些什么,我将不胜感激

谢谢

乔纳森

最佳答案

您可以直接在 hibernate 配置文件中指定所有连接、密码、用户名等,然后使用如下代码加载:

Configuration cfg = new Configuration();
cfg.configure();
SessionFactory sf = cfg.buildSessionFactory();

或者,您可以从 JNDI 获取它。这允许您的系统管理员在部署后通过向 JNDI 注册不同的 SessionFactory 来更改连接、密码、用户名等。

您需要查阅应用服务器的文档,了解如何为应用服务器指定 JNDI 资源。

关于hibernate - 使用 eclipse Hibernate 插件的问题 - 无法在 JNDI 中找到 sessionfactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1620612/

相关文章:

java - 如何将我的自定义编译器添加到 eclipse 中?

java - Tomcat 中的 JNDI 配置

java - 来自jndi数据源/连接池的jdbc连接的“延迟初始化”:可行性

java - Maven - 找不到 LDAP jar 文件

mysql - 当某些字段超过字段长度时保存到mysql数据库

java - 使用 hibernate 名称参数设置表名

java - Spring无法对非静态方法进行静态引用?

java - Spring:分离的实体传递到持久化

java - 高级 Eclipse Java 搜索

java - 更正取决于 Java 编码标准