为什么在Jpa Configuration中将数据源与persistence.xml一起使用

时间:2019-08-18 11:35:57

标签: java spring spring-boot jpa spring-data-jpa

我正在尝试配置数据库属性,现在正在使用persistence.xml。这是文件代码:

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
         http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">

<persistence-unit name="techblog">

    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

    <properties>
        <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/technicalblog" />
        <property name="javax.persistence.jdbc.user" value="postgres" />
        <property name="javax.persistence.jdbc.password" value="postgres" />

        <property name="hibernate.dialect" val>ue="org.hibernate.dialect.PostgreSQL82Dialect" />
        <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>

        <property name="hibernate.hbm2ddl.auto" value="update" /> <!-- update -->
        <property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console -->
        <property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted -->

    </properties>
</persistence-unit>

现在我有一个Java文件负责配置。这是代码:

@Configuration
public class JpaConfig {

@Bean
public EntityManagerFactory entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean emfb  = new LocalContainerEntityManagerFactoryBean();
    emfb.setPersistenceXmlLocation("classpath:META-INF/persistence.xml");
    emfb.afterPropertiesSet();

    return emfb.getObject();
}

@Bean
public DataSource dataSource() {
    DriverManagerDataSource ds = new DriverManagerDataSource();
    ds.setDriverClassName("org.postgresql.Driver");
    ds.setUrl("jdbc:postgresql://localhost:5432/technicalblog");
    ds.setUsername("postgres");
    ds.setPassword("postgres");
    return ds;
}

}

现在我不明白为什么即使我已经在使用persistence.xml并且该xml具有所有数据库配置属性,为什么仍需要此数据源bean。

如果我在JpaConfig类中注释了数据源bean,则应用程序无法启动。

谁能告诉我这个原因,我是spring框架的新手。

0 个答案:

没有答案