如何从休眠提供程序知道基础数据库名称备选案文1备选案文2
我正在使用休眠3.x与Jboss。目前,我们支持多个数据库。
现在在运行时,我如何知道底层数据库信息?至少是名称或数据库方言?(例如MySQL,Derby,Oracle等)?
任何人都可以建议任何方法来查找此信息吗?我以为休眠SessionFactory类会提供这样的api - 但事实并非如此?
提前致谢,
我正在使用休眠3.x与Jboss。目前,我们支持多个数据库。
现在在运行时,我如何知道底层数据库信息?至少是名称或数据库方言?(例如MySQL,Derby,Oracle等)?
任何人都可以建议任何方法来查找此信息吗?我以为休眠SessionFactory类会提供这样的api - 但事实并非如此?
提前致谢,
我认为你可以这样做:
sessionFactory.getCurrentSession().connection().getMetaData().getURL()
非常感谢javamonkey79和costis回答这个问题。
是的 - 我可以读取hibernate.properties/cfg.xml文件 - 但我想避免文件读取工作流。
似乎 api 现在已被弃用,但它仍然有效。我们还可以通过下面列出的另一种方式检索相同的信息。Session::connection()
Session session = sessionFactory.openSession();
String dbURL = session.connection().getMetaData().getURL().toString();
session.close();
Settings settings = ((SessionFactoryImpl) sessionFactory).getSettings();
if (settings != null) {
Connection connection = settings.getConnectionProvider().getConnection();
String dbURL = connection.getMetaData().getURL();
connection.close();
}
对于MySql,返回URL将采用以下形式:
jdbc:mysql://localhost:3306/edm?useUnicode=true