【发布时间】:2015-09-28 05:53:23
【问题描述】:
假设我们有一个结构如下的数据库:
- 表格新闻:包含有关新闻的数据
- 表作者:包含有关作者的数据
- 在两个表之间我们有一个多对多的关系,所以我们需要一个联结表;我们称之为 News_Authors_Junction_Table
假设我们为每个重要的表都有一个 DAO:NewsDAO、AuthorsDAO。 每个 DAO 都有一个插入方法。在插入方法开始时,获取连接,然后关闭。另外,假设我们有一个连接管理器类,它处理与数据库的连接并使用单例模式进行连接。基本上每次返回相同的连接。
现在问题来了。考虑到当我们必须插入新闻时,我们也必须插入作者。这意味着我们需要一个事务。
在NewsDAO的插入方法中,我们获取连接,设置它的自动提交为false,调用AuthorsDAO的插入方法,设置连接的自动提交为true,然后关闭连接。但是,正如我之前提到的,在每个插入方法中,我们获取连接然后关闭它。并且因为我们有一个插入方法到另一个插入方法中,所以在内部插入方法中连接是关闭的。
有没有办法解决这个问题?
【问题讨论】: