hibernate的session.connection被session.dowork()替代
Hibernate3.3.2版本中getSession().connection()已被棄用,替代方法SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection()
來自類org.springframework.orm.hibernate3.SessionFactoryUtils
例子:
java.sql.Connection c = null;
java.sql.PreparedStatement ps = null;
java.sql.ResultSet rs = null;
public List method(String sql) {
List ret = new ArrayList();
try {
c = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
ps = c.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
.....
}
ret.add(ro);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return ret;
}
Hibernate API中讓使用doWork(Work,work),描述如下:
connection()
Deprecated. (scheduled for removal in 4.x). Replacement depends on need; for doing direct JDBC stuff use doWork(org.hibernate.jdbc.Work)
; for opening a 'temporary Session' use (TBD).
Work介面的execute()方法用於執行直接通過JDBC API來訪問資料庫的操作:
public interface Work {
//直接通過JDBC API來訪問資料庫的操作
public void execute(Connection connection) throws SQLException;
}
Session的doWork(Work work)方法用於執行Work物件指定的操作,即呼叫Work物件的execute()方法。Session會把當前使用的資料庫連線傳給execute()方法。
過程如下:
Transaction tx=session.beginTransaction();
//定義一個匿名類,實現了Work介面
Work work=new Work(){
public void execute(Connection connection)throws SQLException{
//通過JDBC API執行用於批量更新的SQL語句
PreparedStatement stmt=connection
.prepareStatement("update CUSTOMERS set AGE=AGE+1 "
+"where AGE>0 ");
stmt.executeUpdate();
}
};
//執行work
session.doWork(work);
tx.commit();
當通過JDBC API中的PreparedStatement介面來執行SQL語句時,SQL語句中涉及到的資料不會被載入到Session的快取中,因此不會佔用記憶體空間。
相關文章
- Hibernate中session.getconnection()的替代方法Session
- keybd_event 被 SendInput 替代
- 未來,13個最難被替代的 IT 職位!
- 未來50%的工作會被機器人替代?機器人
- 替代MLP的KAN,被開源專案擴充套件到卷積了套件卷積
- Github被微軟收購,這裡整理了16個替代品Github微軟
- 一個專案經理的切身經驗總結:測試用例可以被替代嗎?
- 中國替代方案探索:替代谷歌企業郵箱的選擇谷歌
- VMware收購Spring公司Pivotal:Spring Cloud可能會被Kubernetes替代SpringCloud
- 《學習筆記》被廢棄的Kotlin Android Extensions外掛替代品 View Binding筆記KotlinAndroidView
- [譯] JSX 的替代方案JS
- MangoDB:MongoDB的開源替代MongoDB
- Exa – 替代ls命令的工具
- 使用 Airflow 替代你的 crontabAI
- oracle SecureFiles 替代之前的 LOBOracle
- date.getMonth()方法的替代
- Chapar :Golang的Postman替代方案GolangPostman
- Hibernate的基礎
- 可平滑替代FTP的FTP替代解決方案,具有哪些強大功能?FTP
- BAIRD:44%的被訪使用者認為膝上型電腦可部分替代平板電腦功能AI
- 替代密碼密碼
- Hibernate SQL方言 (hibernate.dialect)SQL
- Hibernate學習:初識hibernate
- [譯]JSX的替代品JS
- 替代 Trello 的 OpenProject 9 釋出了Project
- 可以替代basemap的幾個工具
- LastPass 的開源替代品AST
- Hibernate-ORM:13.Hibernate中的連線查詢ORM
- 關於hibernate的hibernate.hbm2ddl.auto屬性
- Hibernate的基本API的用法API
- Hibernate之SchemaExport的使用Export
- 如何管理hibernate 的session?Session
- 關於Hibernate的SchemaExportExport
- Hibernate的session問題Session
- 學習Hibernate原始碼三_Hibernate中的配置檔案解析原始碼
- 替代laravel whereHas方法Laravel
- UDEV替代ASMLIBdevASM
- oracle 用EXISTS替代INOracle