//
根据主键获取实体。如果没有相应的实体,返回 null。 public
T get(PK id);
//
根据主键获取实体并加锁。如果没有相应的实体,返回 null。 public
T getWithLock(PK id, LockMode lock);
//
根据主键获取实体。如果没有相应的实体,抛出异常。
public
T load(PK id);
实现类
public class GenericHibernateDao<T
extends Serializable, PK extends Serializable> extends
HibernateDaoSupport implements GenericDao<T, PK> { //
实体类类型(由构造方法自动赋值) private
Class<T> entityClass;
//
构造方法,根据实例类自动获取实体类类型 public
GenericHibernateDao() { this.entityClass
= null; Class
c = getClass(); Type
t = c.getGenericSuperclass(); if
(t instanceof ParameterizedType) { Type[]
p = ((ParameterizedType) t).getActualTypeArguments(); this.entityClass
= (Class<T>) p[0]; } } //--------------------
基本检索、增加、修改、删除操作 --------------------
//根据主键获取实体。如果没有相应的实体,返回
null。 @Override public
T get(PK id) { return
(T)getHibernateTemplate().get(entityClass, id); }
//根据主键获取实体并加锁。如果没有相应的实体,返回
null。 @Override public
T getWithLock(PK id, LockMode lock) { T
t = (T) getHibernateTemplate().get(entityClass, id, lock); if
(t != null) { this.flush();
// 立即刷新,否则锁不会生效。 } return
t; }
//根据主键获取实体。如果没有相应的实体,抛出异常。 @Override public
T load(PK id) { return
(T) getHibernateTemplate().load(entityClass, id); }
//根据主键获取实体并加锁。如果没有相应的实体,抛出异常。 @Override public
T loadWithLock(PK id, LockMode lock) { T
t = (T) getHibernateTemplate().load(entityClass, id, lock); if
(t != null) { this.flush();
// 立即刷新,否则锁不会生效。 } return
t; }
//获取全部实体。 @Override public
List<T> loadAll() { return
(List<T>) getHibernateTemplate().loadAll(entityClass); }