我正在努力遷移應用程序以使用最新版本的quarkus。該應用程序使用來自休眠接口的數(shù)據(jù)庫策略實現(xiàn)多租戶。Quarkus 建議(如果可能)避免使用persistence.xml ,在給定quarkus 上下文的情況下,這種多租戶情況的正確方法是什么?保留persistence.xml還是僅使用quarkus 推薦的application.properties ?@Singletonpublic class HibernateConnectionProviderFactory implements ConnectionProviderFactory { private Logger logger = Logger.getLogger(getClass().getName()); private static final String TENANT_ID_PLACEHOLDER = "{tenant.id}"; @Inject @SystemProperty("multitenant.hibernate.connection.url") private Optional<String> dbUrl; @Inject @SystemProperty("multitenant.hibernate.connection.driver_class") private Optional<String> dbDriverClass; @Inject @SystemProperty("multitenant.hibernate.dialect") private Optional<String> dbDialect; @Inject @SystemProperty("multitenant.hibernate.connection.username") private Optional<String> dbUsername; @Inject @SystemProperty("multitenant.hibernate.connection.password") private Optional<String> dbPassword; @Inject @SystemProperty(value = "multitenant.hibernate.schema.generation", defaultValue = "false") private boolean generateSchema; @Inject @SystemProperty("multitenant.default.tenant.id") private Optional<String> defaultTenantId; @Inject private PersistenceUnitDescriptorFactory persistenceUnitDescriptorFactory; @Inject private SchemaGenerator schemaGenerator; private final ConcurrentHashMap<String, ConnectionProvider> providers = new ConcurrentHashMap<>(); @Override public Optional<ConnectionProvider> getDefaultConnectionProvider() { return defaultTenantId.map(this::getConnectionProvider); } @Override public ConnectionProvider getConnectionProvider(String tenantId) { return providers.computeIfAbsent(tenantId, this::createDriverManagerConnectionProvider); }
1 回答

catspeake
TA貢獻1111條經(jīng)驗 獲得超0個贊
現(xiàn)在我們不支持使用 Quarkus application.properties 設(shè)置 Hibernate ORM 多租戶,因此您應該采用 persistence.xml 方式。
話雖如此,如果有足夠的吸引力,我們可能會考慮在未來支持它。您能否在 GitHub 上提出問題,以便我們收集有關(guān)此功能的反饋?
謝謝!
添加回答
舉報
0/150
提交
取消