`

初学Hibernate缓存,照着书上写的代码运行结果与书上不符合

阅读更多
package mypack;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import sessionfactory.HibernateSessionFactory;

public class test2 {

 /**
  * @param args
  */


 public static void main(String[] args) {


  //储存插入记录的id
  int insertid;


  //新建实例
  TUser insertuser = new TUser();
  insertuser.setName("name1");
  insertuser.setResume("resume1");


  //插入实例
  Session session = HibernateSessionFactory.getSession();
  Transaction tx = session.beginTransaction();  
  session.save(insertuser);
  insertid = insertuser.getId();
  tx.commit();
  session.close();
  
  // 装载插入的实例
  session = HibernateSessionFactory.getSession();
  TUser user = (TUser) session.load(TUser.class, new Integer(insertid));
  System.out.println("装载实例成功,id==>" + user.getId());
  tx = session.beginTransaction();


  // 删除插入的实例
  String hql = "delete TUser where id = "+insertid;
  Query query = session.createQuery(hql);
  query.executeUpdate();
  tx.commit();


  // 读取删除的实例,抛出异常
  user = (TUser) session.load(TUser.class, new Integer(insertid));
  System.out.println("读取缓存中存放的id成功, id==>" + user.getId());
  // 捕捉异常
  try {
   System.out.println(user.getName());
  } catch (org.hibernate.ObjectNotFoundException e) {
   System.out.println("代码user.getname()发生异常,因为该实例已经被删除");
   System.out.println(e.toString());
   System.out.println("结论:Query.execxuteUpdate()方法删除数据是缓存同步的");
  }
  session.close();
 }
}



打印信息如下:

Hibernate: insert into tuser (name, resume) values (?, ?)
装载实例成功,id==>43
Hibernate: delete from tuser where id=43
读取缓存中存放的id成功, id==>43
Hibernate: select tuser0_.id as id0_, tuser0_.name as name0_0_, tuser0_.resume as resume0_0_ from tuser tuser0_ where tuser0_.id=?
代码user.getname()发生异常,因为该实例已经被删除
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [mypack.TUser#43]
结论:Query.execxuteUpdate()方法删除数据是缓存同步的

分享到:
评论

相关推荐

    Hibernate初学者简单代码

    本教程将基于“Hibernate初学者简单代码”这个主题,深入探讨Hibernate的基本概念、核心功能以及如何在实际项目中应用。 一、Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者用面向对象...

    hibernate二级缓存 SSH

    SSH(Struts2、Spring、Hibernate)是一种...通过部署到Tomcat服务器,初学者可以了解和学习如何在实际环境中配置和使用Hibernate二级缓存。这将是一个不错的实践项目,有助于理解SSH框架和Hibernate缓存的工作原理。

    hibernate入门代码(附有测试代码)

    本压缩包提供了一个基础的Hibernate入门示例,包括了必要的配置文件和测试代码,适合初学者学习理解Hibernate的工作原理。 1. **Hibernate概述** Hibernate是一个开源的ORM框架,它将Java类与数据库表进行映射,...

    最简单Hibernate工程代码

    【标题】"最简单Hibernate工程代码"涉及到的是Java开发中的持久化框架Hibernate的入门级实践。Hibernate是一个强大的ORM(对象关系映射)框架,它允许开发者以面向对象的方式处理数据库操作,大大简化了数据库编程。...

    书籍-java持久层框架之hibernate完整高清PDF

    6. **缓存机制**:讨论Hibernate的缓存策略,包括一级缓存和二级缓存,以及如何优化缓存性能。 7. **性能优化**:提供一些最佳实践和技巧,如延迟加载、批处理、连接池配置等,以提高Hibernate应用的性能。 8. **...

    精通Hibernate(孙卫琴)

    孙卫琴在书中分享了关于缓存策略(一级缓存和二级缓存)、延迟加载、批处理更新等提升Hibernate性能的技巧。同时,他还探讨了事务管理和并发控制,这些都是确保数据一致性和完整性的关键。 最后,书中的实战案例...

    hibernate最简单源代码

    综上所述,"hibernate最简单源代码"示例将涵盖以上关键概念,帮助初学者了解如何使用Hibernate框架进行数据库操作。通过阅读和实践这些源代码,你可以更好地理解Hibernate的工作原理,为实际项目开发打下坚实的基础...

    hibernate 常用书籍

    这份指南可能包含如何集成Spring框架、如何处理大数据量操作、如何在分布式环境中使用Hibernate、以及如何利用JPA(Java Persistence API)与Hibernate的交互等内容。此外,还可能涉及了错误处理和调试技巧,帮助...

    26. 尚硅谷_佟刚_Hibernate 课件及源代码

    尚硅谷_佟刚_Hibernate 课件及源代码" 描述简洁明了,表明这是针对Hibernate的一套完整学习资源,包括了课程讲解的PPT文件以及与课程相关的编程实践代码。通过这些材料,学习者可以系统地学习Hibernate的各个方面,...

    hibernate5.2.9

    通过学习Hibernate 5.2.9的源码,可以深入了解其内部实现,包括查询解析、结果集转换、缓存策略等细节,有助于提升开发技能。同时,了解并掌握这些知识点,将极大地提高Java应用的开发效率和质量。

    Hibernate入门jar包

    总之,这个压缩包为初学者提供了一个快速上手Hibernate的环境,包含了必要的依赖,使得开发者可以直接开始构建基于Hibernate的Java应用,而无需花费大量时间在依赖管理上。通过学习和实践,你可以掌握如何使用...

    HibernateDemo

    【标题】"HibernateDemo"是一个基础的Hibernate项目,旨在为初学者提供学习Hibernate框架的起点。Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,消除了传统JDBC...

    hibernate_3.1源码

    2. **第一级缓存与第二级缓存**:Hibernate如何实现对象的缓存机制,提高数据访问效率,并理解不同级别的缓存策略。 3. **事务管理**:了解Hibernate如何与JDBC或JTA协作,处理事务的提交、回滚和隔离级别。 4. **...

    struts2+spring+hibernate3的简易图书管理系统

    struts2+spring+hibernate3的简易图书管理系统,特别适合初学者集成! 实现了简单的分页和模糊查询。(基本上涵盖了开发ssh2的包),值得拥有哦! 注:数据库sql文件(mysql 5.5)在里面,要自己配好!

    struts2+hibernate3.3图书管理系统

    5. **二级缓存**:Hibernate支持二级缓存,可以提高性能,尤其是在读多写少的应用中。 在"struts2+hibernate3.3图书管理系统"项目中,这两个框架协同工作,实现图书的增删改查功能。Struts2负责接收用户的HTTP请求...

    hibernate课程笔记.doc

    在JDBC(Java Database Connectivity)的基础上,Hibernate 提供了面向对象的编程模型,减少了与数据库交互时的繁琐代码,提高了开发效率。以下是关于Hibernate的一些关键知识点: ### 1. JDBC 的优缺点 **JDBC的...

    Hibernate开发lib包

    - Caching:为了提高性能,Hibernate提供了缓存机制,如一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),可以通过插件如 EhCache 进行配置。 - Mappings:Hibernate通过XML或注解来定义...

    深入浅出Hibernate

    在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,...

    基于hibernate的简单留言本

    1. **JDBC与Hibernate比较**: Hibernate通过ORM简化了JDBC的繁琐操作,如手动编译SQL、设置参数、处理结果集等。 2. **懒加载与立即加载**: Hibernate提供了懒加载机制,只在需要时加载关联对象,提高性能。但需...

Global site tag (gtag.js) - Google Analytics