如何在hibernate';spring boot中的配置?

如何在hibernate';spring boot中的配置?,hibernate,spring-boot,jpa,sessionfactory,Hibernate,Spring Boot,Jpa,Sessionfactory,我正在开发一个Spring引导应用程序,它使用Spring数据JPA,只需要连接到url不同但其他完全相同的数据库,例如jdbc:sqlite:db1.db jdbc:sqlite:db2.db。我需要在运行时创建所有数据源。我在stack和spring论坛(例如AbstractRoutingDataSource)上读了很多关于它的内容,但所有这些教程都展示了如何从JavaBean中的.properties配置或静态定义创建数据源。是否可以在运行时创建多个数据源?如何管理事务以及如何创建多个Se

我正在开发一个Spring引导应用程序,它使用Spring数据JPA,只需要连接到url不同但其他完全相同的数据库,例如jdbc:sqlite:db1.db jdbc:sqlite:db2.db。我需要在运行时创建所有数据源。我在stack和spring论坛(例如AbstractRoutingDataSource)上读了很多关于它的内容,但所有这些教程都展示了如何从JavaBean中的.properties配置或静态定义创建数据源。是否可以在运行时创建多个数据源?如何管理事务以及如何创建多个SessionFactory?是否可以使用@Transactional注释?最好的方法是什么?有人能告诉我如何“一步一步”解决这个问题吗?

这个问题有两种解决方案,但我更喜欢第一种,开发人员使用第二种,但这违反了spring

第一个: 创建多个数据源,根据需要进行配置和使用。以下是最佳指南:

第二个: 是的,只有在运行时更改hibernate.cfg.xml属性值,才能在运行时更改数据库连接。首先,下面是编写hibernate.cfg.xml文件的代码:

<session-factory>
    <!-- Database connection settings -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url"></property>
    <property name="connection.username"></property>
    <property name="connection.password"></property>
    //other things goes here
</session-factory>

com.mysql.jdbc.Driver
//这里还有其他东西
然后,您可以在运行时按需要设置属性值:

Configuration configuration = new Configuration();
configuration.configure();
// <!-- Database connection settings -->
configuration.setProperty("hibernate.connection.url", URL);//Here pass connection url
configuration.setProperty("hibernate.connection.username", USERNAME);//Here your connection username
configuration.setProperty("hibernate.connection.password", PASSWORD);//Here your connection password
SessionFactory sessionFactory = configuration.buildSessionFactory();
//Here your transaction begin
Configuration配置=新配置();
configure.configure();
// 
setProperty(“hibernate.connection.url”,url)//这里传递连接url
setProperty(“hibernate.connection.username”,username)//这是您的连接用户名
setProperty(“hibernate.connection.password”,password)//这是您的连接密码
SessionFactory SessionFactory=configuration.buildSessionFactory();
//这是您的交易开始

它当前配置为第一个解决方案。有没有办法重新配置第一个url并在configure中更改url?您不能在运行时更改url,如果您想更改url,那么这违反了spring的规定,正如答案中提到的那样。