Hibernate批量更新与批理删除

批理修改:

场景:如有一个学生表Student,现有一属性[学院]改名,从"计算机学院"改为"计算机工程学院"[不考虑学院表].

用Hibernate实现这种批理更新的方法一DML(数据操作语言)操作。代码如下:

public void updateUser(String newName,String oldName) {
 Session session = null;
 try{
 session = this.getSession();
 Transaction tc = session.beginTransaction();

 String hqlUpdate = "update Student set deptName=:newName where   deptName= :oldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();

 tc.commit();
 }catch(RuntimeException re){
 log.debug(re.getMessage(),re);
 throw re;
 }finally{
 if (session != null){
  session.close();
 }
 }
}

方法二绕过Hibernate API,用JDBC实现。

public void UpdateUser(String newName,String oldName) {
 Session session = null;
 try{
 session = this.getSession();
 Transaction tc = session.beginTransaction();

 Connection connection = session.connection();

 PreparedStatement ps = connection.prepareStatement("update Student set deptName='"+newName+"' where deptName= '"+oldName+"'");

 ps.execute();

 tc.commit();

 }catch(RuntimeException re){
 log.debug(re.getMessage(),re);
 throw re;
 }catch(SQLException e){
 log.debug(e.getMessage(),e);
 }finally{
 if (session != null){
  session.close();
 }
 }
}

时间: 2024-08-07 03:48:10

Hibernate批量更新与批理删除的相关文章

jsp Hibernate批量更新和批量删除处理代码_JSP编程

以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: tx = session.beginTransaction();Iterator customers=session.find("from Customer c where c.age>0").iterator();while(customers.hasNext()){Customer customer=(Customer)customers.next();customer

hibernate批量更新怎么把原来的数据给全删了呢????

问题描述 两种方法都是得到同样的结果,求高手帮忙publicvoidupdate2(){Sessionsession=HibernateTools.currentSession();Transactiontx=session.beginTransaction();Stringhqlupdate="updateUsersetname=:newName";intupdateEntities=session.createQuery(hqlupdate).setString("new

在Hibernate中处理批量更新和批量删除

批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: tx = session.beginTransaction(); Iterator customers=session.find("from Customer c where c.age>0").iterator(); while(customers.hasNext()){ Customer c

LINQ To SQL在N层应用程序中的CUD操作、批量删除、批量更新

原文:LINQ To SQL在N层应用程序中的CUD操作.批量删除.批量更新 0. 说明     Linq to Sql,以下简称L2S.    以下文中所指的两层和三层结构,分别如下图所示:       准确的说,这里的分层并不是特别明确:(1) 生成的DataContext(Linq t0 SQL Runtime)和Entity是放在一个文件中的,物理上不能切割开来:上图只是展示逻辑上的结构.(2) 拿上图右边的三层结构来说,鉴于第(1)点,UI层就可以跨越BusinessLogic层,直接

批量删除-springmvc批量更新、删除

问题描述 springmvc批量更新.删除 springmvc实现批量删除.更新功能,最好能有详细的代码参考,及jsp页面的具体操作 解决方案 // 删除记录 function deleteRecord(){ if(recordIds.length==0){ Ext.MessageBox.alert("警告","您没有选择任何记录!"); }else{ Ext.MessageBox.confirm('提示', '您确定要删除选择的记录吗?', deleteRecor

PostgreSQL 如何实现批量更新、删除、插入

标签 PostgreSQL , 批量 , batch , insert , update , delete , copy 背景 如何一次插入多条记录? 如何一次更新多条记录? 如何一次批量删除多条记录? 批量操作可以减少数据库与应用程序的交互次数,提高数据处理的吞吐量. 批量插入 批量插入1 使用insert into ... select的方法 postgres=# insert into tbl1 (id, info ,crt_time) select generate_series(1,1

在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据_自学过程

导言: 在前面的教程,我们对数据访问层进行扩展以支持数据库事务.数据库事务确保一系列的操作要么都成功,要么都失败.本文我们将注意力转到创建一个批更新数据界面. 在本文,我们将创建一个GridView控件,里面的每一行记录都可以进行编辑(见图1),因此我们没有必要多添加一列来包含Edit, Update,和Cancel按钮,而是在页面包含2个"Update Products"按钮,被点击时,遍历所有的产品并对数据库进行更新.让我们开始吧. 图1:GridView控件里的每一行记录都可以编

Hibernate批量处理海量数据的方法_java

本文实例讲述了Hibernate批量处理海量数据的方法.分享给大家供大家参考,具体如下: Hibernate批量处理海量其实从性能上考虑,它是很不可取的,浪费了很大的内存.从它的机制上讲,Hibernate它是先把符合条件的数据查出来,放到内存当中,然后再进行操作.实际使用下来性能非常不理想,在笔者的实际使用中采用下面的第三种优化方案的数据是:100000条数据插入数据库, 需要约30分钟,呵呵,晕倒.(本人10分钟插入1000000条数据(字段比较小)) 总结下来有三种来处理以解决性能问题:

Linq To SQL 批量更新方法汇总

方法一.官方例子 地球人都知道的,也是不少 Linq To SQL 反对者认为效率低下的一种方法. NorthwindDataContext db = new NorthwindDataContext();var customers = db.Customers.Where(c => c.CustomerID.StartsWith("BL"));foreach (var customer in customers){ customer.Address = "Guangz