使用 xdoclet 开发 J2EE
1). 使用 Xdoclet 生成 hbm 文件 .
首先下载 xdoclet 的包 . 然后更改下面配置文件的 xdoclet.root.dir 文件属性
<?xml version="1.0" encoding="utf-8"?>
<project name= "XDoclet Examples" default= "hibernate" basedir= "." >
<property name= "xdoclet.root.dir" value= "C:/Documents and Settings/liujs/ 桌面 /xdoclet/xdoclet-1.2.3" />
<property name= "xdoclet.lib.dir" value= "${xdoclet.root.dir}/lib" />
<path id= "myclasspath" >
<fileset dir= "${xdoclet.lib.dir}" >
<include name= "*.jar" />
</fileset>
</path>
<taskdef
name= "hibernatedoclet"
classname= "xdoclet.modules.hibernate.HibernateDocletTask"
classpathref= "myclasspath"
/>
<target name= "hibernate" description= "Generate mapping documents" >
<echo> +---------------------------------------------------+ </echo>
<echo> | | </echo>
<echo> | R U N N I N G H I B E R N A T E D O C L E T | </echo>
<echo> | | </echo>
<echo> +---------------------------------------------------+ </echo>
<hibernatedoclet
destdir= "./src"
excludedtags= "@version,@author,@todo,@see"
addedtags= "@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}"
force= "false"
verbose= "true" >
<fileset dir= "./src" >
<include name= "**/*.java" />
</fileset>
<hibernate version= "3.0" />
</hibernatedoclet>
</target>
</project>
2). 使用 hibernate 生成从 hbm 文件生成 SQL 语句 .
< property name = "hbm2ddl.auto" > create </ property >
如果值为 create-drop 时当 session 被显示关闭后数据库中的表会被删除掉
当值为 create 时会每次都重新建立数据库
3)Pojo中写放xdoclet
package com.jianshe.model;
/**
* @hibernate .class table = "jianshe"
*
* @author liujs
*/
public class User {
private String id ;
/**
* @hibernate .id
* generator - class = "uuid.hex"
* length = 32
*/
public String getId() {
return id ;
}
public void setId (String id) {
this . id = id;
}
}
4) 常用的 xdoclet 写法
在类前声明表名:
* @hibernate .class table="app_user"
以下写法均在get方法前
4.1 主键的写法
/**
* @hibernate .id column="id" generator - class=" uuid.hex " unsaved - value="null"
*
*/
建议使用 generator-class="uuid.hex" 主键生成器
4.2 属性的写法
/**
* @hibernate .property length="50" not - null="true" unique="true"
*/
4.3 一对多的写法
private Set entries;
/**
* @hibernate.set
* lazy="true"
* cascade="all"
*
* @hibernate.collection-one-to-many
* class="com.xdocletbook.blog.pojo.Entry"
*
* @hibernate.collection-key
* column="blog"
*/
public Set getEntries() {
return entries;
}
如果使用了一对多,可被控方就要使用多对一,这样,插入数据的时候会执行一条SQL结约性能
private Blog blog;
/**
* @hibernate.many-to-one
*/
public Blog getBlog() {
return blog;
}
下面演示的是一个例子来源自<<Xdoclet in action>>演示了Blog 与 Entry 的一对多关系
package com.jianshe.model;
import java.util.Set;
/**
* @hibernate .class table="Blog"
*/
public class Blog {
private String id ;
private String name ;
private String owner ;
private String email ;
public Blog() {
}
/**
* @hibernate .id generator - class="uuid.hex"
*/
public String getId() {
return id ;
}
/**
* @hibernate .property
*/
public String getEmail() {
return email ;
}
/**
* @hibernate .property
*/
public String getName() {
return name ;
}
/**
* @hibernate .property
*/
public String getOwner() {
return owner ;
}
public void setEmail(String string) {
email = string;
}
public void setId(String string) {
id = string;
}
public void setName(String string) {
name = string;
}
public void setOwner(String string) {
owner = string;
}
private Set entries ;
/**
* @hibernate .set lazy="true" cascade="all"
*
* @hibernate .collection - one - to - many class="com.jianshe.model.Entry"
*
* @hibernate .collection - key column="blog"
*/
public Set getEntries() {
return entries ;
}
public void setEntries(Set set) {
entries = set;
}
}
package com.jianshe.model;
import java.util.Date;
/**
*
* @hibernate .class table="Entry"
*/
public class Entry {
private String id ;
private String text ;
private String title ;
private Date createdDate ;
public Entry() {
}
private Blog blog ;
/**
* @hibernate .many - to - one
*/
public Blog getBlog() {
return blog ;
}
public void setBlog(Blog blog) {
this . blog = blog;
}
/**
* @hibernate .id generator - class="uuid.hex"
*/
public String getId() {
return id ;
}
/**
* @hibernate .property
*/
public String getText() {
return text ;
}
/**
* @hibernate .property
*/
public String getTitle() {
return title ;
}
/**
* @hibernate .property
*/
public Date getCreatedDate() {
return createdDate ;
}
public void setId(String string) {
id = string;
}
public void setText(String string) {
text = string;
}
public void setTitle(String string) {
title = string;
}
public void setCreatedDate(Date date) {
createdDate = date;
}
}
录入完这两个类后 , 你使用 xdoclet 来生成
Hbm 文件 . 当你指定了 hibernate 的属性
< property name = "hbm2ddl.auto" > create </ property >
数据库就会自动生成了 . 不过它每次都生帮你先删除表再重建的 . 所以应用启动时一定要去掉个这属性的设置 .
关于使用代码提示的问题需要在 eclipse 中装一个叫做 doclipse 的插件 , 兄弟 . 别看了开始动手尝试一下吧 .
版权声明:本文为wnss8888原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。