📄 hibernatedao.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 + -