Hibernate标准加载对象,会将对象变为持久化吗?

时间:2016-08-25 01:19:51

标签: java hibernate persistence

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属性来控制:

  

为加载的实体和代理设置只读/可修改模式   这个标准。此设置将覆盖默认设置   持久化背景。

我对此非常困惑!

1 个答案:

答案 0 :(得分:2)

它将在本届会议中持续存在。如果更改对象值并刷新,则在事务结束时将其保存到数据库中。检查https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/objectstate.html 10.4.1。执行查询

  

通常通过调用list()来执行查询。结果   查询将完全加载到内存中的集合中。实体   查询检索的实例处于持久状态。