Hibernate HSQLDB 两个会话

Posted

技术标签:

【中文标题】Hibernate HSQLDB 两个会话【英文标题】:Hibernate HSQLDB two sessions 【发布时间】:2015-02-10 04:51:24 【问题描述】:

我通过阅读书籍和做例子来学习 Hibernate。我正在查看

上的示例

http://www.java2s.com/Code/Java/Hibernate/UseTwoSessions.htm 网站。

这是一个有 Java 示例的知名网站。在这个例子中,它使用了我在它自己的 JVM 中运行的 HSQLDB。由于某种原因,当使用第二个会话时,此示例似乎挂起。那么问题来了,这个例子有问题吗?您能否让一个人查看它并确定它是否是一个有效的示例。

问题出在主要类中(见下面的代码) Event event2 = (Event) session2.load(Event.class, event.getId());这行挂了

感谢我们的帮助。注意:如果这段代码有问题,请告诉 www.java2s.com 上的人......如果它确实有效,请告诉我我可能做错了什么......

我正在使用此示例并增加了连接数和许多其他更改。是否有一些更改可以使 TwoSessions 示例正常工作?

感谢您的帮助 理查德

public static void main(String[] args) // HibernateUtil.setup("create table EVENTS(uid int, name VARCHAR, start_Date date, duration int);");

// hibernate code start
    HibernateFactory.buildSessionFactory();
    Session session = HibernateFactory.openSession();
    Session session2 = HibernateFactory.openSession();
    Event event = new Event();
    event.setName("Name");
    session.save(event);
    session.flush();
    Event event2 = (Event) session2.load(Event.class, event.getId());
    System.out.println(event2.getName());
    HibernateUtil.checkData("select uid, name from events");        
// hibernate code end

【问题讨论】:

【参考方案1】:

代码可能是为具有有限事务能力的 HSQLDB 1.8 编写的。当前版本期望每个连接在数据库内的自己的线程中运行。使用两个单独的线程。

【讨论】:

好的,上面的代码似乎不起作用。您需要创建一个事务,因此 session.beginTransaction();和一个 session.getTransaction().commit();是需要的。如果您尝试使用 Hibernate 示例,请查找此代码。

以上是关于Hibernate HSQLDB 两个会话的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring 和 Hibernate 中使用两个数据库/数据源

websphere启动报/WEB-INF/applicationContext-orm- hibernate.xml]: Could not resolve placeholder 'hibe

如何为 Hibernate 设置 HSQLDB?

JPA - 更新二进制数据

Hibernate 看不到 HSQLDB 中创建的表

使用本机 SQL 创建表适用于 Hibernate/HSQLDB,插入失败。为啥?