将“逻辑”移出数据访问层将导致大量数据库连接

时间:2011-09-30 08:36:22

标签: java data-access-layer

我的dataaccess图层中有一个处理文件导入的方法。这样的文件可以在其中包含许多需要插入数据库的记录。 此方法已包含某些“逻辑或业务规则”,需要添加更多。 问题是,如果我将其移出dataaccess层,则必须使用新连接单独插入每个记录。显然,插入数千条记录时效果不是很好。 (无法保证连接汇集)。 所以我有点迷失在如何解决这个问题上。 dataaccess层类越来越大,并且在良好的设计方面可能已经违反了几条规则。

我想到的只有生产者 - 消费者 - >业务逻辑导入文件并执行验证并将验证的记录放入队列。一个单独的线程(dataaccess层)从该队列中读取。

还有其他想法吗?有这种问题的模式吗?

2 个答案:

答案 0 :(得分:4)

您遇到了设计问题。业务逻辑层应该是一个划分事务,并且数据访问层应始终对给定事务使用相同的连接。

例如,您可以使用Spring,它可以让您使用声明式事务和连接池,并确保整个事务使用相同的连接。

答案 1 :(得分:2)

  1. 将一个separte业务层与dataaccess层分开 - 这里处理您的业务规则,当您准备调用数据访问时,创建业务对象集合 - 然后传递到DA层 - DA层将处理对象 - 作为单个行或作为单个批量操作 -
  2. 在您的业务层中使用设计模式,以保持演变简单。