gpt4 book ai didi

spring - 从 Spring 中更改 hibernate.connection.url

转载 作者:行者123 更新时间:2023-12-02 11:45:52 29 4
gpt4 key购买 nike

我将 Hibernate 与 Spring 结合使用。作为数据库,我目前使用 HSQL,它将数据存储在文件中(如 SQLite)。 HSQL 文件的路径当前硬编码在 persistence.xml 中。如何在运行时访问和更改此值,以便用户可以从任意 HSQL 文件加载或保存到任意 HSQL 文件?

persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">

<persistence-unit name="something-unit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>

<properties>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
<property name="hibernate.connection.url" value="jdbc:hsqldb:file:~/something-db/somethingdb" />
<property name="hibernate.connection.username" value="sa" />
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>

</persistence>

Spring applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:data="http://www.springframework.org/schema/data/jpa"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


<!-- Database Setup -->

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="something-unit" />
</bean>

<data:repositories base-package="com.something.playlist"/>

<!-- Transaction Setup -->

<tx:annotation-driven/>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

</beans>

感谢您的任何提示!

最佳答案

您可以指定 JNDI 数据源并将其传递给 Hibernate。或者您可以通过实现接口(interface) org.hibernate.connection.ConnectionProvider 来定义自己的插件策略来获取 JDBC 连接

有关更多提示,请参阅:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html

编辑 2/16: StackOverflow 上有一个关于创建自定义 ConnectionProvider 的示例:How can I set Datasource when I'm creating Hibernate SessionFactory?

如果您要动态更改数据源,而不是在启动时更改,则必须重新启动 Hibernate session 工厂。要正确执行此操作,您必须确保重新启动时其中没有任何事务正在运行。以下问题/答案将帮助您:Hibernate Sessionfactory restart | Spring

关于spring - 从 Spring 中更改 hibernate.connection.url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858643/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com