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