映射文件是O/R Mapping的关键,相当于控制中心。当数据库表较多时,手动配置该映射文件非常耗时。为了快速开发程序,使开发人员的注意力集中到业务逻辑上来,Hibernate官方提供的MiddleGen工具,它可以很方便的生成映射文件。这里下载:http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc

MiddleGen是根据数据库表来生成映射文件的,所以要与数据库进行配置。具体配置如下:

[1]修改数据库配置文件:

  进入MiddleGen目录下的config/database子目录,可以看到有很多不同数据库的配置文件。根据我们的数据库选择,例如我使用的是MySql,所以打开mysql.xml文件。文件内容如下:

<property name="database.script.file" value="/${src.dir}/sql/${name}-mysql.sql"/>

<!--在这里配置JDBC驱动文件,注意,请确保MiddleGen的lib目录下有该驱动-->

<property name="database.driver.file" value="/${lib.dir}/mm.mysql-2.0.14-bin.jar"/>

<property name="database.driver.classpath" value="/${database.driver.file}"/>

<property name="database.driver" value="/org.gjt.mm.mysql.Driver"/>

<!--配置数据库URL-->

<property name="database.url" value="jdbc:mysql:///sports"/>

<!--用户名-->

<property name="database.userid" value="hiswing"/>

<!--密码-->

<property name="database.password" value="123"/>

<property name="database.schema" value=""/>

<property name="database.catalog" value=""/>

<property name="jboss.datasource.mapping" value="mySQL"/>

[2]修改Build.xml文件:

  该文件放在MiddleGen的根目录下。它是MiddleGen-Hibernate的Ant构建文件。MiddleGen-Hibernate是通过Build.xml文件的具体参数据来生成映射文件的。修改处如下:

<!--指定数据库配置文件,就是[1]中的那个文件,默认为./config/database/hsqldb.xml-->

<!DOCTYPE project [

<!ENTITY database SYSTEM "file:./config/database/mysql.xml">

]>

<!--配置Application Name,默认为airline-->

<property name="name" value="sports"/>

<!--配置文件输出目录,默认为${build.dir}/gen-src-->

<property name="build.gen-src.dir" value="E:\Programme\java\sports"/>

<!--配置对应JAVABEAN(PO)的包,默认为package="${name}.hibernate"-->

<!--genXDocletTags设置为true时生成的代码将包含xdoclet tag,可用来调整映射文件-->

<hibernate

destination="${build.gen-src.dir}"

package="com.cuitao.sports.po"

genXDocletTags="true"

genIntergratedCompositeKeys="false"

javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"

/>

至此,MiddleGen-Hibernate的配置就算完成了。接下来,将使用Ant帮助我们启动MiddleGen-Hibernate。(可以在Apache网站上下载)

运用MS-Dos方式进入MiddleGen的根目录,运行ant,将启动MiddleGen-Hibernate的界面。在此之前,别忘记启动数据库: )

Domain Class Name :PO的类名

Key Generator:主键生成器。其中有一些选项,一般选用uuid.hex 方式生成主键将提供最好的性能和数据库平台适应性。

Schema Name:数据库Schema Name

Persister:自定义持久类实现类类名。如果系统除了Hibernate 之外的其它持久层实现机制,如通过存储过程得到数据集,甚至从LDAP中获取数据来填充我们PO。

Enable proxies:代理(用于延迟加载[Lazy Loading])。

Dynamic Update:选定该项后,生成Update SQL 时将不包含未发生变动的字段属性,可以提升SQL执行效率。

Implement the Lifecyle interface:是否实现Lifecyle接口。实现Lifecyle接口后我们就可以在数据库操作之前,之后触发指定操作。

以上的配置是针对类进行的。下面将针对属性进行配置。

Hibernate mapping specialty:映射类型Key=主键,Property=属性。

Java property name:数据库字段对应的PO的属性名。

Java Type:数据库字段对应的PO属性的数据类型。

最后,单击窗口顶部的Generate 按钮,MiddleGen将自动生成这些数据库表所对应的Hibernate映射文件。映射文件是以.hbm.xml 作为后缀的,一个映射文件对应数据库的一个表。

