栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在多线程应用程序中使用Hibernate?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在多线程应用程序中使用Hibernate?

使用每个线程会话对象,只要您不在多个线程之间共享会话对象,就可以了。

您收到的错误与多线程用法或会话管理无关。您

session.save()
对ID的使用以及明确设置ID都不正确。

没有看到您的映射

BlogPost
很难分辨,但是如果您告诉Hibernate使用该
id
字段作为主键,并且您正在使用本机生成器作为主键,那么您要做的就是:

session.beginTransaction();session.persist(b);session.flush(); // only needed if flush mode is "manual"session.getTransaction().commit();

Hibernate将为您填写ID,这

persist()
将导致插入发生在事务的范围内(
save()
不关心事务)。如果您的冲洗模式未设置为手动,则您无需致电,
flush()
因为
Transaction.commit()
它将为您处理。

请注意,使用时

persist()
,不保证在刷新会话之前就可以设置BlogPost的ID,这对您在此处的用法非常有用。

要优雅地处理错误:

try {    session.beginTransaction();    try {        session.persist(b);        session.flush(); // only needed if flush mode is "manual"        session.getTransaction().commit();    } catch (Exception x) {        session.getTransaction().rollback();        // log the error    }} catch (Exception x) {    // log the error}

顺便说一句,我建议将其设为

BlogPost.setId()
私有或可见。如果另一个类显式设置ID(再次假定本机生成器和id为主键),则很可能是实现错误。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467188.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号