在 POJO 中融合XDoclet 的映射文件自动生成机制,提供了除手动编码和由数据库导出基础代码的第三种选择。
下面小编将结合XDoclet对Hibernate中的数据映射进行介绍。
实际开发中,往往首先使用MiddleGen 和hbm2java 工具生成带有XDoclet tag的POJO。之后通过修改POJO中的XDoclettag进行映射关系调整。
XDoclet已经广泛运用在EJB开发中,在其最新版本里,包含了一个为Hibernate提供支持的子类库Hibernate Doclet,其中包含了生成Hibernate映射文件所需的ant构建支持以及java doc tag支持。
XDoclet实现基本原理是,通过在Java代码加入特定的JavaDoc tag,从而为其添加特定的附加语义,之后通过XDoclet工具对代码中JavaDoc Tag进行分析,自动生成与代码对应的配置文件,XDoclet。
在 Hibernate-Doclet中,通过引入Hibernate相关的JavaDoc tag,我们就可以由代码生成对应的Hibernate映射文件。
下面是一个代码片断,演示了Hibernate-Doclet的使用方式:
/**
* @hibernate.class
* table="TUser"
*/
public class TUser implements Serializable {
……
/**
* @hibernate.property
* column="name"
* length="50"
* not-null="true"
*
* @return String
*/
public String getName() {
return this.name;
}
……
}
以上是使用Hibernate-Doclet 描述POJO(TUser)及其对应表(TUser)之间映射关系
的一个例子。
其中用到了两个hibernate doclet tag,@hibernate.class和@hibernate.property。
这两个tag分别描述了POJO所对应的数据库表信息,以及其字段对应的库表字段信息。
之后Hibernate Doclet就会根据这些信息生成映射文件:
<hibernate-mapping>
<class
name="net.xiaxin.xdoclet.TUser"
table="TUser"
>
<property
name="name"
type="java.lang.String"
column="name"
not-null="true"
length="50"
>
</class>
</hibernate-mapping>
这样我们只需要维护Java 代码,而无需再手动编写具体的映射文件即可完成Hibernate
基础代码。
熟记Hibernate-Doclet 众多的Tag,显然不是件轻松的事情,好在目前的主流IDE 都提
供了Live Template支持。我们只需进行一些配置工作,就可以实现Hibernate-Doclet Tag
的自动补全功能,从而避免了手工编写过程中可能出现的问题。