hibernate自动生成映射文件的更多相关文章

  1. 使用Mybatis Generator插件自动生成映射文件(cmd无法进入文件,dns服务器对区域没有权威等问题)遇到问题

           使用Mybatis Genertor插件自动生MyBatis所需要的DAO接口,实体模型类,Mapping映射文件,将生成的代码赋值到项目工程中即可.     有命令行,Eclipse插 ...

  2. 在MyEclipse的Maven环境下,使用mybatis-generator插件自动生成映射文件(接口)及实体类

    在数据表比较多的情况下,手动编写sql映射文件和实体类,实在太多过繁琐,而mybatis-generator能自动生成这此东西,减少了重复性的工作量.mybatis-generator的配置容易出现问 ...

  3. hibernate反向生成映射文件报错

    报错原因:可能是你的数据库里的某个表没设置主键.

  4. hibernate 的映射文件快速生成:使用CodeSmith快速生成映射文件和映射类

    一 CodeSmith简介 本文以表自动生成NHibernate的映射文件和映射类的实例来说明一下本软件的使用方法. CodeSmith是一种基于模板的代码生成工具,其使用类似于ASP.NET的语法来 ...

  5. 使用CodeSmith快速生成映射文件和映射类

    一 CodeSmith简介 本文以表自动生成NHibernate的映射文件和映射类的实例来说明一下本软件的使用方法. CodeSmith是一种基于模板的代码生成工具,其使用类似于ASP.NET的语法来 ...

  6. Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件

    原文:转:Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件 2011-04-30 12:50 很多人不知道怎么用 IntelliJ IDE ...

  7. 【原创】Hibernate自动生成(1)

    本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正. 开发环境: Eclipse Version: Photon ...

  8. 【原创】Hibernate自动生成(2)

    本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正. 开发环境: Eclipse Version: Photon ...

  9. 解决myeclipse4.1.1对一个表生成映射文件的时候,出现“generating artifacts"的解决!

    很多人在用myeclipse4.1.1对一个表生成映射文件的时候,都出现“generating artifacts"的问题.我也遇到了这个问题,弄得我也很郁闷!看了很多人的帖子后还是无法搞定 ...

随机推荐

  1. map初始化定时器

    init_timer(); //各种定时器的初始化 void Map::init_timer() { //auto tf = GetPlug(TimerFactory); auto tf = m_sp ...

  2. .NET设计模式(17):命令模式(Command Pattern)(转)

    概述 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”.但在某些场合,比如要对行为进行“记录.撤销/重做.事务”等处理,这种无法抵御变化的紧耦合是不合适的.在这种情况下,如何将“行为 ...

  3. Sqli-labs less 34

    Less-34 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理.由上面的例子可以看到我们的方法就是将过滤函数添加的 \ 给吃掉.而get型的方式我们是以url形式提交 ...

  4. 11gR2数据库日志报错:Fatal NI connect error 12170、

    11gR2数据库日志报错:Fatal NI connect error 12170.TNS-12535.TNS-00505 [问题点数:100分,结帖人MarkIII]             不显示 ...

  5. Javascript学习笔记1 数论

    1.Javascript不用担心内存的回收与对象的销毁! 2.Javascript有:±infinity.NaN全局变量表示 被0整除的±无穷 和 非数字.undefined和null表示 未定义 和 ...

  6. JavaScript面向对象+Array的用法及字符串组合+动态建立锚点

    脚本部分: function school(sName,sDddress,sPhone,sMail) { this.SName = sName; this.SAddress = sDddress; t ...

  7. HDU 3518 Boring counting(后缀数组,字符处理)

    题目 参考自:http://blog.sina.com.cn/s/blog_64675f540100k9el.html 题目描述: 找出一个字符串中至少重复出现两次的字串的个数(重复出现时不能重叠). ...

  8. lightoj 1408 Batting Practice (概率问题,求期望,推公式)

    题意:一个人若连续进k1个球或连续不进k2个球,游戏结束,给出这个人不进球的概率p(注意:是不进球!!!),求到游戏结束时这个投球个数的期望. 不进球概率为p,进概率 q=1-p.设 f[i] 表示连 ...

  9. swift函数和初始化控件(// MARK:分割线)

    import UIKit , , , )         view.backgroundColor = UIColor.redColor()         self.view.addSubview( ...

  10. JS中 判断null

    以下是不正确的方法: var exp = null; if (exp == null) { alert("is null"); } exp 为 undefined 时,也会得到与 ...