Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在2层和3层应用程序中使用表示层的JDBC连接_Java_Spring_Jdbc_3 Tier - Fatal编程技术网

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

Java 在2层和3层应用程序中使用表示层的JDBC连接,java,spring,jdbc,3-tier,Java,Spring,Jdbc,3 Tier,我正在编写一个将在不同应用程序(2层和3层)中使用的模块。 我需要连接到数据库。因此,我使模块在与两层应用程序一起使用时需要一个java.sql.Connection对象作为参数。没问题 我面临的问题是,在3层应用程序的情况下,模块将从表示层使用,因此,我不想为模块提供用于DB访问的连接对象 您建议我用什么来解决这个问题?您传递到持久性对象的连接的本能是好的,因为您不愿意让表示层负责获取它 我建议您阅读有关MVC模式的内容,并关注Spring。Spring习惯用法将向您展示分层应用程序的正确方法

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

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


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

您传递到持久性对象的连接的本能是好的,因为您不愿意让表示层负责获取它

我建议您阅读有关MVC模式的内容,并关注Spring。Spring习惯用法将向您展示分层应用程序的正确方法。这也将有助于解决您的依赖性问题

更新:

你得多读一些关于春天的书

使用Spring的常见习惯用法web->service->persistence界面分层将有助于正确分层应用程序

Spring提供了依赖项注入来帮助您管理依赖项

Spring的框架类帮助您获取和管理数据库连接之类的东西

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


如果您不想学习Spring,我建议您至少看看他们为DataSource和JDBC连接编写的类。也许您可以通过查看他们的应用程序来改进您的工作方式。

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

<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”),就可以得到一个使用所有依赖项初始化的持久性管理器实例。您可以为不同的部署选项提供不同的应用程序上下文。

谢谢,我目前正在阅读MVC模式,但我不明白它在这种特殊情况下对我有什么帮助。它似乎确实有助于在我的应用程序中分离责任,并有助于分离东西。但我还是不知道如何解决我的问题。@duffymo,你能更具体一点吗?@Attilah,看看我的最新情况。如果你想了解春天的情况,你必须在这里付出一些努力。