2012-02-08 46 views
2

我有一个需要数据库后端的Web应用程序。
我的后端非常小(最多4个表),SQL操作并不多。
所以我决定,一些强大的ORM解决方案就像是打了一个悍马和moschito我会只是做一个小DAO模式使代码更干净(而不是直接击中DB与SQL命令)。Java指南/安全道路提示

到目前为止,它的工作原理,但我不知道,我没有不知道步入pittfall。
我使用Tomcat的连接池,我期望并发访问数据库。

我的问题是有关并发性和使用的Java SQL对象。

例子:

我做到以下几点:

  • 做一个查询
  • 得到一个结果集,并用它来建立一个对象(DTO)
  • 建设这个目标我做了新的sql查询(使用相同的连接 并打开以前的结果集)

这是正确的/安全的吗?

此外,我可以重用在可重入的方式相同的连接?
我认为这是没有问题,通过多个线程使用它的权利?

通常,任何提示/指导正确的轨道上得到的是欢迎

+0

检查http://stackoverflow.com/questions/8049627/dao-and-dependency-injection-advice – jalopaba 2012-02-08 13:18:38

+0

我知道如何构造这些类。关于'Connections'' ResultSets'和'Statement'的细节对我和pittfalls – Jim 2012-02-08 13:20:17

回答

1

关于连接,只要你用你保证每一个线程需要它自己连接的连接池,所以从wiew的那点在多线程环境中,您的方法没有问题(您可以检查Is java.sql.Connection thread safe?)。

对于ResultSet和您正在执行的第二个查询,您必须考虑到ResultSet维护指向其当前数据行的游标。所以,在你的问题的关键是,如果你使用的,因为在这种情况下,你可能会得到同样的游标属性和可能出现的一些问题相同的“SELECT语句”

检查结果集的Javadoc,尤其是这样的句子:

时生成它的Statement对象被关闭时,重新执行,或用于检索从多个结果的序列中的下一个结果一个结果对象被自动关闭。

How can I avoid ResultSet is closed exception in Java?

+0

有趣的是,我不是使用相同的(偶然)选择,但很好知道this.Thanks! – Jim 2012-02-08 14:27:03