Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置弹簧的某些属性';谁是DriverManager数据源?_Java_Spring_Datasource - Fatal编程技术网

Java 如何设置弹簧的某些属性';谁是DriverManager数据源?

Java 如何设置弹簧的某些属性';谁是DriverManager数据源?,java,spring,datasource,Java,Spring,Datasource,我正在开发一系列教程应用程序来研究不同的JavaEE技术。我正在学习各种教程,并且或多或少地坚持使用它们。最近,我开始组装一个简单的SpringCrudWebApp,用于在Employee DB表中存储、查找、修改和删除员工。我之前已经完成了另一个非常类似的应用程序,它只使用纯Java和Hibernate,旨在实现完全相同的功能。该应用程序运行正常,因此我决定将数据库连接设置从这个旧应用程序复制到新的Spring应用程序 问题是,Spring DriverManager数据源bean似乎不接受与

我正在开发一系列教程应用程序来研究不同的JavaEE技术。我正在学习各种教程,并且或多或少地坚持使用它们。最近,我开始组装一个简单的SpringCrudWebApp,用于在Employee DB表中存储、查找、修改和删除员工。我之前已经完成了另一个非常类似的应用程序,它只使用纯Java和Hibernate,旨在实现完全相同的功能。该应用程序运行正常,因此我决定将数据库连接设置从这个旧应用程序复制到新的Spring应用程序

问题是,Spring DriverManager数据源bean似乎不接受与原始Hibernate配置相同的属性设置,例如“Hibernate.hbm2ddl.auto”,我希望它在启动时方便地清除数据库,或者“defaultSchema”,Postgres出于某种原因需要它,所以我一直在配置数据库连接

我如何让Spring像在旧应用程序中的Hibernate一样接受这些属性,并表现出相同的行为?为什么bean不能以某种可预测、合理的方式接受这些特定属性,就像其他属性(如“url”或“password”)一样?我是否应该设置它们,Spring中是否有其他机制来处理我希望从属性中获得的功能

旧应用程序配置:

hibernate.cfg.xml

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.url">jdbc:postgresql://localhost:5432/test2</property>
        <property name="connection.username">postgres</property>
        <property name="connection.password">postgres</property>

        <property name="hibernate.default_schema">public</property>
        <property name="show_sql">true</property>
        <property name="use_sql_comments">true</property>
        <property name="hibernate.hbm2ddl.auto">create</property>

        <mapping class="cz.bsc.hibernatetest.hibernatetutorial.domain.Book" />
        <mapping class="cz.bsc.hibernatetest.hibernatetutorial.domain.Author" />

    </session-factory>
</hibernate-configuration>
<beans...>
    <bean id="ds"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"></property>
        <property name="url" value="jdbc:postgresql://localhost:5432/test2"></property>
        <property name="username" value="postgres"></property>
        <property name="password" value="postgres"></property>

        <property name="spring.jpa.hibernate.defaultSchema" value="public"></property>
        <property name="spring.jpa.hibernate.show_sql" value="true"></property>
        <property name="spring.jpa.hibernate.use_sql_comments" value="true"></property>
        <property name="spring.jpa.hibernate.hbm2ddl.auto" value="create"></property>
    </bean>
</beans>

Hibernates属性不是数据源定义的一部分。 它应该在会话工厂bean下定义

例如:

<beans>
    <bean id="ds"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"></property>
        <property name="url" value="jdbc:postgresql://localhost:5432/test2"></property>
        <property name="username" value="postgres"></property>
        <property name="password" value="postgres"></property>
    </bean>


    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <property name="dataSource" ref bean="ds" />
                <property name="packagesToScan" value="db entities package name" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.defaultSchema">public</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
            </props>
        </property>
    </bean>

    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
</beans>

公众的
org.hibernate.dialogue.PostgreSqlDialogue
真的
真的
创造

休眠属性不是数据源定义的一部分。 它应该在会话工厂bean下定义

例如:

<beans>
    <bean id="ds"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"></property>
        <property name="url" value="jdbc:postgresql://localhost:5432/test2"></property>
        <property name="username" value="postgres"></property>
        <property name="password" value="postgres"></property>
    </bean>


    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <property name="dataSource" ref bean="ds" />
                <property name="packagesToScan" value="db entities package name" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.defaultSchema">public</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
            </props>
        </property>
    </bean>

    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
</beans>

公众的
org.hibernate.dialogue.PostgreSqlDialogue
真的
真的
创造

Spring从一开始就支持JPA和Hibernate。你应该做更多的研究。如果您想了解最新的信息,请查看Spring引导和Spring数据。谢谢,我将查看这些信息,看看是否可以找到一些东西来指导我如何获得所需的功能。Spring从一开始就支持JPA和Hibernate。你应该做更多的研究。如果您想了解最新信息,请查看Spring Boot和Spring数据。谢谢,我将查看这些数据,看看是否可以找到一些东西来指导我如何获得所需的功能。