Spring整合Hibernate后没有自动在数据库中创建表结构
2016-12-25 23:23
495 查看
Hibernate配置文件hibernate.cfg.xml中关于SessionFactory节点配置通常如下:
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/databaseName</property>
<property name="connection.username">usernameDemo</property>
<property name="connection.password">passwordDemo</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<!-- Format SQL -->
<property name="format_sql">true</property>
<mapping resource="com/lemmata/pojo/tableDemo.hbm.xml" />
</session-factory>
其中<property
name="hbm2ddl.auto">update</property>节点的作用是:"Drop and re-create the database schema on startup".
Spring整合Hibernate后,可以将Hibernate的SessionFactory完全交给Spring来管理,并且可以使用Spring AOP来实现声明式事务管理。简化Hibernate开发的同时,也可以完全使用Spring配置文件来替代Hibernate的配置文件。
Spring配置文件applicationContext.xml中关于SessionFactory节点的配置通常如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 按照文件方式指定 -->
<!-- <property name="mappingResources">
<list>
<value>com/lemmata/pojo/tableDemo.hbm.xml</value>
</list>
</property> -->
<!-- 按照目录方式指定 -->
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/com/lemmata/pojo</value>
</list>
</property>
</bean>
其中容易产生问题的地方在于:
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hbm2ddl.auto">update</prop>
</props>
</property>
有些prop节点的key带有“hibernate”做前缀,有些没有带“ibernate”,而且不同数据库的不同版本对于“<prop key="hbm2ddl.auto">update</prop>”节点是否需要“hibernate”做前缀也有不同的要求,因此如果发现Hibernate某项属性值失效,可在对应属性前补充上“hibernate”字符作为前缀即可。
例如,如果发现Spring整合Hibernate之后没有在加载配置时自动创建数据库架构,解决方法是:可以在<prop key="hbm2ddl.auto">update</prop>节点的key中补充上“hibernate”字符作为前缀即可,如:
<prop key="hibernate.hbm2ddl.auto">update</prop>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/databaseName</property>
<property name="connection.username">usernameDemo</property>
<property name="connection.password">passwordDemo</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<!-- Format SQL -->
<property name="format_sql">true</property>
<mapping resource="com/lemmata/pojo/tableDemo.hbm.xml" />
</session-factory>
其中<property
name="hbm2ddl.auto">update</property>节点的作用是:"Drop and re-create the database schema on startup".
Spring整合Hibernate后,可以将Hibernate的SessionFactory完全交给Spring来管理,并且可以使用Spring AOP来实现声明式事务管理。简化Hibernate开发的同时,也可以完全使用Spring配置文件来替代Hibernate的配置文件。
Spring配置文件applicationContext.xml中关于SessionFactory节点的配置通常如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 按照文件方式指定 -->
<!-- <property name="mappingResources">
<list>
<value>com/lemmata/pojo/tableDemo.hbm.xml</value>
</list>
</property> -->
<!-- 按照目录方式指定 -->
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/com/lemmata/pojo</value>
</list>
</property>
</bean>
其中容易产生问题的地方在于:
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hbm2ddl.auto">update</prop>
</props>
</property>
有些prop节点的key带有“hibernate”做前缀,有些没有带“ibernate”,而且不同数据库的不同版本对于“<prop key="hbm2ddl.auto">update</prop>”节点是否需要“hibernate”做前缀也有不同的要求,因此如果发现Hibernate某项属性值失效,可在对应属性前补充上“hibernate”字符作为前缀即可。
例如,如果发现Spring整合Hibernate之后没有在加载配置时自动创建数据库架构,解决方法是:可以在<prop key="hbm2ddl.auto">update</prop>节点的key中补充上“hibernate”字符作为前缀即可,如:
<prop key="hibernate.hbm2ddl.auto">update</prop>
相关文章推荐
- ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect添加了第57区的方言解决没有异常,hibernate.dialect核心配置文件就是无法自动update创建表
- Hibernate3.x,hibernate3.x,Hibernate3.x整合Spring3.x不能实现自动创建表结构的解决办法:
- spring和hibernate整合时设置自动生成数据库的表
- spring和hibernate整合时不能自动创建表的问题
- Spring Data JPA 配置数据库表根据实体属性自动创建表结构
- spring整合hibernate自动创建表
- 同一个数据库实例,不同用户下多表创建视图,Hibernate完成ORM映射,Spring整合,后台实现
- Spring Data Jpa 实体类自动创建数据库表失败
- 关于Spring整合Hibernate中自动建表问题(hbm2ddl.auto)
- Spring整合Hibernate开发 - 使用事务管理器操作数据库 - 主配置文件
- hibernate自动创建数据库
- Hibernate创建表成功,但数据库中却没有表的解决方法
- spring与hibernate整合-使用properties文件分离数据库连接设置
- 使用hibernate根据配置的实体bean类无法自动创建数据库表
- Spring3 整合Hibernate3.5 动态切换SessionFactory (切换数据库方言)
- SpringMVC+Hibernate+jQuery+js+css+jsp+nginx整合时,(1)jsp引入js,css无效;(2)插入数据库时某字段为空;(3)web.xml配置完后,从数据库读数
- 使用hibernate自动创建数据库表格为啥产生两个中间表
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能(二)
- 利用hibernate反向自动创建数据库
- 用maven整合struts+spring+hibernate之一 用maven创建基础的web应用