Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate条件加载对象时,对象是否会持久化?_Java_Hibernate_Persistence - Fatal编程技术网

Java Hibernate条件加载对象时,对象是否会持久化?

Java Hibernate条件加载对象时,对象是否会持久化?,java,hibernate,persistence,Java,Hibernate,Persistence,在当前会话中,cats是否会成为持久对象sess 我查过了,但什么都没说。我非常担心这一点,所以我希望我能找到一个地方正式提到对象是否会持久化,当我第一次使用Hibernate的会话加载对象时,我没有意识到对象会持久化,我不小心修改了对象内的值,更改刷新到数据库,这给我带来了很大的问题 基于此, 接口org.hibernate.Criteria表示对 特定的持久类 这是否意味着返回的对象是持久的?我可以安全地更改对象内部的值吗 如果对象不会持久化,为什么API文档要使用setReadOnly属性

在当前会话中,
cats
是否会成为持久对象
sess

我查过了,但什么都没说。我非常担心这一点,所以我希望我能找到一个地方正式提到对象是否会持久化,当我第一次使用Hibernate的
会话
加载对象时,我没有意识到对象会持久化,我不小心修改了对象内的值,更改刷新到数据库,这给我带来了很大的问题

基于此,

接口org.hibernate.Criteria表示对 特定的持久类

这是否意味着返回的对象是持久的?我可以安全地更改对象内部的值吗

如果对象不会持久化,为什么API文档要使用
setReadOnly
属性进行控制:

为加载的实体和代理设置只读/可修改模式 这是一个标准。此设置将覆盖的默认设置 持久性上下文


我对此感到非常困惑

它将在当前会话中保持不变。若更改对象值并刷新,则在事务结束时将其保存到数据库中。检查第10.4.1段。执行查询:

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


这太糟糕了。。。您知道如何通过Hibernate获取数据,但它们不处于持久状态吗?如果有人没有意识到并意外地将其刷新,这是非常危险的…将对象从会话中分离或使会话成为session.setDefaultReadOnly(true)。详细的选项可以找到:谢谢分享。太糟糕了,如果我们总是在数据加载后需要分离,那就太麻烦了。使用
setDefaultReadOnly
将删除所有持久对象,而不是特定对象。除此之外,hibernate没有任何方法将数据自动加载到非持久对象中?无状态会话session=sessionFactory.openStatelessSession()如何;?
Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();