gpt4 book ai didi

java - Hibernate:从 SessionFactory 获取数据源

转载 作者:行者123 更新时间:2023-11-30 08:01:53 26 4
gpt4 key购买 nike

尝试从 Hibernate sessionFactory 获取数据源,以便我可以将其传递给 Flyway Factory。
这是我正在使用的代码:

SessionFactoryImpl factory = (SessionFactoryImpl) sessionFactory;
ConnectionProvider provider = factory.getConnectionProvider();
if(provider instanceof DatasourceConnectionProviderImpl) {
System.out.println(">>>Dude, this is hack");
}

代码从不打印 sysout 语句。

I am not Spring in my project, there is no way I can use SessionFactoryUtils.

最佳答案

您可以获得DataSource来自DataSourceFactory你应该在你的配置类中拥有它。 DataSourceFactory 有一个 build method返回一个实现 DataSource 接口(interface)的 ManagedDataSource。

您可以在此处查看示例(第 38 行):https://github.com/dropwizard/dropwizard/blob/master/dropwizard-hibernate/src/main/java/io/dropwizard/hibernate/SessionFactoryFactory.java

已编辑

您需要运行 Jersey 服务器才能获取环境。如果您当前没有运行需要数据源的服务器,您可以通过执行以下操作来创建一个实例:

DropwizardAppRule<Configuration> RULE = new DropwizardAppRule<Configuration>( Application.class, ResourceHelpers.resourceFilePath("test-config.yml"));

ManagedDataSource ds = RULE.getConfiguration().getDataSourceFactory() .build(RULE.getEnvironment().metrics(), "migrations");

关于java - Hibernate:从 SessionFactory 获取数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31793044/

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