我正在使用hibernate 3.x和Jboss.目前我们支持多个数据库.
现在在运行时,我如何知道底层数据库信息?至少名称或数据库方言?(例如MySQL,Derby,Oracle等)?
任何人都可以建议任何方式来查找这些信息吗?我以为hibernate SessionFactory类会提供这样的api - 但它不是吗?
提前致谢,
我想你可以这样做:
sessionFactory.getCurrentSession().connection().getMetaData().getURL()
Run Code Online (Sandbox Code Playgroud)
非常感谢javamonkey79和costis回答这个问题.
是的 - 我可以阅读hibernate.properties/cfg.xml文件 - 但我想避免文件阅读工作流程.
似乎Session::connection()api现在已被弃用,但它仍然有效.我们还可以通过下面列出的其他方式检索相同的信息.
Session session = sessionFactory.openSession();
String dbURL = session.connection().getMetaData().getURL().toString();
session.close();
Run Code Online (Sandbox Code Playgroud)
Settings settings = ((SessionFactoryImpl) sessionFactory).getSettings();
if (settings != null) {
Connection connection = settings.getConnectionProvider().getConnection();
String dbURL = connection.getMetaData().getURL();
connection.close();
}
Run Code Online (Sandbox Code Playgroud)
对于MySql,返回URL的格式为:
jdbc:mysql://localhost:3306/edm?useUnicode=true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19185 次 |
| 最近记录: |