映射文件是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. ios UI实现技巧

    statusBar 移动位置 NSString *key = [[NSString alloc] initWithData:[NSData dataWithBytes:(unsigned ] enco ...

  2. asp.net各种类型视频播放代码(全)

    1.avi格式 代码片断如下: <object id="video" width="400" height="200" border= ...

  3. 教你如何利用xml格式的sitemap文件做好SEO

    教你如何利用xml格式的sitemap文件做好SEO 浏览: | 更新:-- : 一般的网站中都有网站地图文件,它有HTML格式与XML格式,网站地图可以帮助搜索引擎抓取.帮助用户找到自己所需要的内容 ...

  4. 快速编写HTML,CSS代码的有力工具Emmet插件

    Emmet 是一个编辑器插件,它以一种简写的语法规则可用于快速编写html或css文档内容,它支持多种编辑器. 从官网:http://emmet.io/ 可下载各个编辑器的插件.notepad++ 插 ...

  5. 为什么主流网站无法捕获 XSS 漏洞?

    二十多年来,跨站脚本(简称 XSS)漏洞一直是主流网站的心头之痛.为什么过了这么久,这些网站还是对此类漏洞束手无策呢? 对于最近 eBay 网站曝出的跨站脚本漏洞,你有什么想法?为什么会出现这样的漏网 ...

  6. http status 汇总

    http status 汇总 常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redir ...

  7. uva 11294

    Problem E: Wedding Up to thirty couples will attend a wedding feast, at which they will be seated on ...

  8. sematext

    https://sematext.atlassian.net/wiki/display/PUBLOGSENE/Syslog

  9. Codeforces Round #335 (Div. 2) D. Lazy Student 贪心

    D. Lazy Student   Student Vladislav came to his programming exam completely unprepared as usual. He ...

  10. 妙味课堂——HTML+CSS(第四课)(一)

    这一课学的东西真是太多了,还不赶快记下来,留待以后慢慢回味! 首先我们回顾一下inline-block的特性: 使块元素在一行显示 使内嵌支持宽高 换行被解析了(问题) 不设置宽度的时候,宽度由内容撑 ...