ant hbm 使用

你可以参考: 快速修改 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



你可能感兴趣的:(ant hbm 使用)