免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
從Hibernate中獲得JDBC連接

使用Hibernate的過程中,有時候需要直接使用SQL語句來操作數(shù)據(jù)庫(雖然Hibernate不推薦使用,但是有時候還是會使用到的,比如說批處理),這個時候就要求我們首先獲得JDBC的連接。獲得JDBC連接的方式有:

1先獲得Session,然后從Session中獲得連接

     session.connection();

     但是這個方法Hibernate不推薦使用,The method connection() from the type Session is deprecated

在3.3以后的版本中已經(jīng)被廢除了。

2、通過ConnectionProvider來獲得連接

  1. ConnectionProvider cp = ConnectionProviderFactory.newConnectionProvider(cfg.getProperties());  
  2. cp.getConnection();  


    這樣也可以獲得連接。但是實驗后發(fā)現(xiàn),通過JDBC連接插入的數(shù)據(jù),然后通過Hibernate獲取不到。查看數(shù)據(jù)庫發(fā)現(xiàn)數(shù)據(jù)已經(jīng)插入到了數(shù)據(jù)庫中,另外Hibernate重新加載后也可以看到剛才插入的數(shù)據(jù)。

      剛開始的時候,以為是Hibernate二級緩存的原因,但是把Hibernate的二級緩存關(guān)掉以后,任然有這個問題。經(jīng)過多方查找,最后在Hibernate的官方找到了解決辦法,如下:

  1. ConnectionProvider cp =((SessionFactoryImplementor)sessionFactory).getConnectionProvider();  
  2. return cp.getConnection();  


    就是直接從SessionFactory中獲得ConnectionProvider ,而不是自己創(chuàng)建一個。自己猜想原因應(yīng)該是通過SessionFactory獲得的連接和自己構(gòu)造ConnectionProvider 來獲得的連接應(yīng)該是獨立的,所以導(dǎo)致通過JDBC插入的數(shù)據(jù)在Hibernate下看不到。

3、直接提供JDBC連接對象Connection:

Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/HibernateTest?user=root&password=";
java.sql.Connection conn = DriverManager.getConnection(url);
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession(conn);

4、Session.doWork

3.3官方的替代方法是用Session.doWork(Work work);

傳入的參數(shù)work是一個接口,可以HibernateFactory.getSession().doWork(
  new Work() {
    public void execute(Connection connection) {
      // 這里面就得到connection了,    

    }
  }
);
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Hibernate中SessionFactory配置
hibernate使用小結(jié)
Hibernate4之配置詳解
Hibernate入門之事務(wù)管理
Hibernate4實戰(zhàn)之第一部分Hibernate入門
Hibernate入門之自己寫的小例子的總結(jié)-JB--IT之博客
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服