Hibernate 基本操作、懒加载以及缓存

打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

前言

上一篇咱们介绍了<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 以及写了一个<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的工具类,快速入门体验了一波<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的使用,我们只需通过<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象就能实现数据库的操作了。
现在,这篇介绍使用<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 进行基本的<property name="name" type="string" lazy="true" /> CRUD、懒加载以及缓存的知识。
提示:如果你还没看上一篇,那么建议你看完上一篇再来看这篇。
上一篇:一文快速入门体验<property name="name" type="string" lazy="true" /> Hibernate
基本的<property name="name" type="string" lazy="true" /> CRUD

以下代码均写在测试类<property name="name" type="string" lazy="true" /> HibernateTest<property name="name" type="string" lazy="true" /> 中
插入操作

这个在上一篇已经演示过,这里便不再演示。
查询操作

查询有<property name="name" type="string" lazy="true" /> 2<property name="name" type="string" lazy="true" /> 种方式,通过<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象的<property name="name" type="string" lazy="true" /> get<property name="name" type="string" lazy="true" /> 方法<property name="name" type="string" lazy="true" /> 或者<property name="name" type="string" lazy="true" /> load<property name="name" type="string" lazy="true" /> 方法来实现查询,主要将查询的数据结果封装到一个<property name="name" type="string" lazy="true" /> Java<property name="name" type="string" lazy="true" /> 对象中。

  • get<property name="name" type="string" lazy="true" /> 方法
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> @Test
  2. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> public<property name="name" type="string" lazy="true" /> void<property name="name" type="string" lazy="true" /> queryByGet()<property name="name" type="string" lazy="true" /> {
  3. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 获取<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象
  4. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> session<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> HibernateUtil.getSession();
  5. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> try<property name="name" type="string" lazy="true" /> {
  6. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 使用<property name="name" type="string" lazy="true" /> get()<property name="name" type="string" lazy="true" /> 方法,第一个参数是持久化类的类型参数,第二个参数是主键标识参数,如果没有匹配的记录,那么会返回<property name="name" type="string" lazy="true" /> null
  7. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> User<property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> session.get(User.class,<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> Integer("1"));
  8. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("用户ID:"<property name="name" type="string" lazy="true" /> +<property name="name" type="string" lazy="true" /> user.getId());
  9. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> catch<property name="name" type="string" lazy="true" /> (Exception<property name="name" type="string" lazy="true" /> e)<property name="name" type="string" lazy="true" /> {
  10. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("查询User数据失败!");
  11. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> e.printStackTrace();
  12. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> finally{
  13. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 关闭<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象
  14. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> HibernateUtil.closeSession();
  15. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
  16. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
复制代码
控制台输出:可以看到,执行了查询<property name="name" type="string" lazy="true" /> SQL,并打印了用户<property name="name" type="string" lazy="true" /> ID。
  1. INFO:<property name="name" type="string" lazy="true" /> HHH000400:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> dialect:<property name="name" type="string" lazy="true" /> org.hibernate.dialect.MySQLDialect
  2. 五月<property name="name" type="string" lazy="true" /> 08,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 11:38:59<property name="name" type="string" lazy="true" /> 下午<property name="name" type="string" lazy="true" /> org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator<property name="name" type="string" lazy="true" /> initiateService
  3. INFO:<property name="name" type="string" lazy="true" /> HHH000490:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> JtaPlatform<property name="name" type="string" lazy="true" /> implementation:<property name="name" type="string" lazy="true" /> [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
  4. Hibernate:<property name="name" type="string" lazy="true" />
  5. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> select
  6. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> id1_0_0_,
  7. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.name<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> name2_0_0_,
  8. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.password<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> password3_0_0_<property name="name" type="string" lazy="true" />
  9. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> from
  10. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> user0_<property name="name" type="string" lazy="true" />
  11. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> where
  12. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id=?
  13. 用户ID:1
复制代码

  • load<property name="name" type="string" lazy="true" /> 方法
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> @Test
  2. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> public<property name="name" type="string" lazy="true" /> void<property name="name" type="string" lazy="true" /> queryByLoad()<property name="name" type="string" lazy="true" /> {
  3. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 获取<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象
  4. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> session<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> HibernateUtil.getSession();
  5. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> try<property name="name" type="string" lazy="true" /> {
  6. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 使用<property name="name" type="string" lazy="true" /> load()<property name="name" type="string" lazy="true" /> 方法,它返回对象的代理,只有该代理被调用时,Hibernate<property name="name" type="string" lazy="true" /> 才会真正去执行<property name="name" type="string" lazy="true" /> SQL<property name="name" type="string" lazy="true" /> 查询
  7. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> User<property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> session.load(User.class,<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> Integer("1"));
  8. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> ID<property name="name" type="string" lazy="true" /> 是已知的,不用进行查询
  9. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("用户ID:"<property name="name" type="string" lazy="true" /> +<property name="name" type="string" lazy="true" /> user.getId());
  10. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 此时该代理被调用,就执行<property name="name" type="string" lazy="true" /> SQL<property name="name" type="string" lazy="true" /> 语句,得到真正的数据记录
  11. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("用户名称:"<property name="name" type="string" lazy="true" /> +<property name="name" type="string" lazy="true" /> user.getName());
  12. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> catch<property name="name" type="string" lazy="true" /> (Exception<property name="name" type="string" lazy="true" /> e)<property name="name" type="string" lazy="true" /> {
  13. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("查询User数据失败!");
  14. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> e.printStackTrace();
  15. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> finally{
  16. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 关闭<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象
  17. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> HibernateUtil.closeSession();
  18. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
  19. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
复制代码
控制台输出:
  1. 五月<property name="name" type="string" lazy="true" /> 08,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 11:40:13<property name="name" type="string" lazy="true" /> 下午<property name="name" type="string" lazy="true" /> org.hibernate.dialect.Dialect<property name="name" type="string" lazy="true" /> <init>
  2. INFO:<property name="name" type="string" lazy="true" /> HHH000400:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> dialect:<property name="name" type="string" lazy="true" /> org.hibernate.dialect.MySQLDialect
  3. 五月<property name="name" type="string" lazy="true" /> 08,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 11:40:14<property name="name" type="string" lazy="true" /> 下午<property name="name" type="string" lazy="true" /> org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator<property name="name" type="string" lazy="true" /> initiateService
  4. INFO:<property name="name" type="string" lazy="true" /> HHH000490:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> JtaPlatform<property name="name" type="string" lazy="true" /> implementation:<property name="name" type="string" lazy="true" /> [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
  5. 用户ID:1
  6. Hibernate:<property name="name" type="string" lazy="true" />
  7. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> select
  8. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> id1_0_0_,
  9. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.name<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> name2_0_0_,
  10. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.password<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> password3_0_0_<property name="name" type="string" lazy="true" />
  11. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> from
  12. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> user0_<property name="name" type="string" lazy="true" />
  13. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> where
  14. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id=?
  15. 用户名称:god23bin
复制代码
可以看到,是先打印用户ID的,这里还没有执行查询<property name="name" type="string" lazy="true" /> SQL,直到下一条语句中的<property name="name" type="string" lazy="true" /> user.getName()<property name="name" type="string" lazy="true" /> 的执行,查询的<property name="name" type="string" lazy="true" /> SQL<property name="name" type="string" lazy="true" /> 语句才被<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 执行
修改操作

想对某条数据进行修改操作,那么需要将它先查询出来,然后进行修改。这里就执行了两条<property name="name" type="string" lazy="true" /> SQL,保险起见,开启事务,然后执行这两条<property name="name" type="string" lazy="true" /> SQL,接着提交事务。当然,这两条<property name="name" type="string" lazy="true" /> SQL,Hibernate<property name="name" type="string" lazy="true" /> 帮我们写的啦!
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> @Test
  2. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> public<property name="name" type="string" lazy="true" /> void<property name="name" type="string" lazy="true" /> update()<property name="name" type="string" lazy="true" /> {
  3. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 获取<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象
  4. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> session<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> HibernateUtil.getSession();
  5. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> try<property name="name" type="string" lazy="true" /> {
  6. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 开启事务
  7. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> session.beginTransaction();
  8. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 进行查询,将结果封装成<property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> 对象
  9. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> User<property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> session.get(User.class,<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> Integer("1"));
  10. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 对<property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> 对象进行修改
  11. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user.setName("公众号:god23bin");
  12. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user.setPassword("456789");
  13. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 提交事务
  14. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> session.getTransaction().commit();
  15. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> catch<property name="name" type="string" lazy="true" /> (Exception<property name="name" type="string" lazy="true" /> e)<property name="name" type="string" lazy="true" /> {
  16. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 发生异常,则回滚事务
  17. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> session.getTransaction().rollback();
  18. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("修改User数据失败!");
  19. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> e.printStackTrace();
  20. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> finally{
  21. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 关闭<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象
  22. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> HibernateUtil.closeSession();
  23. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
  24. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
复制代码
控制台输出:
  1. 五月<property name="name" type="string" lazy="true" /> 09,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 12:00:16<property name="name" type="string" lazy="true" /> 上午<property name="name" type="string" lazy="true" /> org.hibernate.dialect.Dialect<property name="name" type="string" lazy="true" /> <init>
  2. INFO:<property name="name" type="string" lazy="true" /> HHH000400:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> dialect:<property name="name" type="string" lazy="true" /> org.hibernate.dialect.MySQLDialect
  3. 五月<property name="name" type="string" lazy="true" /> 09,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 12:00:17<property name="name" type="string" lazy="true" /> 上午<property name="name" type="string" lazy="true" /> org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator<property name="name" type="string" lazy="true" /> initiateService
  4. INFO:<property name="name" type="string" lazy="true" /> HHH000490:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> JtaPlatform<property name="name" type="string" lazy="true" /> implementation:<property name="name" type="string" lazy="true" /> [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
  5. Hibernate:<property name="name" type="string" lazy="true" />
  6. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> select
  7. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> id1_0_0_,
  8. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.name<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> name2_0_0_,
  9. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.password<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> password3_0_0_<property name="name" type="string" lazy="true" />
  10. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> from
  11. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> user0_<property name="name" type="string" lazy="true" />
  12. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> where
  13. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id=?
  14. Hibernate:<property name="name" type="string" lazy="true" />
  15. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> update
  16. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" />
  17. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> set
  18. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> name=?,
  19. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> password=?<property name="name" type="string" lazy="true" />
  20. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> where
  21. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> id=?
  22. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" />
复制代码
可以看到运行前和运行后,数据的变化,如图:

如果屏幕前的小伙伴是按照我的步骤一步一步跟下来,那么你可能会遇到中文乱码的问题,此时需要在<property name="name" type="string" lazy="true" /> hibernate.cfg.xml<property name="name" type="string" lazy="true" /> 配置文件中修改<property name="name" type="string" lazy="true" /> URL,加上两个参数<property name="name" type="string" lazy="true" /> useUnicode=true&characterEncoding=UTF-8,如下:
jdbc:mysql://localhost:3306/demo_hibernate?useUnicode=true&characterEncoding=UTF-8
删除操作

删除操作需要先把数据查询出来,然后通过<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象的<property name="name" type="string" lazy="true" /> delete<property name="name" type="string" lazy="true" /> 方法将其删除。代码如下:
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> @Test
  2. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> public<property name="name" type="string" lazy="true" /> void<property name="name" type="string" lazy="true" /> delete()<property name="name" type="string" lazy="true" /> {
  3. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 获取<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象
  4. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> session<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> HibernateUtil.getSession();
  5. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> try<property name="name" type="string" lazy="true" /> {
  6. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> session.beginTransaction();
  7. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> User<property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> session.get(User.class,<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> Integer("1"));
  8. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 删除操作
  9. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> session.delete(user);
  10. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> session.getTransaction().commit();
  11. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> catch<property name="name" type="string" lazy="true" /> (Exception<property name="name" type="string" lazy="true" /> e)<property name="name" type="string" lazy="true" /> {
  12. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> session.getTransaction().rollback();
  13. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("删除User数据失败!");
  14. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> e.printStackTrace();
  15. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> finally{
  16. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 关闭<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象
  17. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> HibernateUtil.closeSession();
  18. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
  19. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
复制代码
控制台输出:
  1. 五月<property name="name" type="string" lazy="true" /> 09,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 12:10:09<property name="name" type="string" lazy="true" /> 上午<property name="name" type="string" lazy="true" /> org.hibernate.dialect.Dialect<property name="name" type="string" lazy="true" /> <init>
  2. INFO:<property name="name" type="string" lazy="true" /> HHH000400:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> dialect:<property name="name" type="string" lazy="true" /> org.hibernate.dialect.MySQLDialect
  3. 五月<property name="name" type="string" lazy="true" /> 09,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 12:10:10<property name="name" type="string" lazy="true" /> 上午<property name="name" type="string" lazy="true" /> org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator<property name="name" type="string" lazy="true" /> initiateService
  4. INFO:<property name="name" type="string" lazy="true" /> HHH000490:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> JtaPlatform<property name="name" type="string" lazy="true" /> implementation:<property name="name" type="string" lazy="true" /> [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
  5. Hibernate:<property name="name" type="string" lazy="true" />
  6. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> select
  7. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> id1_0_0_,
  8. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.name<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> name2_0_0_,
  9. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.password<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> password3_0_0_<property name="name" type="string" lazy="true" />
  10. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> from
  11. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> user0_<property name="name" type="string" lazy="true" />
  12. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> where
  13. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id=?
  14. Hibernate:<property name="name" type="string" lazy="true" />
  15. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> delete<property name="name" type="string" lazy="true" />
  16. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> from
  17. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" />
  18. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> where
  19. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> id=?
复制代码
关于<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 中对象的状态

在Hibernate中,对象的状态有<property name="name" type="string" lazy="true" /> 4<property name="name" type="string" lazy="true" /> 种,分别为<property name="name" type="string" lazy="true" /> Transient、Persistent、Detached、Removed,译名就比较多,方便起见,我选择<property name="name" type="string" lazy="true" /> 3<property name="name" type="string" lazy="true" /> 个字的译名:

  • 瞬时态(Transient):当一个对象被实例化后,它处于瞬时态,简单理解,就是<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> 操作之后。瞬时态的对象没有与之关联的数据库记录,并且没有被<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 管理。当将瞬时态的对象关联到持久态对象或通过<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象的<property name="name" type="string" lazy="true" /> save、persist<property name="name" type="string" lazy="true" /> 等方法进行持久化操作后,该对象的状态会发生变化,转成持久态。
  • 持久态(Persistent):当一个对象与<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 关联后,它就处于持久态。持久态的对象有与之对应的数据库记录,并且被<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 管理。对持久态对象的任何更改都会自动同步到数据库。持久态对象可以通过Session的<property name="name" type="string" lazy="true" /> get、load<property name="name" type="string" lazy="true" /> 等方法从数据库中获取,或者通过<property name="name" type="string" lazy="true" /> save、update、persist<property name="name" type="string" lazy="true" /> 等方法进行持久化操作。
  • 游离态(Detached):当一个持久态对象与<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 分离后,它处于游离态。游离态的对象仍然有与之对应的数据库记录,但不再受<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 管理。对游离态对象的更改不会自动同步到数据库。可以通过<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 的<property name="name" type="string" lazy="true" /> evict、clear<property name="name" type="string" lazy="true" /> 等方法将持久态对象转变为游离态对象,或者通过<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 的<property name="name" type="string" lazy="true" /> merge<property name="name" type="string" lazy="true" /> 方法将游离态对象重新关联到<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 中。
  • 删除态(Removed):当一个持久态对象被从<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> Session中删除后,它处于删除态。删除态的对象仍然有与之对应的数据库记录,但即将被从数据库中删除。删除态对象可以通过<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 的delete<property name="name" type="string" lazy="true" /> 方法进行删除操作。
Hibernate<property name="name" type="string" lazy="true" /> 通过跟踪对象的状态变化,实现了对象与数据库的同步。在<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的事务管理中,对象的状态转换是自动进行的,我们无需手动操作,Hibernate<property name="name" type="string" lazy="true" /> 会根据对象的状态进行相应的数据库操作,保证对象与数据库的一致性。
需要注意的是,Hibernate<property name="name" type="string" lazy="true" /> 的对象状态与数据库的操作并不是一一对应的,Hibernate<property name="name" type="string" lazy="true" /> 提供了一系列的持久化方法和操作,我们可以根据具体的需求选择合适的方法来进行对象状态的转换和数据库操作。对于复杂的业务逻辑和数据处理,需要仔细理解和管理对象的状态,以避免数据不一致的问题。
懒加载

Hibernate<property name="name" type="string" lazy="true" /> 的懒加载(Lazy<property name="name" type="string" lazy="true" /> Loading)是一种延迟加载策略,它允许程序在需要访问相关数据时才从数据库中加载关联对象的属性或集合。
在<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 中,懒加载是通过使用代理对象来实现的。实际上,我们在演示<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象的<property name="name" type="string" lazy="true" /> load()<property name="name" type="string" lazy="true" /> 方法时,就是懒加载了,一开始返回的是代理对象,并没有直接查询数据库,而是直到该代理对象的属性或方法被调用时,Hibernate<property name="name" type="string" lazy="true" /> 会根据需要自动执行额外的数据库查询,从而延迟加载关联的数据。
这就是懒加载,等到需要的时候才去加载。
懒加载的主要优点是可以提高系统性能和减少不必要的数据库查询。如果一个对象关联的属性或集合在业务逻辑中很少被使用,懒加载可以避免不必要的数据库访问,减轻数据库负载。
除了<property name="name" type="string" lazy="true" /> load<property name="name" type="string" lazy="true" /> 方法实现的懒加载,我们还可以通过设置映射文件中的<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> 标签的<property name="name" type="string" lazy="true" /> lazy<property name="name" type="string" lazy="true" /> 属性实现懒加载:
  1. <property name="name" type="string" lazy="true" />
复制代码
缓存

缓存是一种临时存储数据的方式,将数据保存在更快速的存储介质(如内存)中,以便将来能够快速访问和检索。
Hibernate<property name="name" type="string" lazy="true" /> 提供了缓存的技术,主要用于存储实体对象以及查询的结果集。缓存分为一级缓存(Session<property name="name" type="string" lazy="true" /> 缓存)和二级缓存(Session<property name="name" type="string" lazy="true" /> Factory<property name="name" type="string" lazy="true" /> 缓存)
一级缓存

一级缓存是与<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 相关联的缓存,它存储了从数据库中读取的实体对象。在同一个<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 中,当多次查询相同的数据时,Session<property name="name" type="string" lazy="true" /> 首先会根据对应的持久化类和唯一性标识(一般指的是ID)去缓存中查找是否存在该数据。如果存在,则直接从缓存中获取,而不再访问数据库;如果不存在,则继续向二级缓存种查找。
一级缓存是默认开启的,可以提高读取性能。
示例:
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> @Test<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> public<property name="name" type="string" lazy="true" /> void<property name="name" type="string" lazy="true" /> testFirstLevelCache()<property name="name" type="string" lazy="true" /> {<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> session<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> HibernateUtil.getSession();<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> try<property name="name" type="string" lazy="true" /> {<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("第一次查询:");<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> User<property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> session.get(User.class,<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> Integer("2"));<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("用户名:"<property name="name" type="string" lazy="true" /> +<property name="name" type="string" lazy="true" /> user.getName());<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("第二次查询:");<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> User<property name="name" type="string" lazy="true" /> user2<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> session.get(User.class,<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> Integer("2"));<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("用户名:"<property name="name" type="string" lazy="true" /> +<property name="name" type="string" lazy="true" /> user2.getName());<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> catch<property name="name" type="string" lazy="true" /> (Exception<property name="name" type="string" lazy="true" /> e)<property name="name" type="string" lazy="true" /> {<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("查询User数据失败!");<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> e.printStackTrace();<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> finally{<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 关闭<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> HibernateUtil.closeSession();<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
复制代码
控制台输出:
  1. 五月<property name="name" type="string" lazy="true" /> 09,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 9:35:31<property name="name" type="string" lazy="true" /> 下午<property name="name" type="string" lazy="true" /> org.hibernate.dialect.Dialect<property name="name" type="string" lazy="true" /> INFO:<property name="name" type="string" lazy="true" /> HHH000400:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> dialect:<property name="name" type="string" lazy="true" /> org.hibernate.dialect.MySQLDialect五月<property name="name" type="string" lazy="true" /> 09,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 9:35:32<property name="name" type="string" lazy="true" /> 下午<property name="name" type="string" lazy="true" /> org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator<property name="name" type="string" lazy="true" /> initiateServiceINFO:<property name="name" type="string" lazy="true" /> HHH000490:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> JtaPlatform<property name="name" type="string" lazy="true" /> implementation:<property name="name" type="string" lazy="true" /> [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]第一次查询:Hibernate:<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> select<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> id1_0_0_,<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.name<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> name2_0_0_,<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.password<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> password3_0_0_<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> from<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> user0_<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> where<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id=?用户名:god23bin第二次查询:用户名:god23bin
复制代码
可以看到,第二次查询是没有执行<property name="name" type="string" lazy="true" /> SQL<property name="name" type="string" lazy="true" /> 的,直接从一级缓存中获取。
二级缓存

二级缓存是在<property name="name" type="string" lazy="true" /> SessionFactory<property name="name" type="string" lazy="true" /> 级别上的缓存,用于缓存多个<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 之间共享的数据。它可以减少对数据库的访问次数,提高性能和扩展性。二级缓存可以存储实体对象、集合对象以及查询结果集。
由于<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 本身并未提供二级缓存的具体实现,所以需要借助其他缓存插件或者说策略来实现二级缓存。比如<property name="name" type="string" lazy="true" /> Ehcache、Redis<property name="name" type="string" lazy="true" /> 等。
我们这里直接使用<property name="name" type="string" lazy="true" /> Ehcache。

  • 引入依赖项
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> org.hibernate<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> hibernate-ehcache<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> 5.6.14.Final<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> net.sf.ehcache<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> ehcache<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> 2.10.0
复制代码

  • 开启二级缓存
二级缓存默认是关闭的,我们需要手动开启。在<property name="name" type="string" lazy="true" /> hibernate.cfg.xml<property name="name" type="string" lazy="true" /> 中开启二级缓存:
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" />                 ...<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> true<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> true<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> org.hibernate.cache.ehcache.internal.SingletonEhcacheRegionFactory<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" />
复制代码

  • 创建缓存配置文件
我们在<property name="name" type="string" lazy="true" /> /src/main/resources<property name="name" type="string" lazy="true" /> 目录下创建缓存配置文件<property name="name" type="string" lazy="true" /> ehcache.xml:
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" />
复制代码

  • 在持久化类的映射文件中指定缓存策略
User.hbm.xml:
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" />                 ...<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" />
复制代码
测试二级缓存:
  1. <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> @Test<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> public<property name="name" type="string" lazy="true" /> void<property name="name" type="string" lazy="true" /> testSecondLevelCache()<property name="name" type="string" lazy="true" /> {<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> session1<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> HibernateUtil.getSession();<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> session2<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> HibernateUtil.getSession();<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> try<property name="name" type="string" lazy="true" /> {<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("第一个<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 去查询数据并封装成对象");<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> User<property name="name" type="string" lazy="true" /> user1<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> session1.get(User.class,<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> Integer("2"));<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("用户名:"<property name="name" type="string" lazy="true" /> +<property name="name" type="string" lazy="true" /> user1.getName());<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("第二个<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 去查询同一数据并封装成对象");<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> User<property name="name" type="string" lazy="true" /> user2<property name="name" type="string" lazy="true" /> =<property name="name" type="string" lazy="true" /> session2.get(User.class,<property name="name" type="string" lazy="true" /> new<property name="name" type="string" lazy="true" /> Integer("2"));<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("用户名:"<property name="name" type="string" lazy="true" /> +<property name="name" type="string" lazy="true" /> user1.getName());<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> catch<property name="name" type="string" lazy="true" /> (Exception<property name="name" type="string" lazy="true" /> e)<property name="name" type="string" lazy="true" /> {<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> System.out.println("查询User数据失败!");<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> e.printStackTrace();<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> finally{<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> //<property name="name" type="string" lazy="true" /> 关闭<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 对象<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> HibernateUtil.closeSession();<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> }
复制代码
控制台输出:
  1. 五月<property name="name" type="string" lazy="true" /> 09,<property name="name" type="string" lazy="true" /> 2023<property name="name" type="string" lazy="true" /> 11:18:31<property name="name" type="string" lazy="true" /> 下午<property name="name" type="string" lazy="true" /> org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator<property name="name" type="string" lazy="true" /> initiateServiceINFO:<property name="name" type="string" lazy="true" /> HHH000490:<property name="name" type="string" lazy="true" /> Using<property name="name" type="string" lazy="true" /> JtaPlatform<property name="name" type="string" lazy="true" /> implementation:<property name="name" type="string" lazy="true" /> [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]第一个<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 去查询数据并封装成对象Hibernate:<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> select<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> id1_0_0_,<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.name<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> name2_0_0_,<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.password<property name="name" type="string" lazy="true" /> as<property name="name" type="string" lazy="true" /> password3_0_0_<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> from<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user<property name="name" type="string" lazy="true" /> user0_<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> where<property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> <property name="name" type="string" lazy="true" /> user0_.id=?用户名:god23bin第二个<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 去查询同一数据并封装成对象用户名:god23bin
复制代码
总结

本篇文章主要讲了基本的<property name="name" type="string" lazy="true" /> CRUD<property name="name" type="string" lazy="true" /> 操作,都是通过<property name="name" type="string" lazy="true" /> Session<property name="name" type="string" lazy="true" /> 去操作的,根据一个持久化类的类型以及一个唯一标识进行相关操作,然后讲了<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 中的对象的状态,有<property name="name" type="string" lazy="true" /> 4<property name="name" type="string" lazy="true" /> 种,分别是瞬时、持久、游离、删除。
接着说了<property name="name" type="string" lazy="true" /> Hibernate<property name="name" type="string" lazy="true" /> 的懒加载,有利于降低数据库的开销,当然缓存也是,除了加快我们的访问速度,也降低了直接访问数据库的开销,缓存就两种,一级和二级,一级默认是开启的,二级需要引入相关的依赖项,然后进行配置,开启二级缓存,配置缓存策略。
这里附上整个项目的目录结构,便于对照:

以上,就是本篇的内容,这些都应该掌握。咱们下期再见。
最后的最后

希望各位屏幕前的靓仔靓女们给个三连!你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!
咱们下期再见!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表