首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在运行时更改persistenceUnit属性

在运行时更改persistenceUnit属性
EN

Stack Overflow用户
提问于 2014-05-26 05:41:18
回答 1查看 839关注 0票数 1

我有一个Spring + Hibernate + JPA应用程序。我有一个在persistence.xml中定义的defaultPersistance单元

代码语言:javascript
代码运行次数:0
运行
复制
<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
        <property name="hibernate.connection.url" value="jdbc:jtds:sqlserver://localhost:1433;databaseName=B3;" />
        <property name="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver" />
        <property name="hibernate.connection.username" value="hiber1" />
        <property name="hibernate.connection.password" value="hiber1" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
    </properties>
</persistence-unit>

我有一个用mvc-dispatcher-servlet.xml连接的entityManagerFactorytransactionManager

代码语言:javascript
代码运行次数:0
运行
复制
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

因此,我的问题是:如何更改hibernate连接属性(例如。hibernate.connection。(用户名)在运行时?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-26 08:38:03

我将考虑在persistence.xml之外管理数据源,并使用UserCredentialsDataSourceAdapter及其setCredentialsForCurrentThread方法。

这些线周围的东西:

代码语言:javascript
代码运行次数:0
运行
复制
    <bean id="targetDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
        <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"/>
        <property name="url" value="jdbc:jtds:sqlserver://localhost:1433;databaseName=B3;" />
    </bean>


   <bean id="dataSource" class="org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter"> 
      <property name="targetDataSource" ref="targetDataSource"/> 
      <property name="username" value="defaultUser"/> 
      <property name="password" value="mypassword" /> 
   </bean>

在您的java代码中,您将获得对dataSource的引用并调用setCredentialsForCurrentThread(username, password)。每次数据源调用getConnection()时,都会根据当前线程检查凭据,并使用这些凭据来获取连接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23863401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档