Hibernate对象持久化怎么理解

蜗牛 互联网技术资讯 2021-12-05 281 0

本篇内容介绍了“Hibernate对象持久化怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Hibernate对象持久化类(persistent class)新实例化的对象是瞬时(Transient)的。 我们可通过将瞬时(Transient)对象与session关联而把它变为持久(Persistent)的。

DomesticCat fritz = new DomesticCat();  fritz.setColor(Color.GINGER);  fritz.setSex('M');  fritz.setName("Fritz");  Long generatedId = (Long) sess.save(fritz);

如果Cat的持久化标识(identifier)是generated类型的, 那么该标识(identifier)会自动在save()被调用时产生并分配给cat。 如果Cat的持久化标识(identifier)是assigned类型的,或是一个复合主键(composite key), 那么该标识(identifier)应当在调用save()之前手动赋予给cat。 你也可以按照EJB3 early draft中定义的语义,使用persist()替代save()。

此外,你可以用一个重载版本的save()方法。

DomesticCat pk = new DomesticCat();  pk.setColor(Color.TABBY);  pk.setSex('F');  pk.setName("PK");  pk.setKittens( new HashSet() );  pk.addKitten(fritz);  sess.save( pk, new Long(1234) );

如果你持久化的对象有关联的对象(associated objects)(例如上例中的kittens集合) 那么对这些对象(译注:pk和kittens)进行持久化的顺序是任意的(也就是说可以先对kittens进行持久化也可以先对pk进行持久化), 除非你在外键列上有NOT NULL约束。 Hibernate不会违反外键约束,但是如果你用错误的顺序持久化对象(译注:在pk持久化之前持久化kitten),那么可能会违反NOT NULL约束。

通常你不会为这些细节烦心,因为你很可能会使用传播性Hibernate对象持久化(transitive persistence)功能自动保存相关联那些对象。 这样连违反NOT NULL约束的情况都不会出现了 - Hibernate会管好所有的事情。 

“Hibernate对象持久化怎么理解”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注蜗牛博客网站,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram