DAO层:主要使用Hibernate实现持久化等相关操作。本着基类足够强大,最好可以包罗万象,避免重发开发Dao的原则,使用范型DAO来处理对数据库进行重复性的80%增删改查操作。
参考代码:
- public interface IGenericDao<T, ID extends Serializable> {
- public void saveOrUpdate(T t);
- public T load(Serializable ID);
- public T get(Serializable ID);
- public Object get(Class TClass, Serializable ID, LockMode lockMode);
- public boolean contains(T t) throws DataAccessException;
- public void delete(T t, LockMode lockMode) throws DataAccessException;
- public void delete(T t) throws DataAccessException;
- public void deleteAll(Collection<T> entities) throws DataAccessException;
- public List<T> find(String queryString, Object value)
- throws DataAccessException;
- public List<T> find(String queryString, Object[] values)
- throws DataAccessException;
- public List<T> find(String queryString) throws DataAccessException;
- public List<T> findByExample(Object exampleEntity, int firstResult,
- int maxResults) throws DataAccessException;
- public List<T> findByExample(Object exampleEntity)
- throws DataAccessException;
- public List<T> findByNamedParam(String queryString, String paramName,
- Object value) throws DataAccessException;
- public List<T> findByNamedParam(String queryString, String[] paramNames,
- Object[] values) throws DataAccessException;
- public Object load(Class TClass, Serializable ID, LockMode lockMode)
- throws DataAccessException;
- public void load(T t, Serializable ID) throws DataAccessException;
- public Object load(String TName, Serializable ID, LockMode lockMode)
- throws DataAccessException;
- public Object load(String TName, Serializable ID)
- throws DataAccessException;
- public void refresh(T t, LockMode lockMode) throws DataAccessException;
- public void refresh(T t) throws DataAccessException;
- public Serializable save(T t) throws DataAccessException;
- public void saveOrUpdate(String TName, T t) throws DataAccessException;
- public void saveOrUpdateAll(Collection<T> entities)
- throws DataAccessException;
- public void update(T t, LockMode lockMode) throws DataAccessException;
- public void update(T t) throws DataAccessException;
- public void update(String TName, T t, LockMode lockMode)
- throws DataAccessException;
- public void update(String TName, T t) throws DataAccessException;
- public List<T> loadAll();
- public List<T> loadAll(Class TClass);
- public List<T> list();
- public List<T> list(Class TClass);
- public PaginationSupport findPageByCriteria(
- final DetachedCriteria detachedCriteria, final int pageSize,
- final int startIndex);
- public PaginationSupport findPageByQuery(final String hsql,
- final int pageSize, final int startIndex);
- }
public interface IGenericDao<T, ID extends Serializable> { public void saveOrUpdate(T t); public T load(Serializable ID); public T (Serializable ID); public Object (Class TClass, Serializable ID, ); public boolean contains(T t) throws DataAccessException; public void delete(T t, ) throws DataAccessException; public void delete(T t) throws DataAccessException; public void deleteAll(Collection<T> entities) throws DataAccessException; public List<T> find(String queryString, Object value) throws DataAccessException; public List<T> find(String queryString, Object[] values) throws DataAccessException; public List<T> find(String queryString) throws DataAccessException; public List<T> findByExample(Object exampleEntity, int firstResult, int maxResults) throws DataAccessException; public List<T> findByExample(Object exampleEntity) throws DataAccessException; public List<T> findByNamedParam(String queryString, String paramName, Object value) throws DataAccessException; public List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values) throws DataAccessException; public Object load(Class TClass, Serializable ID, ) throws DataAccessException; public void load(T t, Serializable ID) throws DataAccessException; public Object load(String TName, Serializable ID, ) throws DataAccessException; public Object load(String TName, Serializable ID) throws DataAccessException; public void refresh(T t, ) throws DataAccessException; public void refresh(T t) throws DataAccessException; public Serializable save(T t) throws DataAccessException; public void saveOrUpdate(String TName, T t) throws DataAccessException; public void saveOrUpdateAll(Collection<T> entities) throws DataAccessException; public void update(T t, ) throws DataAccessException; public void update(T t) throws DataAccessException; public void update(String TName, T t, ) throws DataAccessException; public void update(String TName, T t) throws DataAccessException; public List<T> loadAll(); public List<T> loadAll(Class TClass); public List<T> list(); public List<T> list(Class TClass); public PaginationSupport findPageByCriteria( final DetachedCriteria detachedCriteria, final int pageSize, final int startIndex); public PaginationSupport findPageByQuery(final String hsql, final int pageSize, final int startIndex); }
- @SuppressWarnings("unchecked")
- public class GenericDao<T, ID extends Serializable> extends HibernateDaoSupport implements IGenericDao<T, ID> {
- protected Log logger = LogFactory.getLog(getClass());
- protected Class<T> entityClass;
- public GenericDao() {
- }
- protected Class getEntityClass() {
- if (entityClass == null) {
- entityClass = (Class<T>) ((ParameterizedType) getClass()
- .getGenericSuperclass()).getActualTypeArguments()[0];
- logger.debug("T class = " + entityClass.getName());
- }
- return entityClass;
- }
- public void saveOrUpdate(T t) {
- this.getHibernateTemplate().saveOrUpdate(t);
- }
- public T load(Serializable ID) {
- T load = (T) getHibernateTemplate().load(getEntityClass(), ID);
- return load;
- }
- public T get(Serializable ID) {
- T load = (T) getHibernateTemplate().get(getEntityClass(), ID);
- return load;
- }
- public Object get(Class TClass,Serializable ID, LockMode lockMode) {
- Object vo = getHibernateTemplate().get(TClass, ID, lockMode);
- return vo;
- }
- public boolean contains(T t) throws DataAccessException {
- return getHibernateTemplate().contains(t);
- }
- public void delete(T t, LockMode lockMode) throws DataAccessException {
- getHibernateTemplate().delete(t, lockMode);
- }
- public void delete(T t) throws DataAccessException {
- getHibernateTemplate().delete(t);
- }
- public void deleteAll(Collection<T> entities) throws DataAccessException {
- getHibernateTemplate().deleteAll(entities);
- }
- public List<T> find(String queryString, Object value)
- throws DataAccessException {
- List<T> find = (List<T>) getHibernateTemplate().find(queryString,
- value);
- return find;
- }
- public List<T> find(String queryString, Object[] values)
- throws DataAccessException {
- List<T> find = (List<T>) getHibernateTemplate().find(queryString,
- values);
- return find;
- }
- public List<T> find(String queryString) throws DataAccessException {
- return (List<T>) getHibernateTemplate().find(queryString);
- }
- public List<T> findByExample(Object exampleEntity, int firstResult,
- int maxResults) throws DataAccessException {
- return getHibernateTemplate().findByExample(exampleEntity, firstResult,
- maxResults);
- }
- public List<T> findByExample(Object exampleEntity) throws DataAccessException {
- return getHibernateTemplate().findByExample(exampleEntity);
- }
- public List<T> findByNamedParam(String queryString, String paramName,
- Object value) throws DataAccessException {
- return getHibernateTemplate().findByNamedParam(queryString, paramName,
- value);
- }
- public List<T> findByNamedParam(String queryString, String[] paramNames,
- Object[] values) throws DataAccessException {
- return getHibernateTemplate().findByNamedParam(queryString, paramNames,
- values);
- }
- public Object load(Class TClass, Serializable ID, LockMode lockMode)
- throws DataAccessException {
- return getHibernateTemplate().load(TClass, ID, lockMode);
- }
- public void load(T t, Serializable ID) throws DataAccessException {
- getHibernateTemplate().load(t, ID);
- }
- public Object load(String TName, Serializable ID, LockMode lockMode)
- throws DataAccessException {
- return getHibernateTemplate().load(TName, ID, lockMode);
- }
- public Object load(String TName, Serializable ID)
- throws DataAccessException {
- return getHibernateTemplate().load(TName, ID);
- }
- public Object load(Class TClass, Serializable ID)
- throws DataAccessException {
- return getHibernateTemplate().load(TClass, ID);
- }
- public void refresh(T t, LockMode lockMode) throws DataAccessException {
- getHibernateTemplate().refresh(t, lockMode);
- }
- public void refresh(T t) throws DataAccessException {
- getHibernateTemplate().refresh(t);
- }
- public Serializable save(T t) throws DataAccessException {
- return getHibernateTemplate().save(t);
- }
- public void saveOrUpdate(String TName, T t) throws DataAccessException {
- getHibernateTemplate().saveOrUpdate(TName, t);
- }
- public void saveOrUpdateAll(Collection<T> entities)
- throws DataAccessException {
- getHibernateTemplate().saveOrUpdateAll(entities);
- }
- public void update(T t, LockMode lockMode) throws DataAccessException {
- getHibernateTemplate().update(t, lockMode);
- }
- public void update(T t) throws DataAccessException {
- getHibernateTemplate().update(t);
- }
- public void update(String TName, T t, LockMode lockMode)
- throws DataAccessException {
- getHibernateTemplate().update(TName, t, lockMode);
- }
- public void update(String TName, T t) throws DataAccessException {
- getHibernateTemplate().update(TName, t);
- }
- public List<T> loadAll() {
- return getHibernateTemplate().loadAll(getEntityClass());
- }
- public List<T> loadAll(Class TClass) {
- return getHibernateTemplate().loadAll(TClass);
- }
- public List<T> list() {
- Criteria criteria = getSession().createCriteria(getEntityClass());
- return criteria.list();
- }
- public List<T> list(Class TClass) {
- Criteria criteria = getSession().createCriteria(TClass);
- return criteria.list();
- }
- public PaginationSupport findPageByCriteria(
- final DetachedCriteria detachedCriteria, final int pageSize,
- final int startIndex) {
- return (PaginationSupport) getHibernateTemplate().execute(
- new HibernateCallback() {
- public Object doInHibernate(Session session)
- throws HibernateException {
- Criteria criteria = detachedCriteria
- .getExecutableCriteria(session);
- int totalCount = ((Integer) criteria.setProjection(
- Projections.rowCount()).uniqueResult())
- .intValue();
- criteria.setProjection(null);
- List items = criteria.setFirstResult(startIndex)
- .setMaxResults(pageSize).list();
- PaginationSupport ps = new PaginationSupport(items,
- totalCount, pageSize, startIndex);
- return ps;
- }
- }, true);
- }
- public PaginationSupport findPageByQuery(final String hsql,
- final int pageSize, final int startIndex) {
- return (PaginationSupport) getHibernateTemplate().execute(
- new HibernateCallback() {
- public Object doInHibernate(Session session)
- throws HibernateException, SQLException {
- Query query = session.createQuery(hsql);
- int totalCount = query.list().size();
- query.setFirstResult(startIndex);
- query.setMaxResults(pageSize);
- List items = query.list();
- PaginationSupport ps = new PaginationSupport(items,
- totalCount, pageSize, startIndex);
- return ps;
- }
- }, true);
- }
@SuppressWarnings("unchecked") public class GenericDao<T, ID extends Serializable> extends HibernateDaoSupport implements IGenericDao<T, ID> { protected Log logger = LogFactory.getLog(getClass()); protected Class<T> entityClass; public GenericDao() { } protected Class getEntityClass() { if (entityClass == null) { entityClass = (Class<T>) ((ParameterizedType) getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; logger.debug("T class = " + entityClass.getName()); } return entityClass; } public void saveOrUpdate(T t) { this.().saveOrUpdate(t); } public T load(Serializable ID) { T load = (T) ().load(getEntityClass(), ID); return load; } public T (Serializable ID) { T load = (T) ().(getEntityClass(), ID); return load; } public Object (Class TClass,Serializable ID, ) { Object vo = ().(TClass, ID, ); return vo; } public boolean contains(T t) throws DataAccessException { return ().contains(t); } public void delete(T t, ) throws DataAccessException { ().delete(t, ); } public void delete(T t) throws DataAccessException { ().delete(t); } public void deleteAll(Collection<T> entities) throws DataAccessException { ().deleteAll(entities); } public List<T> find(String queryString, Object value) throws DataAccessException { List<T> find = (List<T>) ().find(queryString, value); return find; } public List<T> find(String queryString, Object[] values) throws DataAccessException { List<T> find = (List<T>) ().find(queryString, values); return find; } public List<T> find(String queryString) throws DataAccessException { return (List<T>) ().find(queryString); } public List<T> findByExample(Object exampleEntity, int firstResult, int maxResults) throws DataAccessException { return ().findByExample(exampleEntity, firstResult, maxResults); } public List<T> findByExample(Object exampleEntity) throws DataAccessException { return ().findByExample(exampleEntity); } public List<T> findByNamedParam(String queryString, String paramName, Object value) throws DataAccessException { return ().findByNamedParam(queryString, paramName, value); } public List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values) throws DataAccessException { return ().findByNamedParam(queryString, paramNames, values); } public Object load(Class TClass, Serializable ID, ) throws DataAccessException { return ().load(TClass, ID, ); } public void load(T t, Serializable ID) throws DataAccessException { ().load(t, ID); } public Object load(String TName, Serializable ID, ) throws DataAccessException { return ().load(TName, ID, ); } public Object load(String TName, Serializable ID) throws DataAccessException { return ().load(TName, ID); } public Object load(Class TClass, Serializable ID) throws DataAccessException { return ().load(TClass, ID); } public void refresh(T t, ) throws DataAccessException { ().refresh(t, ); } public void refresh(T t) throws DataAccessException { ().refresh(t); } public Serializable save(T t) throws DataAccessException { return ().save(t); } public void saveOrUpdate(String TName, T t) throws DataAccessException { ().saveOrUpdate(TName, t); } public void saveOrUpdateAll(Collection<T> entities) throws DataAccessException { ().saveOrUpdateAll(entities); } public void update(T t, ) throws DataAccessException { ().update(t, ); } public void update(T t) throws DataAccessException { ().update(t); } public void update(String TName, T t, ) throws DataAccessException { ().update(TName, t, ); } public void update(String TName, T t) throws DataAccessException { ().update(TName, t); } public List<T> loadAll() { return ().loadAll(getEntityClass()); } public List<T> loadAll(Class TClass) { return ().loadAll(TClass); } public List<T> list() { Criteria criteria = getSession().createCriteria(getEntityClass()); return criteria.list(); } public List<T> list(Class TClass) { Criteria criteria = getSession().createCriteria(TClass); return criteria.list(); } public PaginationSupport findPageByCriteria( final DetachedCriteria detachedCriteria, final int pageSize, final int startIndex) { return (PaginationSupport) ().execute( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria .getExecutableCriteria(session); int totalCount = ((Integer) criteria.setProjection( Projections.rowCount()).uniqueResult()) .intValue(); criteria.setProjection(null); List items = criteria.setFirstResult(startIndex) .setMaxResults(pageSize).list(); PaginationSupport ps = new PaginationSupport(items, totalCount, pageSize, startIndex); return ps; } }, true); } public PaginationSupport findPageByQuery(final String hsql, final int pageSize, final int startIndex) { return (PaginationSupport) ().execute( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hsql); int totalCount = query.list().size(); query.setFirstResult(startIndex); query.setMaxResults(pageSize); List items = query.list(); PaginationSupport ps = new PaginationSupport(items, totalCount, pageSize, startIndex); return ps; } }, true); }
VO: 主要使用hibernateSynchronizer工具自动生成,然后根据Hibernate Annotation进行修改。
样例代码:
- public class WorklistSetPKVO implements Serializable {
- protected int hashCode = Integer.MIN_VALUE;
- private java.lang.Integer processstatus;
- private java.lang.Integer key;
- public WorklistSetPKVO () {}
- public WorklistSetPKVO (
- java.lang.Integer processstatus,
- java.lang.Integer key) {
- this.setProcessstatus(processstatus);
- this.setKey(key);
- }
- /**
- * Return the value associated with the column: PROCESSSTATUS
- */
- public java.lang.Integer getProcessstatus () {
- return processstatus;
- }
- /**
- * Set the value related to the column: PROCESSSTATUS
- * @param processstatus the PROCESSSTATUS value
- */
- public void setProcessstatus (java.lang.Integer processstatus) {
- this.processstatus = processstatus;
- }
- /**
- * Return the value associated with the column: KEY
- */
- public java.lang.Integer getKey () {
- return key;
- }
- /**
- * Set the value related to the column: KEY
- * @param key the KEY value
- */
- public void setKey (java.lang.Integer key) {
- this.key = key;
- }
- public boolean equals (Object obj) {
- if (null == obj) return false;
- if (!(obj instanceof WorklistSetPKVO)) return false;
- else {
- WorklistSetPKVO mObj = (WorklistSetPKVO) obj;
- if (null != this.getProcessstatus() && null != mObj.getProcessstatus()) {
- if (!this.getProcessstatus().equals(mObj.getProcessstatus())) {
- return false;
- }
- }
- else {
- return false;
- }
- if (null != this.getKey() && null != mObj.getKey()) {
- if (!this.getKey().equals(mObj.getKey())) {
- return false;
- }
- }
- else {
- return false;
- }
- return true;
- }
- }
- public int hashCode () {
- if (Integer.MIN_VALUE == this.hashCode) {
- StringBuilder sb = new StringBuilder();
- if (null != this.getProcessstatus()) {
- sb.append(this.getProcessstatus().hashCode());
- sb.append(":");
- }
- else {
- return super.hashCode();
- }
- if (null != this.getKey()) {
- sb.append(this.getKey().hashCode());
- sb.append(":");
- }
- else {
- return super.hashCode();
- }
- this.hashCode = sb.toString().hashCode();
- }
- return this.hashCode;
- }
- }
public class WorklistSetPKVO implements Serializable { protected int hashCode = Integer.MIN_VALUE; private java.lang.Integer processstatus; private java.lang.Integer key; public WorklistSetPKVO () {} public WorklistSetPKVO ( java.lang.Integer processstatus, java.lang.Integer key) { this.setProcessstatus(processstatus); this.setKey(key); } /** * Return the value associated with the column: PROCESSSTATUS */ public java.lang.Integer getProcessstatus () { return processstatus; } /** * Set the value related to the column: PROCESSSTATUS * @param processstatus the PROCESSSTATUS value */ public void setProcessstatus (java.lang.Integer processstatus) { this.processstatus = processstatus; } /** * Return the value associated with the column: KEY */ public java.lang.Integer getKey () { return key; } /** * Set the value related to the column: KEY * @param key the KEY value */ public void setKey (java.lang.Integer key) { this.key = key; } public boolean equals (Object obj) { if (null == obj) return false; if (!(obj instanceof WorklistSetPKVO)) return false; else { WorklistSetPKVO mObj = (WorklistSetPKVO) obj; if (null != this.getProcessstatus() && null != mObj.getProcessstatus()) { if (!this.getProcessstatus().equals(mObj.getProcessstatus())) { return false; } } else { return false; } if (null != this.getKey() && null != mObj.getKey()) { if (!this.getKey().equals(mObj.getKey())) { return false; } } else { return false; } return true; } } public int hashCode () { if (Integer.MIN_VALUE == this.hashCode) { StringBuilder sb = new StringBuilder(); if (null != this.getProcessstatus()) { sb.append(this.getProcessstatus().hashCode()); sb.append(":"); } else { return super.hashCode(); } if (null != this.getKey()) { sb.append(this.getKey().hashCode()); sb.append(":"); } else { return super.hashCode(); } this.hashCode = sb.toString().hashCode(); } return this.hashCode; } }
- @Entity
- @Table(name="")
- public class WorklistSetVO implements Serializable {
- // constructors
- public WorklistSetVO () {
- initialize();
- }
- /**
- * Constructor for primary key
- */
- public WorklistSetVO (WorklistSetPKVO id) {
- this.setId(id);
- initialize();
- }
- protected void initialize () {}
- private int hashCode = Integer.MIN_VALUE;
- // primary key
- private WorklistSetPKVO id;
- // fields
- private java.lang.Integer re;
- private java.lang.Integer upl;
- private java.lang.Integer co;
- private java.lang.Integer lscco;
- private java.lang.Integer lscnonco;
- /**
- * Return the unique identifier of this class
- * @hibernate.id
- */
- @EmbeddedId
- public WorklistSetPKVO getId () {
- return id;
- }
- /**
- * Set the unique identifier of this class
- * @param id the new ID
- */
- public void setId (WorklistSetPKVO id) {
- this.id = id;
- this.hashCode = Integer.MIN_VALUE;
- }
- /**
- * Return the value associated with the column: RE
- */
- public java.lang.Integer getRe () {
- return re;
- }
- /**
- * Set the value related to the column: RE
- * @param re the RE value
- */
- public void setRe (java.lang.Integer re) {
- this.re = re;
- }
- /**
- * Return the value associated with the column: UPL
- */
- public java.lang.Integer getUpl () {
- return upl;
- }
- /**
- * Set the value related to the column: UPL
- * @param upl the UPL value
- */
- public void setUpl (java.lang.Integer upl) {
- this.upl = upl;
- }
- /**
- * Return the value associated with the column: CO
- */
- public java.lang.Integer getCo () {
- return co;
- }
- /**
- * Set the value related to the column: CO
- * @param co the CO value
- */
- public void setCo (java.lang.Integer co) {
- this.co = co;
- }
- /**
- * Return the value associated with the column: LSCCO
- */
- public java.lang.Integer getLscco () {
- return lscco;
- }
- /**
- * Set the value related to the column: LSCCO
- * @param lscco the LSCCO value
- */
- public void setLscco (java.lang.Integer lscco) {
- this.lscco = lscco;
- }
- /**
- * Return the value associated with the column: LSCNONCO
- */
- public java.lang.Integer getLscnonco () {
- return lscnonco;
- }
- /**
- * Set the value related to the column: LSCNONCO
- * @param lscnonco the LSCNONCO value
- */
- public void setLscnonco (java.lang.Integer lscnonco) {
- this.lscnonco = lscnonco;
- }
- public boolean equals (Object obj) {
- if (null == obj) return false;
- if (!(obj instanceof WorklistSetVO)) return false;
- else {
- WorklistSetVO worklistSetVO = (WorklistSetVO) obj;
- if (null == this.getId() || null == worklistSetVO.getId()) return false;
- else return (this.getId().equals(worklistSetVO.getId()));
- }
- }
- public int hashCode () {
- if (Integer.MIN_VALUE == this.hashCode) {
- if (null == this.getId()) return super.hashCode();
- else {
- String hashStr = this.getClass().getName() + ":" + this.getId().hashCode();
- this.hashCode = hashStr.hashCode();
- }
- }
- return this.hashCode;
- }
- public String toString () {
- return super.toString();
- }