java业务逻辑,利用hibernate获取所连接的数据库信息

1、本人程序架构是springMVC+hibernate,这次的需求是要针对不同的数据库,做不同的处理。

2、获取所连接的数据库是什么,oracle?  mysql?  sql server?  基础方法

public String getDatabaseProductName() {
        String dpName = "";
        Session session = null;
        try {
            session = this.getHibernateTemplate().getSessionFactory().openSession();
            DatabaseMetaData dbData = session.connection().getMetaData();
            dpName = dbData.getDatabaseProductName().toLowerCase();
        } catch (SQLException e) {
            log.error(e.getMessage(), e);
        }finally{
            if(session != null){
                session.close();
                session = null;
            }
        }
        return dpName;
    }

3、调用方法

String dbName = this.baseDao.getDatabaseProductName();
        if(dbName.indexOf("oracle")>-1){//oracle
            //做oracle的处理
        }else if(dbName.indexOf("mysql")>-1){
            //做mysql的处理
        }else if(dbName.indexOf("sql server")>-1){
            //做sql server的处理
        }                

4、题外话,如果想进一步获取用户实例名呢?

public String getDBName(String dbType) {
        String dbName = "";
        Session session = null;
        try {
            session = this.getHibernateTemplate().getSessionFactory().openSession();
            DatabaseMetaData dbData = session.connection().getMetaData();
            if("oracle".equals(dbType)){
                dbName = dbData.getUserName();
            }else if("mysql".equals(dbType)){
         
                String url = dbData.getURL();
                String str = url.substring(0, url.indexOf("?"));
                dbName = str.substring(str.lastIndexOf("/") + 1);
            }else if("sqlserver".equals(dbType)){
                dbName = dbData.getUserName();
            }
        } catch (SQLException e) {
            log.error(e.getMessage(), e);
        }finally{
            if(session != null){
                session.close();
                session = null;
            }
        }
        return dbName.toLowerCase();
    }

5、题外话调用方式

String test = baseDao.getDBName("mysql");

 

posted @ 2018-03-28 14:46  #城市之光  阅读(2616)  评论(3)    收藏  举报