从另一个db访问方法中调用数据库访问方法

时间:2016-12-20 10:15:56

标签: java mysql database jdbc

我是否应该避免从其他数据库访问方法中调用数据库访问方法(即:同时打开多个Connection)?

说我有一个Object Message及其相应的方法,可以从数据库selectMessge()中检索它。

Message有一个名为user的字段,其中包含User Object。 我通常将selectMessage代码看起来像这样(rsResultSet Object):

...
int userId = rs.getInt("UserId");
message.setUser(User.selectUser(userId));
...

selectUser是一种数据库访问方法,上面显然是在Connection打开时发生的)

以上是否可以?或者我应该:

  1. 检索ID
  2. 关闭连接
  3. 检索用户对象(通过打开和关闭另一个Connection
  4. 后者需要更多代码行,因为我需要在Message Object中为用户的ID提供单独的字段。

    感谢。

1 个答案:

答案 0 :(得分:1)

这取决于您的要求。除非连接用完,否则在一次打开期间建立另一个连接应该不是问题。 虽然如果你使用的是JPA或者hibernate,它会有不同的处理查询的机制,所以你可能根本就不会遇到这种情况。

恕我直言,这完全没问题,只要您的数据库支持足够的连接即可。很多情况都是这样的。

但从代码和性能的角度来看,我看到你会遇到一些其他问题。

  1. 我认为数据库处理和业务处理不是孤立的,这可能导致紧密耦合,从而导致维护成本增加。
  2. 我看到你在从结果集中读取userId后进行查询。因此,无论是处理批处理,还是处理单个记录。如果是批处理,您可以很好地收集所有用户ID并稍后获取记录。这将对性能产生重大影响,如果您有一条记录,那么最好是使用JOIN查询,这也将为您节省一次数据库之旅,这也很重要。