你可以参考:
快速修改 xdoclet samples ant -build.xml 适应实际开发此文档为上面的改进版。
1.在 你电脑上建一个 ant第三方扩展文件夹,我这为:D:\ant\lib
2.当使用 eclipse->window->proferences..->ant->Runtime->Global Entries->Add External JARs->选择你建的 ant_lib 下的全部jar;
3.并在Global Entries下加入你的 classpath
使用现成的 xdoclet ant -> 加入自己的 ->
<target name="hbm2ddl" depends="prepare">
<mkdir dir="${hbm2ddl.sql.dir}" />
<taskdef
name="hbm2ddl"
classname="org.hibernate.tool.ant.HibernateToolTask" >
</taskdef>
<hbm2ddl destdir="${hbm2ddl.sql.dir}" >
<configuration configurationfile="../src/hibernate.cfg.xml" />
<hbm2ddl export="true" console="false" create="false" update="false" drop="false" outputfilename="bestunix.sql"/>
</hbm2ddl>
<!-- 支持 1.5 泛型请 搜索到xjavadoc最新1.5版本,下载,替换原来的xjavadoc-1.1.x,再次运行xdoclet任务,执行成功! -->
</target>
<target name="sql" depends="hbm2ddl">
<sql driver="org.gjt.mm.mysql.Driver" password="" userid="root" autocommit="true"
url="jdbc:mysql://localhost:3306/zhongqi?characterEncoding=gbk"
src="../sql/data.sql" print="yes" output="sql_out.txt">
</sql>
</target>
成功后就可以:
使用 xdoclet 面向对象建表 ;
通过 ant -> java2hbn, hbn2ddl,insertSql
在开发过程中当要加 jar 方法为:
1.在 ant_lib 中加入 jar
2.eclipse ->> Global Entries->Add External JARs->
工程转换修改 Global Entries中的classpath
例:
java
package hbm;
import java.util.Set;
/**
* @hibernate.class table = "level"
* where = " visible = 0 "
* @author Administrator
*
*/
public class Level {
private long id ;
private String name ;
private Level father ;
private Set<Level> childSet ;
private int visible ;
public Level(){}
public Level(String name){ this.name = name ; }
public Level(String name,int visible){this.visible = visible; this.name = name ; }
/**
* @hibernate.id generator-class = "identity"
* @return
*/
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
/**
* @hibernate.property
* length = "20"
* @return
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* @hibernate.many-to-one
* cascade = "save-update"
* inverse = "false"
* column = "fid"
* @return
*/
public Level getFather() {
return father;
}
public void setFather(Level father) {
this.father = father;
}
/**
* @hibernate.set
* lazy = "true"
* table = "Level"
* cascade = "save-update"
* where = " visible = 0 "
* @hibernate.collection-key column = "fid"
* @hibernate.collection-one-to-many class = "hbm.Level"
* @return
*/
public Set<Level> getChildSet() {
return childSet;
}
public void setChildSet(Set<Level> childSet) {
this.childSet = childSet;
}
/**
* @hibernate.property
* @return
*/
public int getVisible() {
return visible;
}
public void setVisible(int visible) {
this.visible = visible;
}
}
unit
package test;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import hbm.Level;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import unit.HibernateUtil;
public class HbnUnit {
@Test
public void level() throws Exception {
Session session = HibernateUtil.currentSession();
Transaction tr = session.beginTransaction();
Level level = new Level();
level.setName("f1");
Set<Level> set = new HashSet<Level>();
set.add(new Level("c1"));
set.add(new Level("c2",1));
set.add(new Level("c3"));
set.add(new Level("c4",1 ));
set.add(new Level("c5" ));
set.add(new Level("c6",1 ));
level.setChildSet(set);
session.save(level);
session.flush() ;
session.clear();
tr.commit();
}
@Test
public void sAll() throws Exception {
Session session = HibernateUtil.currentSession();
System.out.println("---------------------------------------------");
List<Level> list = session.createQuery(" from Level tl where tl.father is null ").list();
for( Level tmp : list ){
System.out.println("---->" + tmp.getName()+" visible="+tmp.getVisible() );
for( Level tt : tmp.getChildSet() ){
System.out.println( tt.getName()+" visible="+tt.getVisible() );
}
}
System.out.println( list.get(0).getVisible()+":"+ list.size() );
}
}
结果:
Hibernate: insert into level (name, fid, visible) values (?, ?, ?)
Hibernate: insert into level (name, fid, visible) values (?, ?, ?)
Hibernate: insert into level (name, fid, visible) values (?, ?, ?)
Hibernate: insert into level (name, fid, visible) values (?, ?, ?)
Hibernate: insert into level (name, fid, visible) values (?, ?, ?)
Hibernate: insert into level (name, fid, visible) values (?, ?, ?)
Hibernate: insert into level (name, fid, visible) values (?, ?, ?)
Hibernate: update level set fid=? where id=?
Hibernate: update level set fid=? where id=?
Hibernate: update level set fid=? where id=?
Hibernate: update level set fid=? where id=?
Hibernate: update level set fid=? where id=?
Hibernate: update level set fid=? where id=?
---------------------------------------------
Hibernate: select level0_.id as id0_, level0_.name as name0_, level0_.fid as fid0_, level0_.visible as visible0_ from level level0_ where ( level0_.visible = 0 ) and (level0_.fid is null)
---->f1 visible=0
Hibernate: select childset0_.fid as fid1_, childset0_.id as id1_, childset0_.id as id0_0_, childset0_.name as name0_0_, childset0_.fid as fid0_0_, childset0_.visible as visible0_0_ from level childset0_ where ( childset0_.visible = 0 ) and childset0_.fid=?
c1 visible=0
c5 visible=0
c3 visible=0
0:1