下面列出了怎么用org.hibernate.service.jdbc.connections.spi.ConnectionProvider的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* 取得hibernate的connection对象
*/
protected Connection getConnection() throws SQLException {
if (sessionFactory instanceof SessionFactoryImpl) {
SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl) sessionFactory;
ConnectionProvider provider = sessionFactoryImpl.getServiceRegistry().getService(ConnectionProvider.class);
if(provider != null) return provider.getConnection();
}
return null;
}
/** {@inheritDoc} */
@Nullable @Override protected ServiceRegistryBuilder registryBuilder() {
ServiceRegistryBuilder builder = new ServiceRegistryBuilder();
DatasourceConnectionProviderImpl connProvider = new DatasourceConnectionProviderImpl();
BasicManagedDataSource dataSrc = new BasicManagedDataSource(); // JTA-aware data source.
dataSrc.setTransactionManager(jotm.getTransactionManager());
dataSrc.setDefaultAutoCommit(false);
JdbcDataSource h2DataSrc = new JdbcDataSource();
h2DataSrc.setURL(CONNECTION_URL);
dataSrc.setXaDataSourceInstance(h2DataSrc);
connProvider.setDataSource(dataSrc);
connProvider.configure(Collections.emptyMap());
builder.addService(ConnectionProvider.class, connProvider);
builder.addService(JtaPlatform.class, new TestJtaPlatform());
builder.addService(TransactionFactory.class, new JtaTransactionFactory());
return builder;
}