开发者社区> 文艺小青年> 正文

逆向思维:借助hibernate自动建表--------为开发提速

简介:
+关注继续查看

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

打算过多介绍,有段时间没发帖了,这段时间过的挺乱的,又要想着考试,又很渴望学技术,所以总是在犹豫,该看会考

试的书,复习一下,还是继续我的技术积累和探索。实在是不想看那些无聊的东西,虽然那些对我以后的发展很有帮助。

咳~~~有时候真的有休学的念头,但是中国这个社会,没文凭又不好混。再加上父母的期待,我实在不忍心舍弃这些我费

了11年(5+3+3)得到的东西。

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

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

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

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

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

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

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

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

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

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

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

validate。

贴出来我的源码:

复制代码
<!-- 启动时删数据库中的表,然后创建,退出时不删除数据表
<property name="hbm2ddl.auto">create</property>
-->
<!-- 启动时删数据库中的表,然后创建,退出时自动删除所有表
<property name="hbm2ddl.auto">create-drop</property>
-->
<!-- 自动修改,如果表结构与实体类不一致,那么就修改表使它们一致,数据会保留
<property name="hbm2ddl.auto">update</property>
-->
<!-- 自动校验,如果表结构与实体类不一致,那么不做任何操作,报错
<property name="hbm2ddl.auto">validate</property>
-->

复制代码

 

本来这个属性的产生是为了测试数据的,我觉得利用这个自动建表非常方便。利用这段代码:
<property name="hbm2ddl.auto">create</property>

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

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

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

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

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

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

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

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

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

 本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2008/12/28/1363941.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
20318 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29698 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16874 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20968 0
hibernate自动导出数据库表
hibernate自动导出数据库表
21 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23615 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22429 0
3576
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载