最近我开始了一个maven项目来构建一个用于集成的应用程序
春天,JPA,JSF
但是在自动生成的文件夹结构中,我可以看到一个名为
数据库属性
我也有一个
持久性.xml
现在我的问题是可以在这些文件中的任何一个中定义数据库连接,谁能告诉我 1. 哪种方式更好,为什么?2. 为什么我已经有了persistence.xml,却自动生成了db.properties 文件?
我假设,从您提到 JSF 的事实来看,您正在构建一个 Web 应用程序以部署到应用程序服务器。我还警告这个问题,因为我不知道db.properties
它来自哪里。
部署到应用程序服务器时,最好在容器中配置数据库连接并通过 JNDI 将它们公开给应用程序。这允许容器管理连接池和凭证,并将这些信息保留在您的 WAR/EAR 文件之外。它还确保您的 WAR/EAR 文件与特定的数据库实例无关,因此可以在任何环境中部署到容器而无需修改。
因此,我建议不要在persistence.xml
.
另请参阅在 persistence.xml 和 spring 配置文件中配置数据源之间的区别,这是一个类似的问题 - 那里接受的答案更详细地表达了解决方案。
db.properties 文件类似于 messages.properties,用于定义键值对。之后我们将使用表达式语言中的键。所以配置只会在
persistence.xml 或 dataSource.xml
无论是首选选择,但我们将从 db.properties 以表达式语言的形式获取值,例如。
driverClassName=com.mysql.jdbc.Driver
这是您的 db.properties 中的一个条目。您将在 persistence.xml 中使用它,如下所示。
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driverClassName}" />