?? generichibernatedao.java
字號:
package com.qrsx.exam.dao.hibernate;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Example;
import com.qrsx.exam.dao.GenericDAO;
import com.qrsx.exam.dao.util.HibernateUtil;
/**
* 使用Hibernate API來實現通用的DAO接口
*
* @see HibernateDAOFactory
*
* @author galaxy
*/
@SuppressWarnings("hiding")
public class GenericHibernateDAO<T, ID extends Serializable> implements
GenericDAO<T, ID> {
// 保持實體對象類的類型
private Class<T> persistentClass;
/**
* 構造方法
*/
public GenericHibernateDAO(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
/**
* 得到當前線程的Session對象的實例
*
* @return
*/
protected Session getSession() {
return HibernateUtil.getSessionFactory().getCurrentSession();
}
/**
* 得到持久化對象的類型
*
* @return 持久化類的類型
*/
public Class<T> getPersistentClass() {
return persistentClass;
}
/**
* 通過ID來得到實體對象
*
* @param id
* 實體對象的標識符
* @param lock
* 使用的鎖模式
* @return 該主鍵值對應的實體對象
*/
@SuppressWarnings("unchecked")
public T findById(ID id, boolean lock) {
T entity;
if (lock)
entity = (T) getSession().get(getPersistentClass(), id,
LockMode.UPGRADE);
else
entity = (T) getSession().get(getPersistentClass(), id);
return entity;
}
/**
* 得到所有的實體對象
*
* @return 所有的實體對象
*/
@SuppressWarnings("unchecked")
public List<T> findAll() {
return findByCriteria();
}
/**
* 根據對象的屬性和屬性的值來得到滿足條件的實體對象
*
* @param exampleInstance
* 查詢的條件
* @return 滿足條件的實體對象
*/
@SuppressWarnings("unchecked")
public List<T> findByExample(T exampleInstance) {
return findByCriteria(Example.create(exampleInstance));
}
/**
* 將實體對象持久化
*
* @param entity
* 需要進行持久化操作的實體對象
* @return 持久化的實體對象
*/
@SuppressWarnings("unchecked")
public T makePersistent(T entity) {
getSession().saveOrUpdate(entity);
return entity;
}
/**
* 將實體對象變為瞬態
*
* @param entity
* 需要轉變為瞬態的實體對象
*/
public void makeTransient(T entity) {
getSession().delete(entity);
}
@SuppressWarnings("unchecked")
protected List<T> findByCriteria(Criterion... criterion) {
Criteria crit = getSession().createCriteria(getPersistentClass());
for (Criterion c : criterion) {
crit.add(c);
}
return crit.list();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -