hibernate自动创建表

配置自动创建表:

<prop key="hibernate.hbm2ddl.auto">update</prop>//首次创建项目时用,项目稳定后一般注释

这里有是个值:

update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表;如果表里缺少列,则自动添加列。

还有其他的参数:
create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。

create-drop:启动hibernate时,自动创建表,程序关闭时,自动把相应的表都删除。所以程序结束时,表和数据也不会再存在。
validate :      
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

然后在配置  读取实体类映射:

有3种方法:

1、(常用)

通过注解扫描包的方式:
<property name="packagesToScan">
<list><value>com.systop.common.core.dao.testmodel</value></list>

2、

通过注解的方式:
<property name="annotatedClasses">
  <list><value>com.systop.common.core.dao.testmodel.TestDept</value></list> 
</property>

3、

mappingResources用于指定少量的hibernate配置文件像这样
Xml代码
<property name="mappingResources">
     <list> 
   <value>WEB-INF/conf/hibernate/cat.hbm.</value> 
               <value>WEB-INF/conf/hibernate/dog.hbm.xml</value> 
               ......  
     </list> 
</property>

实例:

<bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath*:/dataSource/jdbc.properties</value>
        </list>
    </property>
</bean>

<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
    <property name="driverClassName" value="${jdbcCcbs.driverClassName}"/>
    <property name="url" value="${jdbcCcbs.url}"/>
    <property name="username" value="${jdbcCcbs.username}"/>
    <property name="password" value="${jdbcCcbs.password}"/>
</bean>

<!-- 配置SessionFactory-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!--<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">-->
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <!--自动创建表配置-->
            <!--<prop key="hibernate.hbm2ddl.auto">update</prop>-->
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
            <!--结果滚动集,跟分页有关-->
            <prop key="jdbc.use_scrollable_resultset">false</prop>
        </props>
    </property>
    <!--<property name="annotatedClasses">-->
        <!--<list>-->
            <!--<value>com.jason.entity.UserEntity</value>-->
        <!--</list>-->
    <!--</property>-->
    <property name="packagesToScan">
        <list>
            <value>com.jason.entity</value>
        </list>
    </property>
</bean>
时间: 2024-12-26 14:51:11

hibernate自动创建表的相关文章

hibernate自动创建表失败

今天在使用hibernate自动创建数据库表的时候,有一个表始终无法创建,但是其他的表都创建成功了.开始以为是spring没有扫描到该实体类,检查了配置文件后发现没有问题.后来用log4j把info信息打印出来发现创建该表的时候报错了.原来是字段里面有mysql的关键字(order)导致了创建失败. mysql关键字: ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CAL

hibernate自动创建表报表不存在

在hibernate.cfg.xml配置了<property name="hibernate.hbm2ddl.auto">update</property>自动创建表,但是项目启动会报 table doesn't exists 可能原因是主键策略设置的是native 而类里的id类型是String 这个uid要换成Integer 原文地址:https://www.cnblogs.com/suni/p/8707538.html

Hibernate连接mysql数据库并自动创建表

天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 所以说,Hibernate讲白了就是简化了与数据库之间的操作,那么要玩转它自然就得连接上数据库咯.(与Hibernate对应的orm框架还有Mybatis,只不过M

hibernate 项目启动时总会自动创建表

hibernate 项目启动时总会自动创建表,造成以下错误 Caused by: java.sql.SQLSyntaxErrorException: ORA-00955: 名称已由现有对象使用 经验证,是方言使用错误导致的.项目使用的数据库版本为Oracle11g,方言应该使用  org.hibernate.dialect.Oracle10gDialect 修改配置如下: jpa: show-sql: true database-platform: org.hibernate.dialect.O

Mybatis自动创建表/更新表结构

最近有小伙伴问我mybatis有没有自动创建表结构的功能,因为他们之前一直使用hibernate用习惯了,理所当然的认为,在实体类上配置下注解或者写写映射文件,系统启动后就可以自动创建表. 我只能很遗憾的告诉他,mybatis并没有这个功能,看他兴致阑珊的样子,我只能安慰他,就算没有这功能,我们可以自己开发啊~~ 所以就有了下面这套系统,已开源大家可以下来看看~~ Mybatis_BuildTable_V0.2 https://git.oschina.net/sunchenbin/Mybatis

借助hibernate自动建表

? Hibernate的ORM关系映射底层框架,为我们的开发提供了很多便利,可以说是一个非常棒的J2EE框架,我这里也不 切入主题,逆向思维,借助hibernate实现快速开发.前提,打算在项目里使用hibernate框架开发底层.仅此而已. 一般情况下,开始一个项目,首先是系统的分析需求,然后就是设计数据库,然后找个数据库客户端开始建表,建字段这是个 漫长的过程,然后开工.如果使用hibernate框架(我当然非常推荐使用),jdbc有点麻烦,很多重复的体力活,也不易维护 拓展.当然我也不否定

hibernate 无法自动创建表 的解决办法

执行session.save() 时出现异常: org.hibernate.exception.SQLGrammarException: could not execute statement 无法创建表. 解决方法: 1)确定配置: <property name="hibernate.hbm2ddl.auto">update</property> 2)如果是mysql5的话,确定配置: <property name="hibernate.dia

在hibernate5中,关于让hibernate自动创建表报错的问题。

问题描述:在让hibernate创建自动建表时报了一下错误: Error executing DDL via JDBC Statement 问题解决:在hibernate.cfg.xml中这样配置: <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 错误是因为之前把版本5丢了.

hibernate自动建表技术_采用数据库反向生成技术

1.首先使用oracle创建一个用户: 登陆sqlplus,并以sysdba登陆到数据库: 2.创建一个用户,并对此用户授予connect,resource两个角色的权限: 3.连接到hibernate_001这个用户,并在这个用户下创建表和序列号 创建一个sequence序列 创建一个表: 到此,数据库的工作已经完成: 2.打开myeclipse,创建一个hibernate_test的java web工程 3.加入hibernate支持 右键单击项目----myeclipse---Projec