Java 如何设置弹簧的某些属性';谁是DriverManager数据源?
我正在开发一系列教程应用程序来研究不同的JavaEE技术。我正在学习各种教程,并且或多或少地坚持使用它们。最近,我开始组装一个简单的SpringCrudWebApp,用于在Employee DB表中存储、查找、修改和删除员工。我之前已经完成了另一个非常类似的应用程序,它只使用纯Java和Hibernate,旨在实现完全相同的功能。该应用程序运行正常,因此我决定将数据库连接设置从这个旧应用程序复制到新的Spring应用程序 问题是,Spring DriverManager数据源bean似乎不接受与原始Hibernate配置相同的属性设置,例如“Hibernate.hbm2ddl.auto”,我希望它在启动时方便地清除数据库,或者“defaultSchema”,Postgres出于某种原因需要它,所以我一直在配置数据库连接 我如何让Spring像在旧应用程序中的Hibernate一样接受这些属性,并表现出相同的行为?为什么bean不能以某种可预测、合理的方式接受这些特定属性,就像其他属性(如“url”或“password”)一样?我是否应该设置它们,Spring中是否有其他机制来处理我希望从属性中获得的功能 旧应用程序配置: hibernate.cfg.xmlJava 如何设置弹簧的某些属性';谁是DriverManager数据源?,java,spring,datasource,Java,Spring,Datasource,我正在开发一系列教程应用程序来研究不同的JavaEE技术。我正在学习各种教程,并且或多或少地坚持使用它们。最近,我开始组装一个简单的SpringCrudWebApp,用于在Employee DB表中存储、查找、修改和删除员工。我之前已经完成了另一个非常类似的应用程序,它只使用纯Java和Hibernate,旨在实现完全相同的功能。该应用程序运行正常,因此我决定将数据库连接设置从这个旧应用程序复制到新的Spring应用程序 问题是,Spring DriverManager数据源bean似乎不接受与
<?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数据。谢谢,我将查看这些数据,看看是否可以找到一些东西来指导我如何获得所需的功能。