论坛首页 入门技术论坛

在hibernate 中如何转换JDBC的操作?

浏览 2898 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-08-04  
//方法如下
public void deleteBatch(int userid) throws Exception{
String hql = "DELETE FROM Stock AS stock WHERE stock.userid=?";
Connection conn = (Connection) session.connection();
PreparedStatement pstmt = conn.prepareStatement(hql);
pstmt.setInt(1, userid);
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
//这是它所报的异常
java.lang.ClassCastException: $Proxy0
at com.icxq.impl.StockDAOImpl.deleteBatch(StockDAOImpl.java:51)
at com.test.Test.main(Test.java:12)
   发表时间:2008-08-04  
说实在的没有看懂你的这部分代码的意思.

如果你想使用hibernate进行删除.
直接用 session.delete(Object);
       这个Obejct对象就是含有oid的要被删除的实体.
       比如你这个例子里的 Stock 
       Stock  stock=new Stock();
         stock.setOid("1");
    session.delete(stock);

就可以了.

      
0 请登录后投票
   发表时间:2008-08-04  
7upCat 写道
说实在的没有看懂你的这部分代码的意思.

如果你想使用hibernate进行删除.
直接用 session.delete(Object);
       这个Obejct对象就是含有oid的要被删除的实体.
       比如你这个例子里的 Stock 
       Stock  stock=new Stock();
         stock.setOid("1");
    session.delete(stock);

就可以了.

      

谢谢你的关注,我明白你的意思,但我想实现一个批量删除,JDBC删除的效率高于“ session.delete(stock);”
所以我想“转换”
希望说明白了^_^
0 请登录后投票
   发表时间:2008-08-04  
ada1230 写道
我想实现一个批量删除,JDBC删除的效率高于“ session.delete(stock);”
所以我想“转换”
希望说明白了^_^


若想利用hibernate的删除功能,还想批量,个人不知道有什么办法
因为在hibernate中的delete方法,是delete(stock对象),而此处是以其id定位,随之删除,
不似进行 insert、update 操作会有缓存处理
0 请登录后投票
   发表时间:2008-08-05  
使用Hibernate实现批量删除其实很容易。例如
Query q = session.createQuery(
  "delete Stock s where s.userId = :userid");
q.setParameter("userid", userid, Integer);
q.executeUpdate();

不过要注意批量操作直接更改数据库,没有更新Hibernate的一级、二级缓存
0 请登录后投票
   发表时间:2008-08-06  
删除的时候。注意内存溢出
0 请登录后投票
   发表时间:2008-08-06  
卡拉阿风 写道
删除的时候。注意内存溢出

为什么要注意这一点,能否详细说说?

0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics