Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用quarkus的多租户迁移_Java_Hibernate_Multi Tenant_Quarkus - Fatal编程技术网

Java 使用quarkus的多租户迁移

Java 使用quarkus的多租户迁移,java,hibernate,multi-tenant,quarkus,Java,Hibernate,Multi Tenant,Quarkus,我正在迁移应用程序以使用最新版本的quarkus。该应用程序使用hibernate界面中的数据库策略实现多租户。Quarkus建议(如果可能)避免使用persistence.xml,考虑到Quarkus上下文,对于这种多租户的情况,正确的方法是什么?保留persistence.xml或仅使用quarkus推荐的应用程序.properties @Singleton 公共类HibernateConnectionProviderFactory实现ConnectionProviderFactory{ 私

我正在迁移应用程序以使用最新版本的quarkus。该应用程序使用hibernate界面中的数据库策略实现多租户。Quarkus建议(如果可能)避免使用persistence.xml,考虑到Quarkus上下文,对于这种多租户的情况,正确的方法是什么?保留persistence.xml或仅使用quarkus推荐的应用程序.properties

@Singleton
公共类HibernateConnectionProviderFactory实现ConnectionProviderFactory{
私有记录器=Logger.getLogger(getClass().getName());
私有静态最终字符串TENANT_ID_PLACEHOLDER=“{TENANT.ID}”;
@注入
@SystemProperty(“multitenant.hibernate.connection.url”)
私有可选dbUrl;
@注入
@SystemProperty(“multitenant.hibernate.connection.driver\u类”)
专用可选dbDriverClass;
@注入
@SystemProperty(“multitenant.hibernate.dial”)
私用方言;
@注入
@SystemProperty(“multitenant.hibernate.connection.username”)
私有可选dbUsername;
@注入
@SystemProperty(“multitenant.hibernate.connection.password”)
私有可选密码;
@注入
@SystemProperty(value=“multitenant.hibernate.schema.generation”,defaultValue=“false”)
私有布尔生成模式;
@注入
@SystemProperty(“multitenant.default.tenant.id”)
私人可选择的租户;
@注入
私有PersistenceUnitDescriptorFactory PersistenceUnitDescriptorFactory;
@注入
私人策划人策划人;
私有最终ConcurrentHashMap提供程序=新ConcurrentHashMap();
@凌驾
公共可选getDefaultConnectionProvider(){
返回defaultTenantId.map(this::getConnectionProvider);
}
@凌驾
公共连接提供程序getConnectionProvider(字符串tenantId){
return providers.ComputeFabSent(tenantId,this::CreateDriverManager连接提供程序);
}
专用连接提供程序CreateDriverManager连接提供程序(字符串tenantId){
最终PersistenceUnitDescriptor persistenceUnit=persistenceUnitDescriptorFactory.getPersistenceUnitDescriptor(tenantId);
最终映射persistenceProperties=getPersistenceProperties(tenantId,persistenceUnit.getProperties());
final StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(persistenceProperties).build();
如果(生成架构){
schemaGenerator.updateSchema(serviceRegistry,persistenceUnit);
}
最终ConnectionProvider ConnectionProvider=serviceRegistry.getService(ConnectionProvider.class);
返回连接提供者;
}
//...
}

目前,我们不支持使用Quarkus application.properties设置Hibernate ORM Multitenance,因此您应该使用persistence.xml

如果有足够的牵引力,我们可能会考虑在将来支持它。你能在GitHub上打开一个问题,以便我们收集关于此功能的反馈吗


谢谢

问题在@Guillame Smet中公开自那以后,该功能是否有任何进展?因为我非常需要它来迁移到quarkus。此外,我还发布了类似的问题,如果您能对quarkus上正在开发的多租户发表评论: