用hbm2java生成Hibernate类

来源:互联网
责任编辑:李佳
字体:

  对于管理hiberante 映射文件,现有多种策略, 如:

· 一切手工编写

· 把xdoclet标记放在你的java 类中, 让其生成相应的映射文件。

· 从sql 模式(schema)生成hibernate 映射文件和java类。

· 手工编写hibernate 映射文件, 并且从hibernate 映射生成java类和sql模式。

· 基于给定的sql 模式,手工编写hibernate 映射文件,并利用hbm2java工具生成java类。

在本文中, 我们会着眼于上述方法中的最后那种方法。尽管这样的选择通常只是约略的尝试, 但此方法的确在多数情况下有许多优势:

· hibernate 映射集中在映射文件中,而不是把这些信息散布在java源代码中,这使维护变得更加容易。在某些情况下,xdoclet annotation 不支持所有在hibernate映射模式中可用的功能,你还可通过映射获得更好的控制。

· 数据库模式可分开来维护,而不是从java 类或hibernate映射文件生成。这允许那些对java/hibernate不甚了 解的数据库 管理员(dba)对数据库细节(索引,表空间,表类型等)本身有更好的控制。

由映射文件生成java类

这种方式下,hibernate映射文件主导着一切。所有的映射信息都集中在这些文件中, 就意味着不会在源代码中使用annotations。所有的持久化类都由hbm2java工具生成。之后,那些类就不能被修改。

此过程如图1所示。首先,你持有一组hibernate映射文件。你或许也需要一个hbm2java配置文件,通常称之为hbm2java.xml。利用这两个引子,hbm2java工具为每个hibernate映射文件生成一个或多个java类。hbm2java配置文件对类生成过程的优化是有用的。

        图1.用hbm2java工具将hibernate映射生成java类

一个简单类生成的例子

让我们从一个非常简单的例子开始。假设我们想映射一个book的简单数据库表,表结构定义如下:

column   | type          | modifiers

-----------+-----------------------+-----------

book_id   | character(32)     | not null

book_title | character varying(80) | not null

book_isbn  | character varying(20) | not null

为了生成这个类, 我们可以使用以下的hiberante映射文件。注意怎样利用元属性(meta-attriute)来添加注释或优化类的生成。

<?xml version='1.0'?>

<hibernate-mapping>

<class name='book' table='book'>

<meta attribute='class-description'>

a book business object.

@author duke

</meta>

<id name='id' type='string' unsaved-value='null' >

<column name='book_id' sql-type='char(32)' not-null='true'/>

<generator class='uuid.hex'/>

</id>

<property column='book_name' name='name'/>

<property column='book_isbn' name='isbn'>

<meta attribute='field-description'/>

the unique isbn code for this book.

</meta>

</property>

</class>

</hibernate-mapping>

使用此映射文件,hbm2java会生成看起来象这样的类:

/**

* a book business object.

* @author duke

*/

public class book {

private string id;

private string name;

private string isbn;

public book() {

}

public string getid() {

return id;

}

private void setid(string id) {

this.id = id;

}

public string getname() {

return name;

}

public void setname(string name) {

this.name = name;

}

/**

* the unique isbn code for this book.

*/

public string getisbn() {

return isbn;

}

public void setisbn(string isbn) {

this.isbn = isbn;

}

}

为实际项目生成类

实际上,hbm2java被设计成用来把hibernate映射文件转化成一组相应的java类。如果你想在实际的应用程序中使用这种方法,很显然,对于所有的hibernate映射文件一次性生成类会更为方便。最好的方法是把类生成结合进你的自动化构建过程中。结合进ant构建过程中使用ant调用hbm2java是相当直接的。首先,你需要申明hbm2java任务(task)以便ant可以调用它:

<taskdef name='hbm2java'

classname='net.sf.hibernate.tool.hbm2java.hbm2javatask'

classpathref='project.class.path'/>

接着,你要用到这个任务。例如,通过写一个目标(target)将源目录中的所有*.hbm.xml文件生成源代码。假设${src.hibernate}表示含有hibernate映射文件的目录,${src.generated}就是你想放源代码的地方。这样ant任务看起来就象是: 资讯转帖于 Xue163.com_JAVA认证考试题库

www.book1234.com true http://www.book1234.com/kao/58/589158.html report 50166 用hbm2java生成Hibernate类,对于管理hiberante映射文件,现有多种策略,如:·一切手工编写·把xdoclet标记放在你的java类中,让其生成相应的映射文件。·从sql模式(schema)生成hibernate映射文件和java类。·手工编写hibernate映射文件,并...
娱乐时尚
历史文化
真视界
旅游美食
精彩图文
我爱我车
母婴健康
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2018 book1234.com All Rights Reserved. 布客网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
教育考试: 学历财经建筑 医药公考资格外语电脑作文招聘中小学留学 文档 移民 文库专栏23问答中心z资讯z资讯1资讯涨资讯涨资讯1资讯图书馆IT编程数码信息解决方案信息中心lmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmIT科技问答新闻中心软件教室设计大全网络相关英语学习开发编程考试中心参考范文管理文库营销中心站长之家IT信息中心商学院数码大全硬件DIY企业服务网吧在线百科硬件知识手机平板汽车游戏家电精彩摄影现代家居IT女人经验健康养生猎奇创业攻略教育学习历史时尚潮流最近更新涨知识