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对象的状态详解
在PDA开发时经常会遇到下面的错误,原因是缺少一个dll,只要在项目中引用这个dll就可以获得错误的描述,然后...位于 System.Net.Connection.doConnect() 位于 System.Net.Connection.connect() at WorkItem.doWork()
API开放:程序开放了三个API,分别为FileX.DoWork.Divide、FileX.DoWork.CombineByFirst、FileX.DoWork.CombineByList。这些API可供您编程时调用,以便让您更快捷地实现您的需要的功能 本程序基于.NET Framework ...
Hibernate简介、Session API、对象的状态 查询操作(主键查询、HQL查询、Criteria查询、SQL查询、命名查询、doWork) 关联关系:多对一、一对多、多对多、一对一 组件映射、继承映射、缓存、JPA 反向工程、封装...
用逻辑覆盖测试方法测试以下程序段 ...void DoWork (int x,int y,int z){ 1 int k=0, j=0; 2 if ( (x>3)&&(z) ) 3 { 4 k=x*y-1; 5 j=sqrt(k); 6 } 7 if((x==4)||(y>5)) 8 j=x*y+10; 9 j=j%3; 10 }
工人池在node.js中分发工作安装> npm install @davvo/worker-pool例子// adder.js...pool.doWork({a: 28, b: 14}).then(function (sum) { console.log( " The answer is " , sum) ;}) ;异步工人pool.handle(function
async-profile 是一个 Node.js 的 CPU 分析器扩展。可以通过各种方法来分析出你的代码执行所占用的 CPU 时间。...Promise.try(doWork).finally(function () { p.stop(); }); 标签:async
WCF的源码。。。。。。。。。。。。。。。。。。。。。。。。。。。
JPA全面讲解,这是一个很全面的例子,值得学习
backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker_ProgressChanged); backgroundWorker....
利用此程序可以简单的金进行读取卡片操作 private void button1_Click(object ... System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(DOWork)); thread.Start(); }
} ConcreteProduct public class StudentWork implements Work { public void doWork() { System.out.println("学生*作业!"); } } public class TeacherWork implements Work { public void doWork() { System.out....
这是一个VC多线程编程的例子,总共四个程序,内附详细说明。
backgroudWorker 控件用法demo,包括Dowork,ProgressChanged,RunWorkerCompleted事件的用法demo,比较简单的demo.
白盒测试用例练习
任务执行类通过继承基类WorkItemBase之后使用多态函数DoWork来完成真实任务 2.创建信号量(多线程同步使用) /*在信号量上我们定义两种操作: Wait(等待) 和 Release(释放)。 当一个线程调用Wait操作时,它...
private void bgWorker_DoWork(object sender, DoWorkEventArgs e) { e.Result=GetDataFromDB(); } 在RunWorkerCompleted事件中写入 private void bgWorker_RunWorkerCompleted(object sender, ...
软件测试_逻辑覆盖测试_实验报告 使用逻辑覆盖测试方法测试 int DoWork (int x,int y,int z,int k,int j) { 1 if ( (x>3)&&(z) ) 2 { 4 k=x*y-1; 5 j=k-z; 6 } 7 if((x==4)||(y>5)) 8 j=x*y+10; 9 j=j%3; }
此为Android ProgressBar 简单进度条的实现及示例下载源码,基本思路是:将模拟任务分成大小为100个的数组,任务完成度--默认为0,状态完成度默认也为0,然后构造一个线程用于显示消息,然后定义dowork()函数,完成...
假如安装包是4.0版本,你的执行程序要求版本较高(4.0以上),可以将较高版本的.net framework拷贝到Resources的Environmental目录下,然后打开MainWindow.xaml.cs文件,找到Worker_DoWork函数,然后去掉里面注释的...