Java多线程事务服务层

时间:2015-07-13 18:55:26

标签: java multithreading spring hibernate

我有一项任务,我必须实现一个管理多个DAO的事务服务层(这些DAO只有CRUD操作)。为了在数据库中插入内容,我必须使用多个DAO,因此我需要启动一个事务。

我实现了一个实现单例模式的DAOManager类。此类具有getNewsDAO()等方法,它只返回DAO的实例。基本上我可以说DAOManager和所有DAO类每个程序都有一个实例。

我还实现了一个ConnectionManager类,它有2个字段 - 一个连接池(用于检索连接)和一个Connection字段。

基本上,当我调用服务层方法时,流程类似于:

  • 从连接池获取连接并将其设置为连接管理器内的连接字段
  • 调用所有dao方法,并通过方法参数
  • 从ConnectionManager传递连接字段

每个服务类都有一个DAOManager字段 - 它是singleton和ConnectionManager字段 - ConnectionManager不是单例。它有一个每个服务类实例的实例。

当多个线程使用服务类时出现问题。 事务由单个线程完成,但我必须确保线程之间不共享相同的连接。

我是否应该在本地线程中移动DAOManager和ConnectionManager并使ConnectionManager也单独使用?基本上每个线程的DAOManager和ConenctionManager的单个实例,从将连接传递给DAO中的方法到将其设置在DAO的实例字段中更改?

或者我的设计已经很好了吗?

0 个答案:

没有答案
相关问题