最常用的hibernate的接口和实现类
import java.util.List;/** * @file_name BaseDao.java * @author janson_chang * @param <E> * @todo BaseDao */public interface BaseDao<E> {/** * 返回ID=ID的持久對象 * @param id * @return E */public E get(String id);/** * 返回ID=ID的代理對象 * @param id * @return E */public E load(String id);/** * 返回根據字段的得到的持久對象 * @param name * @param value * @return E */public E loadBy(String name, Object value);/** * 返回根據數組字段的得到的持久對象 * @param names * @param values * @return E */public E loadBy(String[] names, Object[] values);/** * 返回保存的對象的ID * @param entity * @return String */public String save(E entity);/** * 更新對象信息 * @param entity */public void update(E entity);/** * saveOrUpdate對象信息 * @param entity */public void saveOrUpdate(E entity);/** * 刪除對象 * @param entity */public void delete(E entity);/** * 返回所有的對象信息list * @return List<E> */public List<E> listAll();/** * 根據字段name和數據value返回對象list * @param name * @param value * @return List<E> */public List<E> findBy(String name, Object value);/** * 根據數組字段name,數據value返回對象list * @param names * @param values * @return List<E> */public List<E> findBy(String[] names, Object[] values);/** * 更新内存中的數據 * @param entity */public void refresh(E entity);/** * 提交内存中的數據 */public void flush();/** * 根据域对象类和条件查询对象查询一组域对象 * @param <T> * @param clazz * @param enhanceRule * @return */ List<E> query(Class clazz, EnhancedRule enhanceRule);/** * 执行SQL */public void executeSQL(String sql);/** * 执行HSQL,语句必须符合HSQL规范 */public List<E> queryHQL(String sql);/** * 执行本地SQL */public List<E> queryNQL(String sql);}
import java.lang.reflect.ParameterizedType;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.log4j.Logger;import org.hibernate.Criteria;import org.hibernate.HibernateException;import org.hibernate.criterion.Restrictions;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;/** * @file_name BaseDaoHibernateImpl.java * @author janson_chang * @param <E> * @todo BaseDaoHibernateImpl<E> */@SuppressWarnings("unchecked")public class BaseDaoHibernateImpl<E> extends HibernateDaoSupport implements BaseDao<E> {/** * */protected Class<E> entityClass;/** * */protected Logger log = Logger.getLogger(this.getClass());/** * * */public BaseDaoHibernateImpl() {super();entityClass = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];}/** * * @param entityClassName * @throws ClassNotFoundException */public void setEntityClass(String entityClassName) throws ClassNotFoundException {this.entityClass = (Class<E>)Class.forName(entityClassName);}/** * * @param entityClass */public void setEntityClass(Class<E> entityClass) {this.entityClass = entityClass;}/** * 返回Criteria * * @return Criteria */protected Criteria getCriteria() {Criteria criteria = getSession().createCriteria(entityClass);criteria.setCacheable(true);return criteria;}public void executeSQL(String sql){getSession().createSQLQuery(sql).executeUpdate();}public List<E> queryHQL(String sql){return getSession().createQuery(sql).list();}public List<E> queryNQL(String sql){return getSession().createSQLQuery(sql).list();}/** * @param entity */public void delete(E entity) {getHibernateTemplate().delete(entity);flush();}/** * @param name * @param value * @return List<E> * */public List<E> findBy(String name, Object value) {return findBy(new String[] { name }, new Object[] { value });}/** * @param names * @param values * @return List<E> * */@SuppressWarnings ("unchecked")public List<E> findBy(String[] names, Object[] values) {if (names == null || values == null || names.length != values.length) {throw new HibernateException("Illegal name and values" + names + ":" + values);}Criteria criteria = getCriteria();Map<String, Object> criteriaMap = new HashMap<String, Object>();for (int i = 0; i < names.length; i++) {criteriaMap.put(names[i], values[i]);}criteria.add(Restrictions.allEq(criteriaMap));criteria.setCacheable(true);return criteria.list();}/** * */public void flush() {getHibernateTemplate().flush();}/** * @param id * @return E */public E get(String id) {return (E) getHibernateTemplate().get(entityClass, id);}/** * @return List<E> * */public List<E> listAll() {return getHibernateTemplate().loadAll(entityClass);}/** * @param id * @return E */public E load(String id) {return (E) getHibernateTemplate().load(entityClass, id);}/** * @param name * @param value * @return E * */public E loadBy(String name, Object value) {return loadBy(new String[] { name }, new Object[] { value });}/** * @param names * @param values * @return E * */public E loadBy(String[] names, Object[] values) {E result = null;List<E> resultList = findBy(names, values);if (resultList.size() > 0) {result = resultList.get(0);}return result;}/** * @param entity * */public void refresh(E entity) {getHibernateTemplate().refresh(entity);}/** * @param entity * @return String */public String save(E entity) {return (String) getHibernateTemplate().save(entity);}/** * @param entity * */public void saveOrUpdate(E entity) {getHibernateTemplate().saveOrUpdate(entity);}/** * @param entity * */public void update(E entity) {getHibernateTemplate().update(entity);}public List<E> query(Class clazz, EnhancedRule enhanceRule) { if (enhanceRule == null) { return listAll(); } return enhanceRule.getCriteria (clazz, getSession (false)).list ();}}