em.getTransaction().begin();
StringData sd = em.find(StringData.class, key);
System.out.println("Old value: " + sd.getData());
sd.setData(newValue);
// em.persist(sd);
em.getTransaction().commit();
如您所见,我没有调用persist
,它已经被注释掉了,因为我先是干运行这段代码。但是,事实证明它不是很干。检查数据库后,我发现数据已更改(幸运的是,这是一个测试数据库)。
显然,我对Hibernate / JPA的理解是有缺陷的。并非persist
总是需要打电话来更改数据吗?如果没有,保存什么东西的规则 是 什么?
是的,如果检测到任何更改,则在完成刷新(也使用提交完成刷新)后保存托管实体,这称为脏检查。
问题内容: JodaTime有一个提供Hibernate持久性的库。最近,我开始研究Joda-Money,开始了解如何使用hibernate来保持这种状态,而我看不到任何库。 有什么建议么? 问题答案: 好吧,我把你的意见,并炮制了钱的自定义类型为乔达库中的定义,作为参考的人可以看看它在这里,在这里使用和测试自定义类型在这里
问题内容: 与MySQL的Hibernate连接未关闭。在大约10秒钟内单击10次后,我从MySQL Workbench(在我的开发机中。我是唯一的用户)获得此连接统计信息。MySQL Workbench Server状态 我已经准备好了 C3P0并正在运行(从log4j中检查,与C3P0相关的问题没有问题,似乎正在运行) 一个ServletReqestListener,它检查是否存在打开的会话,
问题内容: 我有文章清单。 那些文章是通过使用插入的,效果很好。 现在,每篇文章都有一个authorId,不应保留它。而是我想找到存储的作者RealmObject并为文章设置其关系。 某种程度上,这似乎并不是领域所坚持的。 这同样适用于图像RealmObject,只是我在保存之前进行了迭代。 这是完整的代码段。 如果您需要更多信息,请告诉我。 谢谢。 问题答案: 来自Realm的基督徒。您将继续操
问题内容: 我在StackOverflow上遇到了类似的问题,尝试了解决方案,但没有找到答案。 我正在使用一种相当通用的JPA策略来设置某些实体的上次修改时间。设置列和字段,然后使用标记方法,并将其设置为等于当前时间。 问题是,我可以在调试器中看到正在调用该方法并且该字段正在更新,但是在我的数据库日志中,我仅看到一个SQL调用,以UPDATE更改字段,其中不包含timestamp字段的UPDATE
问题内容: 我对Hibernate还是很陌生,一直在尝试确定它将为您做什么以及需要您做什么。 最重要的是处理一个对象,该对象具有数据库中尚不存在的依赖项。例如,我有一个Project对象,其中包含一个Manufacturer字段,该字段接受Manufacturer对象作为其值。在数据库中,我有一个带mfr_id列的产品表,该列是对Manufacturers表的引用(一种相当典型的单向一对多关系)。
问题内容: 有人可以透视一下JPA和Hibernate之间的区别吗?还是将这些互补的概念一起使用? 问题答案: 大致来说,JPA是java社区的一个标准,这里是specs,它是由Hibernate家伙实现(并扩展)的(此处提供一些信息)。作为规范,您将不会直接使用JPA,而是使用JPA实现。 请注意,如果要使用hibernateJPA扩展,将破坏与其他JPA实现的兼容性(尽管有些人会说“为什么要使