gpt4 book ai didi

java - 如果我从代码中排除 session.evict() 会发生什么?

转载 作者:行者123 更新时间:2023-12-01 17:00:23 25 4
gpt4 key购买 nike

我是 hibernate 新手。我想知道我们是否有 session.evict() 的替代方案。我已经评论了该行,并且我的逻辑运行良好。

最佳答案

session.evict() 方法用于从与 session 关联的缓存中删除特定对象。因此,删除它会强制 hibernate 从数据库中获取对象,而不是查看缓存。示例

Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
try
{
SomeEntity myEntity= (SomeEntity) session.load(SomeEntity.class, new Integer(1)); //look in cache (will not be found) if not found then fetch from database
System.out.println(myEntity.getName());

myEntity = (SomeEntity) session.load(SomeEntity.class, new Integer(1)); //look in cache(will be found) if not then fetch from database
System.out.println(myEntity.getName());

session.evict(myEntity); // will remove from cache

myEntity = (SomeEntity) session.load(SomeEntity.class, new Integer(1)); // object will again be fetched from database if not found in second level cache
System.out.println(myEntity.getName());
}
finally
{
session.getTransaction().commit();
HibernateUtil.shutdown();
}

编辑:Session.evict() 将从一级缓存中删除实体,并且从 session 中删除对象后,对对象的任何更改都不会保留。如果使用cascade="evict"映射关联,则关联的对象也将被分离。

希望对你有帮助!!

关于java - 如果我从代码中排除 session.evict() 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61517567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com