一个通用的Hibernate DAO

时间:2022-02-22 12:58:29
经过one-to-one和one-to-many测试没有问题,看直接复制到任何需要DAO的工程中使用
代码
强烈建议在实际使用中加个接口

BaseDAO.JAVA


一个通用的Hibernate DAOpackage  com.lusm.HibernateSessionFactory;
一个通用的Hibernate DAO
一个通用的Hibernate DAO
import  java.io.Serializable;
一个通用的Hibernate DAO
import  java.util.List;
一个通用的Hibernate DAO
一个通用的Hibernate DAO
import  org.hibernate.Query;
一个通用的Hibernate DAO
import  org.hibernate.Session;
一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO
public   class  BaseDAO  {
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/**
一个通用的Hibernate DAO     * 添加实体
一个通用的Hibernate DAO     * 
@param obj,要添加的实体对象
一个通用的Hibernate DAO     * 
@throws Exception
一个通用的Hibernate DAO     
*/

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void add(Object obj) throws Exception{
一个通用的Hibernate DAO        Session session 
= null;
一个通用的Hibernate DAO一个通用的Hibernate DAO        
try {
一个通用的Hibernate DAO            session 
= HibernateSessionFactory.getSession();
一个通用的Hibernate DAO            session.save(obj);
一个通用的Hibernate DAO            session.beginTransaction().commit();
一个通用的Hibernate DAO一个通用的Hibernate DAO            
if(session!=null){
一个通用的Hibernate DAO                  session.close();
一个通用的Hibernate DAO            }

一个通用的Hibernate DAO一个通用的Hibernate DAO        }
 catch (RuntimeException e) {
一个通用的Hibernate DAO            session.beginTransaction().rollback();
一个通用的Hibernate DAO一个通用的Hibernate DAO            
if(session!=null){
一个通用的Hibernate DAO                  session.close();
一个通用的Hibernate DAO            }

一个通用的Hibernate DAO            
throw e;
一个通用的Hibernate DAO        }

一个通用的Hibernate DAO    }

一个通用的Hibernate DAO    
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/**
一个通用的Hibernate DAO     * 删除实体
一个通用的Hibernate DAO     * 
@param obj,要删除的实体
一个通用的Hibernate DAO     * 
@throws Exception
一个通用的Hibernate DAO     
*/

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void delete(Object obj) throws Exception{
一个通用的Hibernate DAO        Session session 
= null;
一个通用的Hibernate DAO一个通用的Hibernate DAO        
try {
一个通用的Hibernate DAO            
//取得session对象
一个通用的Hibernate DAO
            session =HibernateSessionFactory.getSession();
一个通用的Hibernate DAO            
//删除实体
一个通用的Hibernate DAO
            session.delete(obj);
一个通用的Hibernate DAO            
//提交事务
一个通用的Hibernate DAO
            session.beginTransaction().commit();
一个通用的Hibernate DAO一个通用的Hibernate DAO            
if(session!=null){
一个通用的Hibernate DAO                  session.close();
一个通用的Hibernate DAO            }

一个通用的Hibernate DAO一个通用的Hibernate DAO        }
 catch (Exception e) {
一个通用的Hibernate DAO            session.beginTransaction().rollback();
//事务回滚
一个通用的Hibernate DAO一个通用的Hibernate DAO
            if(session!=null){
一个通用的Hibernate DAO                  session.close();
一个通用的Hibernate DAO            }

一个通用的Hibernate DAO            
throw e;
一个通用的Hibernate DAO        }

一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/**
一个通用的Hibernate DAO     * 更新实体
一个通用的Hibernate DAO     * 
@param obj,要更新的实体
一个通用的Hibernate DAO     * 
@throws Exception
一个通用的Hibernate DAO     
*/

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void update(Object obj) throws Exception{
一个通用的Hibernate DAO        Session session
=null;
一个通用的Hibernate DAO一个通用的Hibernate DAO        
try {
一个通用的Hibernate DAO            
//取得session对象
一个通用的Hibernate DAO
            session=HibernateSessionFactory.getSession();
一个通用的Hibernate DAO            
//删除实体
一个通用的Hibernate DAO
            session.update(obj);
一个通用的Hibernate DAO            
//提交事务
一个通用的Hibernate DAO
            session.beginTransaction().commit();
一个通用的Hibernate DAO一个通用的Hibernate DAO            
if(session!=null){
一个通用的Hibernate DAO                  session.close();
一个通用的Hibernate DAO            }

一个通用的Hibernate DAO一个通用的Hibernate DAO        }
 catch (Exception e) {
一个通用的Hibernate DAO            session.beginTransaction().rollback();
//事务回滚
一个通用的Hibernate DAO一个通用的Hibernate DAO
            if(session!=null){
一个通用的Hibernate DAO              session.close();
一个通用的Hibernate DAO            }

一个通用的Hibernate DAO            
throw e;
一个通用的Hibernate DAO        }

一个通用的Hibernate DAO    }

一个通用的Hibernate DAO    
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/**
一个通用的Hibernate DAO     * 根据指定的hql进行查询,并返回查询结果
一个通用的Hibernate DAO     * 
@param hql,hql语句
一个通用的Hibernate DAO     * 
@return 查询结果
一个通用的Hibernate DAO     * 
@throws Exception
一个通用的Hibernate DAO     
*/

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public List<?> findByHQL(String hql) throws Exception{
一个通用的Hibernate DAO一个通用的Hibernate DAO        
try {
一个通用的Hibernate DAO            Query queryObject 
=HibernateSessionFactory.getSession().createQuery(hql);
一个通用的Hibernate DAO            
return queryObject.list();
一个通用的Hibernate DAO一个通用的Hibernate DAO        }
 catch (Exception e) {
一个通用的Hibernate DAO            
throw e;
一个通用的Hibernate DAO        }

一个通用的Hibernate DAO    }

一个通用的Hibernate DAO一个通用的Hibernate DAO    
/**
一个通用的Hibernate DAO     * 根据指定的实体类型和主键的值,查找实体对象
一个通用的Hibernate DAO     * 
@param cls,实体的类
一个通用的Hibernate DAO     * 
@param key,主键的值
一个通用的Hibernate DAO     * 
@return,查找的实体对象
一个通用的Hibernate DAO     * 
@throws Exception
一个通用的Hibernate DAO     
*/

一个通用的Hibernate DAO    
public Object findById(String cls,Serializable key)
一个通用的Hibernate DAO        
throws Exception
一个通用的Hibernate DAO一个通用的Hibernate DAO    
{
一个通用的Hibernate DAO一个通用的Hibernate DAO        
try {
一个通用的Hibernate DAO            Object instance 
= (Object) HibernateSessionFactory.getSession().get(cls, key);
一个通用的Hibernate DAO            
return instance;
一个通用的Hibernate DAO一个通用的Hibernate DAO        }
 catch (Exception e) {
一个通用的Hibernate DAO            
throw e;
一个通用的Hibernate DAO        }

一个通用的Hibernate DAO        
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO}

HibernateSessionFactory.java 我就不发了,每个工程里都有

值得注意到是:
       写代码是必须考虑到效率,资源利用,第一,不要创建无谓的实例,第二,不要写没有必要的返回语句,第三,close是有目的的,不可以滥用,第四,必须考虑到哪一步出错的概率高,必须在下一步先做判断。

如下代码就是很有问题的:
      
一个通用的Hibernate DAO一个通用的Hibernate DAO     /**
一个通用的Hibernate DAO     * 添加实体
一个通用的Hibernate DAO     * 
@param obj,要添加的实体对象
一个通用的Hibernate DAO     * 
@throws Exception
一个通用的Hibernate DAO     
*/

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public   void  add(Object obj)  throws  Exception {
一个通用的Hibernate DAO        Session ses
=null;
一个通用的Hibernate DAO        Transaction tx
=null;
一个通用的Hibernate DAO一个通用的Hibernate DAO        
try {
一个通用的Hibernate DAO            
//取得session对象
一个通用的Hibernate DAO
            ses=HibernateSessionFactory.getSession();
一个通用的Hibernate DAO            
//开始事务
一个通用的Hibernate DAO
            tx=ses.beginTransaction();
一个通用的Hibernate DAO            
//保存实体
一个通用的Hibernate DAO
            ses.save(obj);
一个通用的Hibernate DAO            
//提交事务
一个通用的Hibernate DAO
            tx.commit();
一个通用的Hibernate DAO一个通用的Hibernate DAO        }
 catch (Exception e) {
一个通用的Hibernate DAO            tx.rollback();
//事务回滚
一个通用的Hibernate DAO
            throw e;
一个通用的Hibernate DAO一个通用的Hibernate DAO        }
finally{
一个通用的Hibernate DAO            
//关闭session
一个通用的Hibernate DAO
            HibernateSessionFactory.closeSession();
一个通用的Hibernate DAO        }

一个通用的Hibernate DAO    }

使用one-to-many中执行删除时, 你可能会遇到这样的错误

一个通用的Hibernate DAOException in thread "main" org.hibernate.TransientObjectException: the detached instance passed to delete() had a null identifier
  .........
或者
一个通用的Hibernate DAOException in thread "main" org.hibernate.TransientObjectException: the detached instance passed to delete() had a null identifier
一个通用的Hibernate DAO    at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:63)
一个通用的Hibernate DAO    at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:761)
一个通用的Hibernate DAO    at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:739)
一个通用的Hibernate DAO    at com.lusm.HibernateSessionFactory.BaseDAO.delete(BaseDAO.java:44)
一个通用的Hibernate DAO    at com.lusm.main.Del.main(Del.java:19)

