Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
cats
是否会成为当前会话中的持久对象sess
?
我查看了API,但它没有提及任何内容。我非常担心这个,所以我希望我能找到一个官方提到对象是否持久的地方,当我第一次使用Hibernate' session
加载对象时,我不知道对象变得持久,我不小心修改了对象内部的值,更改刷新到数据库,这对我来说是个大问题。
基于此https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html,
接口org.hibernate.Criteria表示针对a的查询 特别是持久的阶级。
这是否意味着返回的对象是持久的?我可以安全地更改对象内的值吗?
如果对象不是持久的,为什么API doc具有setReadOnly
属性来控制:
为加载的实体和代理设置只读/可修改模式 这个标准。此设置将覆盖默认设置 持久化背景。
我对此非常困惑!
答案 0 :(得分:2)
它将在本届会议中持续存在。如果更改对象值并刷新,则在事务结束时将其保存到数据库中。检查https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/objectstate.html段 10.4.1。执行查询:
通常通过调用list()来执行查询。结果 查询将完全加载到内存中的集合中。实体 查询检索的实例处于持久状态。