Hibernate应用及其详解(强力推荐)..ppt

  1. 1、本文档共94页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.4.1 Hibernate批量处理 下面将使用HQL批量删除课程表中课程号大于200的课程。 Session session=HibernateSessionFactory.getSession(); Transaction ts=session.beginTransaction(); //在HQL查询中使用delete进行批量删除 Query query=session.createQuery(delete Kcb where kch200); query.executeUpdate(); mit(); HibernateSessionFactory.closeSession(); 4.4.1 Hibernate批量处理 (2)绕过Hibernate调用JDBC进行批量删除 同样删除课程表中课程号大于200的课程。 Session session=HibernateSessionFactory.getSession(); Transaction ts=session.beginTransaction(); Connection conn=session.connection(); try { Statement stmt= conn.createStatement(); //调用JDBC的delete进行批量删除 stmt.executeUpdate(delete from KCB where KCH200); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } mit(); HibernateSessionFactory.closeSession(); 4.4.2 实体对象生命周期 实体对象的生命周期有以下3种状态。 1.transient(瞬时态) 瞬时态,即实体对象在内存中的存在,与数据库中的记录无关。如下面的代码: Student stu=new Student(); stu.setSnumber(081101); stu.setSname(李方方); stu.setSage(21); 2.persisent(持久态) 在这种状态下,实体对象的引用被纳入Hibernate实体容器中加以管理。处于持久状态的对象,其变更将由Hibernate固化到数据库中。例如下面的代码。 4.4.2 实体对象生命周期 3.Detached(脱管状态) 处于持久态的对象,其对应的Session实例关闭之后,此对象就处于脱管状态。Session实例可以看做是持久对象的宿主,一旦此宿主失效,其从属的持久对象进入脱管状态。如下面的代码: // stu处于瞬时态 Student stu=new Student(); Student stu1=new Student(); stu.setSnumber(081101); stu.setSname(李方方); stu.setSage(21); stu1.setSnumber(081102); stu1.setSname(程明); stu1.setSage(22); Transaction tx=session.beginTransaction(); // stu对象由Hibernate纳入管理容器,处于持久状态 session.save(stu); mit(); // stu对象状态为脱管态,因为与其关联的session已经关闭 session.close(); 4.4.3 Hibernate事务管理 1.基于JDBC的事务管理 Hibernate是JDBC的轻量级封装,本身并不具备事务管理能力。在事务管理层,Hibernate将其委托给底层的JDBC或JTA,以实现事务管理和调度功能。 在JDBC的数据库操作中,一项事务是由一条或多条表达式组成的不可分割的工作单元,通过提交commit()或回滚rollback()来结束事务的操作。 将事务管理委托给JDBC进行处理是最简单的实现方式,Hibernate对于JDBC事务的封装也比较简单。如下面的代码: Session session=sessionFactory.openSession(); Transaction tx=session.beginTransaction(); session.save(room); mit(); 从JDBC层面而言,上面的代码实际上对应着: Connection cn=getConnection; cn.setAutoCommit(false); // JDBC调用相关的SQL语句 mit(); 4.4.3 Hibernate事务管理 下面的代码不会对数据库产

文档评论(0)

zilaiye + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档