posts - 165, comments - 198, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ant hbm 使用

Posted on 2008-04-25 11:31 G_G 阅读(1723) 评论(0)  编辑  收藏 所属分类: ant
你可以参考:快速修改 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




只有注册用户登录后才能发表评论。


网站导航: