当前位置: 首页 > 面试题库 >

如何在Hibernate中使用属性文件读取数据库配置参数

奚飞星
2023-03-14
问题内容

在我的应用程序中,我正在使用hibernate模式,以将a与数据库连接并创建会话。这是我的hibernate.cfg.xml文件。还行吧。它工作正常。

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/country</property>
        <property name="connection.username">root</property>
        <property name="connection.password">password</property>

    </session-factory>

</hibernate-configuration>

但是,当我尝试db.property file使用this
读取数据库配置属性时hibernate.cfg.xml,它显示了Exception,这是我的另一个hibernate.cfg.xml文件

<util:properties id="db" location="classpath:db.properties" />

<hibernate-configuration>

    <session-factory>
        <!-- Database connection settings -->
        <property name="driverClassName" value="#{db['driverClassName']}"></property>
        <property name="url" value="#{db['url']}"></property>
        <property name="username" value="#{db['username']}"></property>
        <property name="password" value="#{db['password']}"></property>

    </session-factory>

</hibernate-configuration>

这是错误

 org.dom4j.DocumentException: Error on line 8 of document  : The prefix "util" for       element "util:properties" is not bound. Nested exception: The prefix "util" for element   "util:properties" is not bound.
    at org.dom4j.io.SAXReader.read(SAXReader.java:482)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2155)

这是我的属性文件,名为 db.properties

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/country

username=root

password=password

有什么问题吗?如何正确地做到这一点


问题答案:

util:properties不是要在hibernate.cfg.xml文件中使用的有效标签。如果要将所有数据库配置详细信息放在属性文件中,则可以将它们放在hibernate.properties文件中,然后从hibernate.cfg.xml文件中删除。这样,数据库详细信息将保留在属性文件中。

如果您要维护一个单独的文件而不是使用hibernate.properties文件,则可以尝试以下操作:

java.util.Properties properties = new Properties();
properties.load(new FileInputStream("db.properties"));

Configuration configuration = new Configuration();

configuration.configure("hibernate.cfg.xml").addProperties(properties);;

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();

SessionFactory sessionFactory = configuration
.buildSessionFactory(serviceRegistry);


 类似资料:
  • 我正在使用Java的发送SMS。我已经加载了log4j jar文件,并将文件放置在正确的位置,但它仍然无法读取它,并得到以下异常: 例外文本:

  • 我们正在将应用程序从 WAS 6.1 迁移到自由。我们的应用程序使用第三方 jar,通过 InputStream 读取属性文件。在 WAS 6.1 中,我们将服务器类路径设置为 myproperty.properties 的位置。我们尝试了以下方法来在 Liberty 中设置类路径,但没有任何效果 方法1:在jvm.options中设置以下内容(D:\ConfigFiles\DEV\-包含mypr

  • 问题内容: 我在jpa中使用了hibernate模式,并且使用persistence.xml进行了配置。是否可以从Web应用程序获取hibernate连接属性? 谢谢。 问题答案: 可能并非没有反射,而是依靠Hibernate在将来不会破坏您的代码。您需要从SessionFactory获取属性,但是它不是公开的,因此您必须通过反射找到Field,然后使用field.setAccessible获取对

  • 问题内容: 我从log4j开始已经有一段时间了。非常酷的日志记录框架。我完成了其他类型的日志记录,例如控制台和文件日志记录。因此,尝试使用mysql的数据库适配器进行数据库日志记录。因此,我创建了名为log4j.properties的以下属性文件,其内容为- 并按以下方式在测试类中使用了它- 但我收到以下错误- 有什么帮助吗…? 问题答案: 如果您使用的是mysql。创建一个文件log4j.pro

  • 我需要从属性文件加载数据源属性 db.properties: 这是数据源(camelcontext.xml): 我试着这样做,但没用。 我的路由是在java dsl中实现的。

  • 我刚开始冬眠。我需要在postgres中存储文件,列的数据类型是。我在互联网上四处寻找这个案例的工作演示,但我找不到任何。 Hibernate映射: