借助hibernate自动建表

?

Hibernate的ORM关系映射底层框架,为我们的开发提供了很多便利,可以说是一个非常棒的J2EE框架,我这里也不

切入主题,逆向思维,借助hibernate实现快速开发。前提,打算在项目里使用hibernate框架开发底层。仅此而已。

一般情况下,开始一个项目,首先是系统的分析需求,然后就是设计数据库,然后找个数据库客户端开始建表,建字段这是个

漫长的过程,然后开工。如果使用hibernate框架(我当然非常推荐使用),jdbc有点麻烦,很多重复的体力活,也不易维护

拓展。当然我也不否定现在有许多J2EE开源框架autoJava,rapid-framework可以帮助我们自动生成增删改查等等,为我们

提供便利。但是要使用这些框架,一是还要学习这些开源框架的思想和设计思路及使用方法,二是和我们的项目匹配问题。

所以我并不打算使用这些开源框架。

常规的思路是,设计好数据库,建好表,搞好外键,借助MyEclipse(也可以是其他IDE),自动生成映射,或者自己

写映射。这样的话就是两步。比较死板。如果新手的话,也可能产生的映射与设计思路有差别。还要不断的修改表和映射。

我推荐一个方法,是借助hibernate自动建表,首先要了解hibernate.cfg.xml中的各种属性,原来我一直不太了解(一直

都是让MyEclipse自动生成),这里面的奥妙,最近好好看了看,思路也清晰了不少。也发现了一个提高开发速度的方法。

首先介绍其中的一个属性hbm2ddl.auto,这个就是这个方案的核心属性,有四个值:create,create-drop,update,

validate。

贴出来我的源码:

<!--?启动时删数据库中的表,然后创建,退出时不删除数据表

<property?name="

hibernate.hbm2ddl.auto">create</property>-->

<!--?启动时删数据库中的表,然后创建,退出时自动删除所有表

<property?name="

hibernate.hbm2ddl.auto">create-drop</property>-->

<!--?自动修改,如果表结构与实体类不一致,那么就修改表使它们一致,数据会保留

<property?name="

hibernate.hbm2ddl.auto">update</property>-->

<!--?自动校验,如果表结构与实体类不一致,那么不做任何操作,报错

<property?name="

hibernate.hbm2ddl.auto">validate</property>-->

?

?

本来这个属性的产生是为了测试数据的,我觉得利用这个自动建表非常方便。利用这段代码:

<property name="hibernate.hbm2ddl.auto">create</property>

这样的话,我们开发就是一步了,不用数据库客户端建表和外键了,直接写数据库实体对象,然后自动生成数据表。看

来如果用Mysql的话,Sqlyogent....是不用装了,嘿嘿。Mysql被sun公司收购了,并且投入大精力发展,以后Mysql

会越来越强大的,与Java的联系也可能会更紧。Oracle之类的也一样,跨数据库是hibernate的一大特点。封装了各个数

据库的操作语句。即使你不会写各个数据库不同的操作语句,也可以使用他们,发挥他们的最大潜力。真的太爽了。

hibernate通过映射文件建表,所以使用我这种开发方案也需要对XXX.hbm.xml配置有足够的了解,起码应该会写外键关

联,一对多,一对一,多对多,组件映射都很方便的支持。

以后开发思路不是设计数据库了,而是设计实体类,直接写POJO,然后写映射,让hibernate帮我们生成数据库表,

是不是省了一步呢。不过要注意的是建好表后就把这段代码删了:<property name="hibernate.hbm2ddl.auto">create</property>

因为每加载一次项目,就会重建一次表,数据清空,所以如果表建好,就可以把这句删了,或注了。

时间: 2024-08-03 08:07:13

借助hibernate自动建表的相关文章

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

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

Hibernate自动建表失败原因总结

1.数据库方言配置,根据不同数据库版本,以及使用的数据库,选择合适的方言 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 2.配置文件中使用了create-drop属性,数据库表其实已经创建,只是又被删除了: <property name="hbm2ddl.auto">create-drop</property&

hibernate自动建表

x'ml配置文件 <!-- 扫描所有实体类 --> <property name="packagesToScan"> <list> <value>com.fit.core.pojo</value> </list> </property> //关键diamagnetic<prop key="hibernate.hbm2ddl.auto">update</prop>

Hibernate不能自动建表解决办法【转载】

  最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且在mysql中新建了一个hibernate数据库,仅此而已.然而预想不到的事情发生了--程序写好之后,运行,报错        Hibernate: insert into news_table (title, content) values (?, ?)        Exception in thre

[转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言

最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且在mysql中新建了一个hibernate数据库,仅此而已.然而预想不到的事情发生了……程序写好之后,运行,报错Hibernate: insert into news_table (title, content) values (?, ?) Exception in thread "main&quo

Spring整合Hibernate中自动建表

Spring整合Hibernate中自动建表 博客分类: JavaEE Java代码   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> <

Hibernate不能自动建表解决办法(转载自:http://blog.csdn.net/biangren/article/details/8010018)

最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且在mysql中新建了一个hibernate数据库,仅此而已.然而预想不到的事情发生了……程序写好之后,运行,报错 Hibernate: insert into news_table (title, content) values (?, ?)       Exception in thread "m

配置hibernate根据实体类自动建表功能

Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码<property name="hbm2ddl.auto">update</property>     update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表:如果表里缺少列,则自动添加列. 还有其他的参数: create:

java中根据hibernate配置文件自动建表

1.对与java项目,做数据库迁移时,都会用的数据脚本. 2.当引入hibernate时,可以创建数据库表的配置文件.可以根据表的配置文件自动在数据库建表.(数据库要预先建立好,因为hibernate只会建表,不会建库) 步骤: 1).在配置文件 hibernate.cfg.cml 中加入参数 ,配置相关数据源参数和pojo文件 <property name="hbm2dll.auto">update</property> <hibernate-confi