一个通用的Hibernate DAOException in thread "main" org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
一个通用的Hibernate DAO    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
一个通用的Hibernate DAO    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
一个通用的Hibernate DAO    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
一个通用的Hibernate DAO    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
一个通用的Hibernate DAO    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:144)
一个通用的Hibernate DAO    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
一个通用的Hibernate DAO    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
一个通用的Hibernate DAO    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
一个通用的Hibernate DAO    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
一个通用的Hibernate DAO    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
一个通用的Hibernate DAO    at com.lusm.HibernateSessionFactory.BaseDAO.delete(BaseDAO.java:46)
一个通用的Hibernate DAO    at com.lusm.main.Del.main(Del.java:18)
一个通用的Hibernate DAOCaused by: java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`lusm/test1`, CONSTRAINT `test1_ibfk_1` FOREIGN KEY (`id`) REFERENCES `test` (`id`))
一个通用的Hibernate DAO    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1669)
一个通用的Hibernate DAO    at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1085)
一个通用的Hibernate DAO    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
一个通用的Hibernate DAO    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
一个通用的Hibernate DAO    一个通用的Hibernate DAO 9 more

原因是你的xml配置和数据库创建有问题
下面给出一个成功的例子

many
xml config
一个通用的Hibernate DAO<? xml version="1.0" encoding="utf-8" ?>
一个通用的Hibernate DAO
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
一个通用的Hibernate DAO"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
一个通用的Hibernate DAO
<!--  
一个通用的Hibernate DAO    Mapping file autogenerated by MyEclipse Persistence Tools
一个通用的Hibernate DAO
-->
一个通用的Hibernate DAO
< hibernate-mapping >
一个通用的Hibernate DAO    
< class  name ="com.lusm.test.Test1"  table ="test1"  catalog ="lusm" >
一个通用的Hibernate DAO        
< id  name ="sid"  type ="java.lang.Integer" >
一个通用的Hibernate DAO            
< column  name ="sid"   />
一个通用的Hibernate DAO            
< generator  class ="increment"   />
一个通用的Hibernate DAO        
</ id >
一个通用的Hibernate DAO        
< many-to-one  name ="test"   class ="com.lusm.test.Test"  fetch ="select"   cascade ="save-update"   >
一个通用的Hibernate DAO            
< column  name ="id"  not-null ="true"   />
一个通用的Hibernate DAO        
</ many-to-one >
一个通用的Hibernate DAO        
< property  name ="sname"  type ="java.lang.String" >
一个通用的Hibernate DAO            
< column  name ="sname"  length ="20"   />
一个通用的Hibernate DAO        
</ property >
一个通用的Hibernate DAO    
</ class >
一个通用的Hibernate DAO
</ hibernate-mapping >

