⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hibernatedao.java

📁 通过面向对象的对象-关系映射持久化技术
💻 JAVA
字号:
package com.faw_qm.ipa.service;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.*;
import java.io.Serializable;
import com.faw_qm.ipa.bo.*;

/**
 * 使用Hibernate实现DAO的基础类
 * 包括了持久化操作的一些基础方法
 */
public class HibernateDAO {
	
	private static Log log = LogFactory.getLog(HibernateDAO.class);

	public Session getCurrentSession() {
		return HibernateUtil.getSessionFactory().getCurrentSession();
	}

	/**
	 * 保存对象信息到数据库
	 * @param obj 需要进行持久化操作的对象
	 */
	public Object saveObject(Object obj) throws Exception {
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();		
            session.save(obj);
            tx.commit();
        } catch (Exception e) {
        	log.error(e);
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);
            
        }
        return obj;
	}
	

	/**
	 * 更新持久化对象
	 * @param obj 需要更新的对象
	 */
	public void updateObject(Object obj) throws Exception  { 
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.update(obj);
            tx.commit();
        } catch (Exception e) {
        	log.error(e);
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);
        }   
	}

	public void saveOrUpdateObject(Object obj) throws Exception  { 
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.saveOrUpdate(obj);
            tx.commit();
        } catch (Exception e) {
        	log.error(e);
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);
        }   
	}
	
	/**
	 * 使用HQL语句进行查询
	 * @param hsql 查询语句
	 * @return 符合条件的对象集合
	 */
	public List getObjects(String hsql) throws Exception {
		List result = null;
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();			
    		result = session.createQuery(hsql).list(); 
//			if(!Hibernate.isInitialized(result)) 
//				Hibernate.initialize(result);
//			if (result instanceof Item) {
//				if(!Hibernate.isInitialized(((Item)result).getChild())) 
//					Hibernate.initialize(((Item)result).getChild());
//				if(!Hibernate.isInitialized(((Item)result).getParent())) 
//					Hibernate.initialize(((Item)result).getParent());					
//			} 		
            tx.commit();
        } catch (Exception e) {
        	log.error(e);
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);            
        }   
        return result;
	}

	/**
	 * 使用HQL语句进行对象的查询
	 * @param hsql 查询语句
	 * @return 符合条件的对象
	 */
	public Object getObject(String hsql) throws Exception {
		Object result = null;
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            result = session.createQuery(hsql).setMaxResults(1).uniqueResult();
//			if(!Hibernate.isInitialized(result)) 
//				Hibernate.initialize(result);
//			if (result instanceof Item) {
//				if(!Hibernate.isInitialized(((Item)result).getChild())) 
//					Hibernate.initialize(((Item)result).getChild());
//				if(!Hibernate.isInitialized(((Item)result).getParent())) 
//					Hibernate.initialize(((Item)result).getParent());					
//			}         
            tx.commit();
        } catch (Exception e) {
        	log.error(e);
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);            
        }   
        return result;
	}

	/**
	 * 根据ID值得到持久化的对象
	 * @param cls 对象的类型
	 * @param id ID值
	 * @return 指定ID的对象
	 */
	public Object getObject(Class cls, Serializable id)throws Exception {
		Object result = null;
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();		
			result = session.get(cls, id);
//			if(!Hibernate.isInitialized(result)) 
//				Hibernate.initialize(result);
//			if (result instanceof Item) {
//				if(!Hibernate.isInitialized(((Item)result).getChild())) 
//					Hibernate.initialize(((Item)result).getChild());
//				if(!Hibernate.isInitialized(((Item)result).getParent())) 
//					Hibernate.initialize(((Item)result).getParent());					
//			}			
			tx.commit();
        } catch (Exception e) {
        	log.error(e);
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);            
        }   
        return result;
	}

	public Object loadObject(Class cls, String id)throws Exception  {
		Object result = null;
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
			result = session.load(cls, Long.parseLong(id));
//			if(!Hibernate.isInitialized(result)) 
//				Hibernate.initialize(result);
//			if (result instanceof Item) {
//				if(!Hibernate.isInitialized(((Item)result).getChild())) 
//					Hibernate.initialize(((Item)result).getChild());
//				if(!Hibernate.isInitialized(((Item)result).getParent())) 
//					Hibernate.initialize(((Item)result).getParent());					
//			}
			
			tx.commit();
        } catch (Exception e) {
        	log.error(e);
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            //throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);            
        }   
        return result;
	}

	public Object loadObject(Class cls, Long id) throws Exception {
		Object result = null;
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();		
			result = session.load(cls, id);
//			if(!Hibernate.isInitialized(result)) 
//				Hibernate.initialize(result);
//			if (result instanceof Item) {
//				if(!Hibernate.isInitialized(((Item)result).getChild())) 
//					Hibernate.initialize(((Item)result).getChild());
//				if(!Hibernate.isInitialized(((Item)result).getParent())) 
//					Hibernate.initialize(((Item)result).getParent());					
//			}			
			tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);            
        }   
        return result;
	}
	
	/**
	 * 删除对象信息
	 * @param obj 被删除的对象
	 */
	public void deleteObject(Object obj) throws Exception {
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();		
			session.delete(obj);
			tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);            
        }   
	}

	public Item loadAndUpdateObject(Item item, long id)throws Exception  {
		Item result = null;
        Session session = HibernateUtil.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
			result = (Item)session.load(Item.class, id);
 			result.setDescription(item.getDescription());
 			result.setName(item.getName());
 			result.setParameter(item.getParameter());
 			result.setSequence(item.getSequence());
 			result.setTitle(item.getTitle());
 			result.setUrl(item.getUrl());
			
			tx.commit();
        } catch (Exception e) {
        	log.error(e);
            if (tx != null) {
                // Something went wrong; discard all partial changes
                tx.rollback();
            }
            //throw e;
        } finally {
            // No matter what, close the session
            HibernateUtil.closeSession(session);            
        }   
        return result;
	}

    /**
     * 20080519
     * 遍历当前节点的所有子节点,递归算法。
     * @param currentItem
     * @param childItems
     */
    public void navigateAllChild (Item currentItem, List childItems) {
        if (childItems.contains(currentItem) || currentItem == null) {
            return;
        }
        childItems.add(currentItem);

        //遍历父类Category
        //navigateCategories(currentItem.getParent(), childItems);

        //遍历所有子类Category
        Set childCategories = currentItem.getChild();
        if (childCategories == null) {
            return;
        }

        for (Iterator it = childCategories.iterator(); it.hasNext(); ) {
        	navigateAllChild((Item) it.next(), childItems);
        }
    }
    
    
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub		
		try {
			BusinessService bs = new BusinessService();
			Item item = (Item)bs.loadObject(Item.class,"48");
			List set = new ArrayList();
			bs.navigateAllChild(item, set);
			for(Iterator it = set.iterator();it.hasNext();) {
				Item item_ = (Item)it.next();
				log.info(item_.getName());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -