在2层和3层应用程序中使用表示层的JDBC连接

时间:2009-09-08 09:13:48

标签: java spring jdbc 3-tier

我正在编写一个将用于不同应用程序(2层和3层)的模块。 我需要连接到数据库。因此,当使用2层应用程序时,我使模块需要java.sql.Connection对象作为参数。那里没问题。

我面临的问题是,在3层应用程序的情况下,该模块将从Presentation层使用,因此,我不想为模块提供用于DB访问的Connection对象。

你建议我用什么来解决这个问题?

2 个答案:

答案 0 :(得分:1)

在Spring中,您定义了一个应用程序上下文,在大多数情况下,它只是一个XML文件,并且包含许多名为beans的应用程序对象。

<bean id="myDbConnection" scope="prototype" class="...">
   ...
</bean>

<bean id="myPersistanceManager" class="my.application.PersistanceManager">
   <property name="connection" ref="myDbConnection" />
</bean>

myDbConnection是在同一应用程序上下文中定义的bean,包含所有连接详细信息。

然后在您的表示层中,您只需使用applicationContext.getBean(“myPersistance”),就可以获得一个初始化所有依赖项的持久性管理器实例。您可以针对不同的部署选项使用不同的应用程序上下文。

答案 1 :(得分:0)

您将连接传递给持久性对象的直觉是一个很好的,因为您不愿意让表示层负责获取它。

我建议阅读关于MVC模式并研究Spring。 Spring成语将向您展示分层应用程序的正确方法。它也有助于你的依赖问题。

更新:

您必须阅读有关Spring的更多信息。

使用Spring的常用成语web-&gt; service-&gt;持久性界面分层将有助于正确分层您的应用。

Spring有依赖注入来帮助您管理依赖项。

Spring的框架类可以帮助您获取和管理数据库连接等内容。

我认为你重写别人已经写得更好的东西是没有意义的。我建议您先浏览Spring MVC Step By Step,看看是否同意。

如果您不想学习Spring,我建议您至少查看他们为DataSource和JDBC连接编写的类。也许你可以通过观察他们来改善你的方式。