code
一个通用的Hibernate DAOpackage  com.lusm.test;
一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO
/**
一个通用的Hibernate DAO * Test1 generated by MyEclipse Persistence Tools
一个通用的Hibernate DAO 
*/

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO
public   class  Test1  implements  java.io.Serializable  {
一个通用的Hibernate DAO
一个通用的Hibernate DAO    
// Fields
一个通用的Hibernate DAO

一个通用的Hibernate DAO    
private Integer sid;
一个通用的Hibernate DAO    
private Test test;
一个通用的Hibernate DAO    
private String sname;
一个通用的Hibernate DAO
一个通用的Hibernate DAO    
// Constructors
一个通用的Hibernate DAO

一个通用的Hibernate DAO一个通用的Hibernate DAO    
/** default constructor */
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Test1() {
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/** minimal constructor */
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Test1(Test test) {
一个通用的Hibernate DAO        
this.test = test;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/** full constructor */
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Test1(Test test, String sname) {
一个通用的Hibernate DAO        
this.test = test;
一个通用的Hibernate DAO        
this.sname = sname;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO    
// Property accessors
一个通用的Hibernate DAO

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Integer getSid() {
一个通用的Hibernate DAO        
return this.sid;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void setSid(Integer sid) {
一个通用的Hibernate DAO        
this.sid = sid;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Test getTest() {
一个通用的Hibernate DAO        
return this.test;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void setTest(Test test) {
一个通用的Hibernate DAO        
this.test = test;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public String getSname() {
一个通用的Hibernate DAO        
return this.sname;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void setSname(String sname) {
一个通用的Hibernate DAO        
this.sname = sname;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO}

one

xml config
一个通用的Hibernate DAO<? xml version="1.0" encoding="utf-8" ?>
一个通用的Hibernate DAO
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
一个通用的Hibernate DAO"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
一个通用的Hibernate DAO
<!--  
一个通用的Hibernate DAO    Mapping file autogenerated by MyEclipse Persistence Tools
一个通用的Hibernate DAO
-->
一个通用的Hibernate DAO
< hibernate-mapping >
一个通用的Hibernate DAO    
< class  name ="com.lusm.test.Test"  table ="test"  catalog ="lusm" >
一个通用的Hibernate DAO        
< id  name ="id"  type ="java.lang.Integer" >
一个通用的Hibernate DAO            
< column  name ="id"   />
一个通用的Hibernate DAO            
< generator  class ="increment"   />
一个通用的Hibernate DAO        
</ id >
一个通用的Hibernate DAO        
< property  name ="name"  type ="java.lang.String" >
一个通用的Hibernate DAO            
< column  name ="name"  length ="20"   />
一个通用的Hibernate DAO        
</ property >
一个通用的Hibernate DAO        
< set  name ="test1s"  inverse ="true" >
一个通用的Hibernate DAO            
< key >
一个通用的Hibernate DAO                
< column  name ="id"  not-null ="true"   />
一个通用的Hibernate DAO            
</ key >
一个通用的Hibernate DAO            
< one-to-many  class ="com.lusm.test.Test1" />
一个通用的Hibernate DAO        
</ set >
一个通用的Hibernate DAO    
</ class >
一个通用的Hibernate DAO
</ hibernate-mapping >

code
一个通用的Hibernate DAOpackage  com.lusm.test;
一个通用的Hibernate DAO
一个通用的Hibernate DAO
import  java.util.HashSet;
一个通用的Hibernate DAO
import  java.util.Set;
一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO
/**
一个通用的Hibernate DAO * Test generated by MyEclipse Persistence Tools
一个通用的Hibernate DAO 
*/

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO
public   class  Test  implements  java.io.Serializable  {
一个通用的Hibernate DAO
一个通用的Hibernate DAO    
// Fields
一个通用的Hibernate DAO

一个通用的Hibernate DAO    
private Integer id;
一个通用的Hibernate DAO    
private String name;
一个通用的Hibernate DAO    
private Set test1s = new HashSet(0);
一个通用的Hibernate DAO
一个通用的Hibernate DAO    
// Constructors
一个通用的Hibernate DAO

一个通用的Hibernate DAO一个通用的Hibernate DAO    
/** default constructor */
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Test() {
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/** full constructor */
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Test(String name, Set test1s) {
一个通用的Hibernate DAO        
this.name = name;
一个通用的Hibernate DAO        
this.test1s = test1s;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO    
// Property accessors
一个通用的Hibernate DAO

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Integer getId() {
一个通用的Hibernate DAO        
return this.id;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void setId(Integer id) {
一个通用的Hibernate DAO        
this.id = id;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public String getName() {
一个通用的Hibernate DAO        
return this.name;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void setName(String name) {
一个通用的Hibernate DAO        
this.name = name;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public Set getTest1s() {
一个通用的Hibernate DAO        
return this.test1s;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
public void setTest1s(Set test1s) {
一个通用的Hibernate DAO        
this.test1s = test1s;
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO
一个通用的Hibernate DAO}

db sql
一个通用的Hibernate DAOcreate   table  `lusm`.`test1`(
一个通用的Hibernate DAO`sid` 
INT   not   null  auto_increment,
一个通用的Hibernate DAO`id` 
INT   not   null ,
一个通用的Hibernate DAO`sname` 
varchar ( 20 ),
一个通用的Hibernate DAO
primary   key  (`sid`),
一个通用的Hibernate DAO
index (sid),
一个通用的Hibernate DAO
foreign key(id) references test(id)  ON DELETE CASCADE ON UPDATE CASCADE 
一个通用的Hibernate DAO);
一个通用的Hibernate DAO    
create   table  `lusm`.`test`(
一个通用的Hibernate DAO        `id` 
INT   not   null  auto_increment,
一个通用的Hibernate DAO       `name` 
VARCHAR ( 20 ),
一个通用的Hibernate DAO        
primary   key  (`id`)
一个通用的Hibernate DAO    );

下面给出 该示例的两个测试类

insert
一个通用的Hibernate DAOpackage  com.lusm.main;
一个通用的Hibernate DAO
一个通用的Hibernate DAO
import  com.lusm.HibernateSessionFactory.BaseDAO;
一个通用的Hibernate DAO
import  com.lusm.test.Test;
一个通用的Hibernate DAO
import  com.lusm.test.Test1;
一个通用的Hibernate DAO
一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO
public   class  Main  {
一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/**
一个通用的Hibernate DAO     * 
@param args
一个通用的Hibernate DAO     * 
@throws Exception 
一个通用的Hibernate DAO     
*/

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public static void main(String[] args) throws Exception {
一个通用的Hibernate DAO        Test test 
= new Test();
一个通用的Hibernate DAO  
一个通用的Hibernate DAO        test.setName(
"nihao");
一个通用的Hibernate DAO        BaseDAO td 
= new BaseDAO();
一个通用的Hibernate DAO        td.add(test);
一个通用的Hibernate DAO        
一个通用的Hibernate DAO        Test1 t1 
= new Test1(test);
一个通用的Hibernate DAO        Test1 t2 
= new Test1(test);
一个通用的Hibernate DAO        Test1 t3 
= new Test1(test);
一个通用的Hibernate DAO        t1.setSid(
1);
一个通用的Hibernate DAO        t2.setSid(
2);
一个通用的Hibernate DAO        t3.setSid(
3);
一个通用的Hibernate DAO        t1.setSname(
"nihao");
一个通用的Hibernate DAO        t2.setSname(
"mfafs");
一个通用的Hibernate DAO        t3.setSname(
"acncs");
一个通用的Hibernate DAO        
一个通用的Hibernate DAO        BaseDAO td1 
= new BaseDAO();
一个通用的Hibernate DAO        td1.add(t1);
一个通用的Hibernate DAO        td1.add(t2);
一个通用的Hibernate DAO        td1.add(t3);
一个通用的Hibernate DAO               
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO}

delete
一个通用的Hibernate DAO package  com.lusm.main;
一个通用的Hibernate DAO
一个通用的Hibernate DAO
import  com.lusm.HibernateSessionFactory.BaseDAO;
一个通用的Hibernate DAO
import  com.lusm.test.Test;
一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO
public   class  Del  {
一个通用的Hibernate DAO
一个通用的Hibernate DAO一个通用的Hibernate DAO    
/**
一个通用的Hibernate DAO     * 
@param args
一个通用的Hibernate DAO     * 
@throws Exception 
一个通用的Hibernate DAO     
*/

一个通用的Hibernate DAO一个通用的Hibernate DAO    
public static void main(String[] args) throws Exception {
一个通用的Hibernate DAO        Test test 
= new Test();
一个通用的Hibernate DAO        test.setId(
1);
一个通用的Hibernate DAO        BaseDAO bd 
= new BaseDAO();
一个通用的Hibernate DAO        bd.delete(test);
一个通用的Hibernate DAO    }

一个通用的Hibernate DAO}