Java 可以用8.4和9.0 postgres(hibernate)库构建一个.war文件吗?
到目前为止,我们一直在使用maven依赖项来指定库,即:Java 可以用8.4和9.0 postgres(hibernate)库构建一个.war文件吗?,java,hibernate,postgresql,maven,Java,Hibernate,Postgresql,Maven,到目前为止,我们一直在使用maven依赖项来指定库,即: <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.6.10.Final</version> </dependency> <dependency> <groupId>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.10.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>3.6.10.Final</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-702.jdbc4</version>
</dependency>
org.hibernate
,但它是旧的Hibernate 3.5,不再适用。最好的解决方案可能是将jdbc驱动程序放入服务器上的共享库文件夹中,而不是将其打包到war中。这可以通过将作用域设置为提供的
您可以使用不同的依赖版本在pom中定义构建概要文件,但这需要调用构建两次,并生成两个不同的war文件。不确定我是否理解您的问题。我对这个问题的看法略有不同。以下是我的意见/建议:
不要将驱动程序相关的JAR直接绑定到war文件中,使用由应用服务器(tomcat等)管理的数据源
这样,就不会对驱动程序类产生任何依赖李>
数据源配置可以在app server上完成,您的web应用程序只需知道其JNDI名称即可进行查找李>
这也将与您的一个war文件相一致,以管理所有方法,因为war文件将真正独立于任何与驱动程序相关的依赖项
这种方法的缺点是需要在AppServer上手动维护驱动程序JAR,但这只是一次任务,并且与任何应用程序级别的更改完全分离 对于PostgreSQL,应该使用最新版本的JDBC驱动程序,而不管服务器的版本如何,真正非常古老的版本除外
说:
这是驱动程序的当前版本。除非你有不寻常的
需求(运行旧的应用程序或JVM),这是驱动程序
你应该使用。它支持Postgresql 7.2或更高版本,并且需要
1.4或更高版本的JVM
对于PostgreSQL JDBC驱动程序,由于bug已修复,并且添加了功能,因此它们通常只进入最新版本。较新的JDBC驱动程序版本知道较旧的服务器版本,并将根据服务器版本正确运行
请注意,较旧的JDBC驱动程序不知道较新的服务器版本,事实上,使用比服务器版本旧的JDBC驱动程序可能会导致安全问题。快速提示,与您的问题无关:postgresql
依赖项无论如何都应该具有运行时
范围,因为它是在运行时使用的。如果编译不需要hibernate-c3p0
,它还应该具有runtime
作用域。您可以简单地为两个版本绑定新驱动程序。使用9.1驱动程序连接到8.4没有问题。对于PostgreSQL,无论服务器的版本如何,都应该使用最新版本的JDBC驱动程序,但真正非常古老的版本除外。“这是驱动程序的当前版本。除非您有特殊要求(运行旧应用程序或JVM),否则这是您应该使用的驱动程序。它支持Postgresql 7.2或更高版本,并且需要1.4或更高版本的JVM。”感谢您的建议。完成。我希望我能+2这个,因为我觉得这样回答了两个问题:)1。如何支持PostgreSQL和2的多个版本。您应该选择哪个驱动程序版本