java – 如何确定Hibernate会话正在使用的DataSource?
发布时间:2020-05-28 12:14:05 所属栏目:Java 来源:互联网
导读:我有几个应该使用HSQLDB的单元测试,但我知道其中一些实际上正在使用物理数据库.我想在测试中添加一个检查,以确保正在使用的DataSource用于HSQLDB,而不是实时DB. 从hibernate会话对象(org.hibernate.classic.Session),我如何检查DataSource 更新: 我也可以访
|
我有几个应该使用HSQLDB的单元测试,但我知道其中一些实际上正在使用物理数据库.我想在测试中添加一个检查,以确保正在使用的DataSource用于HSQLDB,而不是实时DB. 从hibernate会话对象(org.hibernate.classic.Session),我如何检查DataSource 更新: 详细信息:Hibernate 3.2 解决方法无论Hibernate / Spring等的包装器和具体实现如何,您可以检查不是DataSource,而是检查数据库类型(这可能是合适的).这个想法是使用DatabaseMetaData并检查它的类型(因为Hibernate检测到方言): private boolean isTestDb(Session session) {
return session.doReturningWork(new ReturningWork<Boolean>() {
@Override
public Boolean execute(Connection connection) throws SQLException {
DatabaseMetaData metaData = connection.getMetaData();
return metaData.getDatabaseProductName().startsWith("HSQL");
}
});
}
注意,可以按照您想要的方式更改方法体(检查JDBC URL,检查驱动程序名称,检查几乎所有内容). 编辑:上面的方法适用于hibernate 3.5. 对于Hibernate早期版本(例如3.2),它可能更容易: private boolean isTestDb(Session session) {
Conection connection = session.connection();//deprecated method,which was dumped in hibernate 3.5+
DatabaseMetaData metaData = connection.getMetaData();
return metaData.getDatabaseProductName().startsWith("HSQL");
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – SLF4J错误:类加载器具有不同类型的类对象
- java – 500,000个街道名称 – 用于实现快速搜索的数据结构
- 如何从Java中的日历对象构建天,月,年的列表?
- java – 在MATLAB中更改seqlogo数字的x轴
- java – 在ConcurrentHashMap.computeIfAbsent和Concurrent
- java – 如何在Wi-Fi设备之间同步数据
- java获取json中的全部键值对实例
- Android下保存数据到SharePreference和从SharePreference读
- java – 执行失败的任务’:app:compileDebugNdk’无法运行
- Java的隐藏功能 – ArrayList / instance初始化程序说明
