最近我开始了一个maven项目来构建一个集成
的应用程序Spring,JPA,JSF
但是在自动生成的文件夹结构中,我可以看到一个名为
的文件db.properties
我也有一个
的persistence.xml
现在我的问题是数据库连接可以在这些文件中定义,任何人都可以告诉我 1.哪种方式更好,为什么? 2.为什么在我已经拥有persistence.xml时会自动生成db.properties文件?
答案 0 :(得分:0)
我假设您提到JSF,您正在构建一个Web应用程序以部署到应用程序服务器。我还要警告这个问题,因为我不知道db.properties
或它来自哪里。
部署到应用程序服务器时,最好在容器中配置数据库连接,并通过JNDI将它们公开给应用程序。这允许容器管理连接池和凭据,并将此信息保留在WAR / EAR文件之外。它还确保您的WAR / EAR文件与特定数据库实例无关,因此可以在任何环境中部署到容器而无需修改。
因此,我建议您不要在persistence.xml
。
另见Difference between configuring data source in persistence.xml and in spring configuration files这是一个类似的问题 - 那里接受的答案更详细地表达了解决方案。
答案 1 :(得分:0)
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}" />