北京pk10技巧

用hbm2java生成Hibernate类

来源:互联网
更新时间:2018/2/8 23:09:52
责任编辑:鲁能
字体:

  对于管理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认证考试题库

根据您访问的内容,您可能还对以下内容感兴趣,希望对您有帮助:

java hibernate hbm2ddl默认是什么,是必要配置吗

北京pk10技巧答: 该配置是说是否根据实体对象在数据库中创建表结构

java,ssh项目,怎么使用hbm2dll ?

答:Configuration cfg = new Configuration().configure(); SchemaExport schemaExport= new SchemaExport(cfg); schemaExport.create(false, true); 但是在实际开发中 一般都是先建表 后生成映射文件的

如何查看hibernate的hbm2ddl.auto的源码?

答:点开jar包,解压缩,找到响应的类,就看到了,不过应该你也看不懂,因为在底层是c语言并不是java。而且c语言你也看不见。所以说java不是开源的。

hbm2ddl生成建数据库文件,但没内容

北京pk10技巧答:这个问题确实难倒我了 那是你的DLl文件错误

跪求大神帮忙! org.hibernate.util.JDBCException...

答:Accès refusé pour l'utilisateur: 'root'@'@localhost' 这是什么语?法语? 应该是账号和密码写错了吧?

用MyEclipse7.0配置Hibernate3.2时,User.hbm.xml...

北京pk10技巧答:User.java 文件放在com.hibernate包下 在你生成的时候最上面有一个java src folder 按browse选择你的项目和包即可 机制都没搞定,就要自动生成,你娃有前途

用MyEclipse7.0配置Hibernate3.2时,User.hbm.xml...

答:user.hbm.xml这个放在哪里都没关系,可以生成之后再移动,但是User.java就必须事先定义好位置了,不然你User.hbm.xml里的路径就要全部重新在改,定义的方法就是在选中表之后确定与表对以的类名的时候把包名也加上。最初的那个选择路径好像没什么...

hibernate运行时出错!请各位帮帮忙啊!

答:空指针异常,查看是否有的值填写的不对。或者是web.xml配置

hibernate程序错误:求大神解决,谢谢了

答:hibernate连接数据库的驱动的问题,你看看数据库名,用户名,密码,是正确的么?

hibernate新增字段问题

答:手动去数据库中把该字段加上 alter table CKYW_YK add column TAX_RATE varchar2(50);

怎么通过MyEclipse生成Hibernate类和hbm.xml?

7、使项目支持Hibernate:在项目名称上有件-----MyEclipse-----Add Hibernate capabili... 否则不能生成一对多,多对多等映射 14、点击finish完成,到java试图中观察生成的文件...

如何基于Hibernate在Java类中实现,根据数据库表生成持久化类...

北京pk10技巧 </target> 上面的代码是生成hbm跟cfg文件的,下面再介绍如何从java类到数据库... <sleep seconds="1"/> <hibernatetool destdir="etc/hbm2doc...

如何基于Hibernate在Java类中实现,根据数据库表生成持久化类...

Hibernate前两天刚学的,具体操作的确很麻烦,我也相帮你,可是说不清楚啊

用什么工具能使hibernate中的.java文件自动生成对应的.hbm.xm...

Hibernate中有这类工具,但前提是在java类中写大量的表示其关系的代码,个人感觉很难... 用myeclipse打开数据库,在数据库上直接右键选反向工程,就可以生产相应的 *.hbm.xml ...

如何用hibernate的hbm.xml文件生成java的pojo

北京pk10技巧你需要配置status和spring,才可以反射出数据库表的实体类和xml文件 具体操作百度有 望采纳

hibernate反向工程生成一个X.hbm.xml和xId.java X.java

北京pk10技巧用X.java。之所以会这样生成pojo,是应为你的数据库中表没有主键吧?不信你去看看,hibernate是强烈建议表要有主键的,你的表没有主键,它就生成了一个类XId来作为X类里的相...

Java代码生成Hibernate中实体下的*.hbm.xml和*.java的代码发一...

北京pk10技巧我写过份 过只能生成基本属性 关系只能生成对多 还要

有没有Java代码生成Hibernate中实体vo下的*.hbm.xml和*.java的

这个很简单~~ 自动生成就可以了~ 我写过一套Java代码~~~ 还有详解~~ QQ 传给你~~ 加我吧~

怎么在eclipse中对数据库表生成hibernate映射文件(.java)、映射...

装myeclipse吧,数据库视图里面有,直接用myeclipse连接数据库,找到表,右键,然后选hibernate reverse engineering就可以进自动生成映射的界面了。当然eclipse里你也可以找一...


网友评论
最新添加资讯
24小时热门资讯
娱乐时尚
科技资讯
历史文化
真视界
旅游美食
精彩图文
我爱我车
母婴健康
Copyright © 2004-2018 xue163.net All Rights Reserved. 学网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
北京pk10开奖记录-联盟欢迎您 北京pk10开奖记录-联盟欢迎您 北京pk10开奖记录-联盟欢迎您 北京pk10开奖记录-联盟欢迎您 北京pk10开奖记录-联盟欢迎您 document.write ('');