Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session)

实体对象的4种状态

1. Transient(临时状态) : 刚刚被 new 关键字创建,还没有被持久化,不在Session的缓存中。
2. Persistent(持久化状态) : 已经被持久化,并加入到 Session 缓存中。
3. Detached(游离状态) : 已经被持久化,但不再处于 Session 缓存中。
4. Removed(删除状态) : Session 已经计划将其从数据库删除,并且不再处于 Session 缓存中。

Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session)

p1 = new Product(); //临时状态或者瞬时状态 : 不受session管理,并且数据库中没有与之对应的记录
session.save(p1);//从临时状态变成持久化状态: 受session管理,并且数据库中存在与之对应的记录
session.close();//从持久化状态变成游离状态:不受session管理,但数据库存在与之对应的记录
持久化对象会影响(会改变)数据库中的内容

Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session)Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session)Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session)
Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session)

缓存:提高性能,降低访问数据库频率

Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session) 1 . 如果某个对象没有被引用,垃圾回收机制会收回。Session缓存会防止这种现象产生,除非session.close();
2 . nosql 不仅仅

Session缓存

session缓存针对一个session对象
Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session)

session缓存的工作过程:

  1. 当 Session 执行查询方法时,先从 Session 缓存中读取据,如果缓存中有则直接读取, 如果缓存中没有,从数据库中查询并加载到 Session 缓存中,再从缓存中读取。
  2. 当 Session 执行 save()、update() 方法时,将对象持久化到数据库中并将对象加载到 Session 缓存中。
    Hibernate对象的生命周期(临时状态,持久化状态,游离状态,删除状态)和 缓存(session)