`
huangronaldo
  • 浏览: 222979 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Hibernate与spring整合总结AbstractHibernateDAOImpl

阅读更多

  本人学习了一个新项目,总结了一下。有很多不足的地方,希望高手指点:

首先,在dao包下新建abstractDAO.java文件,如下:

  package com.huangt.dao;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.criterion.DetachedCriteria;

@SuppressWarnings("unchecked")
public interface AbstractDAO<T, PK> {

	
	// 根据主键获取实体。如果没有相应的实体,返回 null。
	public T get(PK id);

	// 根据主键获取实体并加锁。如果没有相应的实体,返回 null。
	public T getWithLock(PK id, LockMode lock);

	// 根据主键获取实体。如果没有相应的实体,抛出异常。
	public T load(PK id);

	// 根据主键获取实体并加锁。如果没有相应的实体,抛出异常。
	public T loadWithLock(PK id, LockMode lock);

	// 获取全部实体。
	public List<T> loadAll();

	// 更新实体
	public void update(T entity) throws Exception;

	// 更新实体并加锁
	public void updateWithLock(T entity, LockMode lock);

	// 存储实体到数据库
	public void save(T entity) throws Exception;

	// 增加或更新实体
	public void saveOrUpdate(T entity);

	// 增加或更新集合中的全部实体
	public void saveOrUpdateAll(Collection<T> entities);

	// 删除指定的实体
	public void delete(T entity);

	// 加锁并删除指定的实体
	public void deleteWithLock(T entity, LockMode lock);

	// 根据主键删除指定实体
	public void deleteByKey(PK id);

	// 根据主键加锁并删除指定的实体
	public void deleteByKeyWithLock(PK id, LockMode lock);

	// 删除集合中的全部实体
	public void deleteAll(Collection<T> entities);

	// 使用HSQL语句直接增加、更新、删除实体
	public int bulkUpdate(String queryString);

	// 使用带参数的HSQL语句增加、更新、删除实体
	public int bulkUpdate(String queryString, Object[] values);

	// 使用HSQL语句检索数据
	public List find(String queryString);

	// 使用带参数的HSQL语句检索数据
	public List<T> find(String queryString, Object[] values) throws Exception;

	// 使用带命名的参数的HSQL语句检索数据
	public List findByNamedParam(String queryString, String[] paramNames,
			Object[] values);

	// 使用命名的HSQL语句检索数据
	public List findByNamedQuery(String queryName);

	// 使用带参数的命名HSQL语句检索数据
	public List findByNamedQuery(String queryName, Object[] values);

	// 使用带命名参数的命名HSQL语句检索数据
	public List findByNamedQueryAndNamedParam(String queryName,
			String[] paramNames, Object[] values);

	// 使用HSQL语句检索数据,返回 Iterator
	public Iterator iterate(String queryString);

	// 使用带参数HSQL语句检索数据,返回 Iterator
	public Iterator iterate(String queryString, Object[] values);

	// 关闭检索返回的 Iterator
	public void closeIterator(Iterator it);

	// 创建与会话无关的检索标准
	public DetachedCriteria createDetachedCriteria();

	// 创建与会话绑定的检索标准
	public Criteria createCriteria();

	// 检索满足标准的数据
	public List findByCriteria(DetachedCriteria criteria);

	// 检索满足标准的数据,返回指定范围的记录
	public List findByCriteria(DetachedCriteria criteria, int firstResult,
			int maxResults);

	// 使用指定的实体及属性检索(满足除主键外属性=实体值)数据
	public List<T> findEqualByEntity(T entity, String[] propertyNames);

	// 使用指定的实体及属性检索(满足属性 like 串实体值)数据
	public List<T> findLikeByEntity(T entity, String[] propertyNames);

	// 使用指定的检索标准获取满足标准的记录数
	public Integer getRowCount(DetachedCriteria criteria);

	// 使用指定的检索标准检索数据,返回指定统计值(max,min,avg,sum)
	public Object getStatValue(DetachedCriteria criteria, String propertyName,
			String StatName);

	// 加锁指定的实体
	public void lock(T entity, LockMode lock);

	// 强制初始化指定的实体
	public void initialize(Object proxy);

	// 强制立即更新缓冲数据到数据库(否则仅在事务提交时才更新)
	public void flush();

/************以下为分页代码可根据个人需求而定***************/	

        public List queryForPage(final String hql, final int offset,
			final int length);

	public int getAllRowCount(String hql) throws Exception;

}

 

    接着实现该类接口,在包dao.impl下,AbstractHibernateDAOImpl.java。如下:

    package com.huangt.dao.impl;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.sun.org.apache.commons.beanutils.PropertyUtils;
import com.zjsoft.dao.AbstractDAO;

@SuppressWarnings("unchecked")
public abstract class AbstractHibernateDAOImpl<T extends Serializable, PK extends Serializable>
		extends HibernateDaoSupport implements AbstractDAO <T, PK>{

	protected final Logger log = Logger.getLogger(getClass());
	 
	protected Class<T> domainClass = getDomainClass();
	
	/**
	 * Method to return the class of the domain object
	 */
	protected abstract Class<T> getDomainClass();
	
  
	// -------------------- 基本检索、增加、修改、删除操作 --------------------   
	   
	    // 根据主键获取实体。如果没有相应的实体,返回 null。   
  
	    
	    public T get(PK id) 
	    {   
	    	log.info("操作实体:" + domainClass.getName());
	        return (T) getHibernateTemplate().get(domainClass.getName(),id);   
	    }
	  
	    // 根据主键获取实体并加锁。如果没有相应的实体,返回 null。   
	    public T getWithLock(PK id, LockMode lock)   
	    {   
	        T t = (T) getHibernateTemplate().get(domainClass.getName(), id, lock);   
	        if (t != null)   
	        {   
	            this.flush();   // 立即刷新,否则锁不会生效。   
	        }   
	        return t;   
	    }   
	  
	    // 根据主键获取实体。如果没有相应的实体,抛出异常。   
	    public T load(PK id)   
	    {   
	        return (T) getHibernateTemplate().load(domainClass.getName(), id);   
	    }   
	  
	    // 根据主键获取实体并加锁。如果没有相应的实体,抛出异常。   
	    public T loadWithLock(PK id, LockMode lock)   
	    {   
	        T t = (T) getHibernateTemplate().load(domainClass.getName(), id, lock);   
	        if (t != null)   
	        {   
	            this.flush();   // 立即刷新,否则锁不会生效。   
	        }   
	        return t;   
	    }   
	  
	    // 获取全部实体。   
	    public List<T> loadAll()   
	    {   
	        return (List<T>) getHibernateTemplate().loadAll(domainClass);   
	    }   
	 
	    // loadAllWithLock() ?   
	      
	   // 更新实体   
	    public void update(T entity) throws Exception  
	    {  
	    	log.info("操作实体:" + entity);
	        getHibernateTemplate().update(entity);   
	    }   
	  
	    // 更新实体并加锁   
	    public void updateWithLock(T entity, LockMode lock)   
	    {   
	        getHibernateTemplate().update(entity, lock);   
	        this.flush();   // 立即刷新,否则锁不会生效。   
	    }   
	  
	    // 存储实体到数据库   
	    public void save(T entity) throws Exception  
	    {   
	        getHibernateTemplate().save(entity);   
	   }   
	  
	    // saveWithLock()?   
	 
	    // 增加或更新实体   
	    public void saveOrUpdate(T entity)   
	    {   
	       getHibernateTemplate().saveOrUpdate(entity);   
	    }   
	  
	    // 增加或更新集合中的全部实体   
	    public void saveOrUpdateAll(Collection<T> entities)   
	    {   
	        getHibernateTemplate().saveOrUpdateAll(entities);   
	   }   
	  
	    // 删除指定的实体   
	    public void delete(T entity)   
	   {   
	        getHibernateTemplate().delete(entity);   
	    }   
	  
	    // 加锁并删除指定的实体   
	    public void deleteWithLock(T entity, LockMode lock)   
	   {   
	        getHibernateTemplate().delete(entity, lock);   
	       this.flush();   // 立即刷新,否则锁不会生效。   
	    }   
	  
	    // 根据主键删除指定实体   
	    public void deleteByKey(PK id)   
	    {   
	        this.delete(this.load(id));   
	    }   
	  
	    // 根据主键加锁并删除指定的实体   
	   public void deleteByKeyWithLock(PK id, LockMode lock)   
	   {   
	       this.deleteWithLock(this.load(id), lock);   
	    }   
	  
	    // 删除集合中的全部实体   
	    public void deleteAll(Collection<T> entities)   
	    {   
	        getHibernateTemplate().deleteAll(entities);   
	    }   
	  
	   // -------------------- HSQL ----------------------------------------------   
	       
	    // 使用HSQL语句直接增加、更新、删除实体   
	    public int bulkUpdate(String queryString)   
	    {   
	        return getHibernateTemplate().bulkUpdate(queryString);   
	    }   
	  
	    // 使用带参数的HSQL语句增加、更新、删除实体   
	    public int bulkUpdate(String queryString, Object[] values)   
	    {   
	        return getHibernateTemplate().bulkUpdate(queryString, values);   
	    }   
	 
	    // 使用HSQL语句检索数据   
	   public List find(String queryString)   
	   {   
	        return getHibernateTemplate().find(queryString);   
	    }   
	 
	    // 使用带参数的HSQL语句检索数据   
	    public List<T> find(String queryString, Object[] values)   
	    {   
	        return getHibernateTemplate().find(queryString, values);   
	    }   
	  
	    // 使用带命名的参数的HSQL语句检索数据   
	    public List findByNamedParam(String queryString, String[] paramNames, Object[] values)   
	    {   
	        return getHibernateTemplate().findByNamedParam(queryString, paramNames, values);   
	    }   
	  
	    // 使用命名的HSQL语句检索数据   
	   public List findByNamedQuery(String queryName)   
	    {   
	        return getHibernateTemplate().findByNamedQuery(queryName);   
	    }   
	  
	    // 使用带参数的命名HSQL语句检索数据   
	    public List findByNamedQuery(String queryName, Object[] values)   
	    {   
	        return getHibernateTemplate().findByNamedQuery(queryName, values);   
	    }   
	  
	    // 使用带命名参数的命名HSQL语句检索数据   
	    public List findByNamedQueryAndNamedParam(String queryName, String[] paramNames, Object[] values)   
	    {   
	        return getHibernateTemplate().findByNamedQueryAndNamedParam(queryName, paramNames, values);   
	    }   
	  
	    // 使用HSQL语句检索数据,返回 Iterator   
	    public Iterator iterate(String queryString)   
	    {   
	        return getHibernateTemplate().iterate(queryString);   
	    }   
	  
	    // 使用带参数HSQL语句检索数据,返回 Iterator   
	    public Iterator iterate(String queryString, Object[] values)   
	    {   
	        return getHibernateTemplate().iterate(queryString, values);   
	   }   
	  
	    // 关闭检索返回的 Iterator   
	    public void closeIterator(Iterator it)   
	    {   
	        getHibernateTemplate().closeIterator(it);   
	    }   
	  
	    // -------------------------------- Criteria ------------------------------   
	       
	    // 创建与会话无关的检索标准   
	    public DetachedCriteria createDetachedCriteria()   
	    {   
	        return DetachedCriteria.forClass(domainClass);   
	    }   
	      
	    // 创建与会话绑定的检索标准   
	    public Criteria createCriteria()   
	    {   
	        return this.createDetachedCriteria().getExecutableCriteria(this.getSession());   
	    }   
	  
	    // 检索满足标准的数据   
	    public List findByCriteria(DetachedCriteria criteria)   
	    {   
	       return getHibernateTemplate().findByCriteria(criteria);   
	    }   
	       
	    // 检索满足标准的数据,返回指定范围的记录   
	    public List findByCriteria(DetachedCriteria criteria, int firstResult, int maxResults)   
	    {   
	        return getHibernateTemplate().findByCriteria(criteria, firstResult, maxResults);   
	    }   
	  
	    // 使用指定的实体及属性检索(满足除主键外属性=实体值)数据   
	    public List<T> findEqualByEntity(T entity, String [] propertyNames)    
	    {   
	        Criteria criteria = this.createCriteria();   
	        Example exam = Example.create(entity);   
	        exam.excludeZeroes();   
	        String [] defPropertys = getSessionFactory().getClassMetadata(domainClass.getName()).getPropertyNames();   
	        for(String defProperty : defPropertys)   
	        {   
	            int ii = 0;   
	            for(ii = 0; ii < propertyNames.length; ++ii)   
	            {   
	                if(defProperty.equals(propertyNames[ii]))   
	                {   
	                    criteria.addOrder(Order.asc(defProperty));   
	                    break;   
	                }   
	            }   
	            if(ii == propertyNames.length)   
	           {   
	                exam.excludeProperty(defProperty);   
	            }   
	        }   
	        criteria.add(exam);   
	        return (List<T>) criteria.list();   
	    }   
	       
	    // 使用指定的实体及属性检索(满足属性 like 串实体值)数据   
	    public List<T> findLikeByEntity(T entity, String [] propertyNames)   
	    {   
	        Criteria criteria = this.createCriteria();   
	        for(String property : propertyNames)   
	        {   
	            try  
	           {   
	                Object value = PropertyUtils.getProperty(entity, property);   
	               if(value instanceof String)   
	                {   
	                    criteria.add(Restrictions.like(property, (String) value, MatchMode.ANYWHERE));   
	                    criteria.addOrder(Order.asc(property));   
	                }   
	                else  
	               {   
	                    criteria.add(Restrictions.eq(property, value));   
	                   criteria.addOrder(Order.asc(property));   
	                }   
	            }   
	            catch(Exception ex)   
	            {   
	                // 忽略无效的检索参考数据。   
	            }   
	        }   
	        return (List<T>) criteria.list();   
	    }   
	       
	    // 使用指定的检索标准获取满足标准的记录数   
	    public Integer getRowCount(DetachedCriteria criteria)   
	    {   
	        criteria.setProjection(Projections.rowCount());   
	        List list = this.findByCriteria(criteria, 0, 1);   
	        return (Integer) list.get(0);   
	    }   
	  
	    // 使用指定的检索标准检索数据,返回指定统计值(max,min,avg,sum)   
	    public Object getStatValue(DetachedCriteria criteria, String propertyName, String StatName)   
	    {   
	        if     (StatName.toLowerCase().equals("max"))    
	            criteria.setProjection(Projections.max(propertyName));   
	        else if(StatName.toLowerCase().equals("min"))   
	            criteria.setProjection(Projections.min(propertyName));   
	        else if(StatName.toLowerCase().equals("avg"))   
	            criteria.setProjection(Projections.avg(propertyName));   
	        else if(StatName.toLowerCase().equals("sum"))   
	            criteria.setProjection(Projections.sum(propertyName));   
	        else return null;   
	        List list = this.findByCriteria(criteria, 0, 1);   
	        return list.get(0);           
	    }   
	       
	    // -------------------------------- Others --------------------------------   
	       
	    // 加锁指定的实体   
	    public void lock(T entity, LockMode lock)   
	    {   
	        getHibernateTemplate().lock(entity, lock);   
	    }   
	  
	    // 强制初始化指定的实体   
	    public void initialize(Object proxy)   
	    {   
	        getHibernateTemplate().initialize(proxy);   
	    }   
	  
	    // 强制立即更新缓冲数据到数据库(否则仅在事务提交时才更新)   
	    public void flush()   
	    {   
	        getHibernateTemplate().flush();   
	    }   
	    
	  //=========================== 分页代码===========================================
		public List queryForPage(final String hql, final int offset,final int length) {
	       List list = getHibernateTemplate().executeFind(new HibernateCallback() {

				public Object doInHibernate(Session session)
						throws HibernateException, SQLException {
					Query query = session.createQuery(hql);
					query.setFirstResult(offset);
					query.setMaxResults(length);
					List list = query.list();
					return list;
				}
			});
			return list;
		}
		
		public int getAllRowCount(String hql) throws Exception {
			return this.getHibernateTemplate().find(hql).size();
		}





	    
}

 

好的,现在开始编写service。首先编写接口类,BaseService.java 如下:

 

package com.zjsoft.service;

import java.io.Serializable;
import java.util.List;

import com.zjsoft.bean.Page;
@SuppressWarnings("unchecked")
public interface BaseService<T extends Serializable> {

	public void save(T t) throws Exception;
	
	public void saveAll(List objs) throws Exception;
	
	public void delete(T t);
	
	public void deleteAll(List objs);
	
	public void update(T t) throws Exception;
	
    public void updateAll(List objs) throws Exception;
	
	public void deleteById(Serializable id) throws Exception;
	
	public void deleteByIDS(Serializable[] ids) throws Exception;
	
	public T getByID(Serializable id) throws Exception;
	
	public Page listAll(int pageNum, int pageSize) throws Exception;
	
	public List<T> listAll() throws Exception;
	
	public Page queryPage(int pageSize, int page, String hql) throws Exception;
	
	public List listByIDs(Serializable[] ids) throws Exception;
}

 

 根据需求选择所要用到的方法,以上只是选择了一部分。

 接着实现该接口,BaseServiceImpl.java ,如下:

 package com.zjsoft.service.impl;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.zjsoft.bean.Page;
import com.zjsoft.dao.AbstractDAO;
import com.zjsoft.service.BaseService;

  @SuppressWarnings("unchecked")
 public abstract class BaseServiceImpl<T extends Serializable> implements BaseService<T>{

	  private AbstractDAO abstractDAO ;
	  
	  
		public AbstractDAO getAbstractDAO() {
		return abstractDAO;
	}

	public void setAbstractDAO(AbstractDAO abstractDAO) {
		this.abstractDAO = abstractDAO;
	}

		public abstract AbstractDAO getDAO(); 
		
		public void save(T t) throws Exception {
			getDAO().save(t);
		}
		
		public void saveAll(List objs) throws Exception
		{
			getDAO().saveOrUpdateAll(objs);
		}
		
		public void delete(T t) {
			getDAO().delete(t);
		}

		public void update(T t) throws Exception {
			getDAO().update(t);
		}
		
		public void updateAll(List objs) throws Exception {
			for (int i = 0; i < objs.size(); i++) {
				this.getDAO().update(objs.get(i)) ;
			}
		}
		
		public void deleteById(Serializable id) throws Exception {
			Object obj = getDAO().load(id);
			getDAO().delete(obj);
		}
		
		public void deleteByIDS(Serializable[] ids) throws Exception{
	        for(int i = 0; i < ids.length; i ++){
	        	getDAO().deleteByKey(ids[i]);
	        }
	    }
		
		public void deleteAll(List objs) {
			for (int i = 0; i < objs.size(); i++) {
				 getDAO().delete(objs.get(i));
			}
		}
		
		public T getByID(Serializable id) throws Exception
		{
			return (T) getDAO().get(id);
		}
		
		public List<T> listAll() throws Exception{
			return  getDAO().loadAll();
		}
		
	
		public Page queryPage(int pageSize, int page, String hql) throws Exception {
			int allRow = getDAO().getAllRowCount(hql);
			int totalPage = Page.countTotalPage(pageSize, allRow);
			final int offset = Page.countOffset(pageSize, page);
			final int length = pageSize;
			final int currentPage = Page.countCurrentPage(page);
			List<?> list = getDAO().queryForPage(hql, offset, length);

			//封装Page对象
			Page pageBean = new Page();
			pageBean.setPageSize(pageSize);
			pageBean.setCurrentPage(currentPage);
			pageBean.setAllRow(allRow);
			pageBean.setTotalPage(totalPage);
			pageBean.setList(list);
			pageBean.init();
			return pageBean;
		}
		
		/**
		 * 根据id查询,返回list
		 *  list封装了对象
		 * */
		public List listByIDs(Serializable[] ids) throws Exception{
			List<T> sysList = new ArrayList<T>() ;
			for (int i = 0; i < ids.length; i++) {
				T t = (T) getDAO().get(ids[i]) ;			
				sysList.add(t);
			}
			return sysList;

		}
}

 

  注意:BaseServiceImpl.java.为抽象类,需要真正的业务逻辑类去继承。其中类中用到了getDAO()方法。直接返回        该DAO

 

 

<!--EndFragment--> 以上的基础类已经写好了,下面开始真实的DAO跟service。

 下面的DAO接口就比较简单了,只需继承AbstractDAO接口就好了,对于DAO的实现类了要继承AbstractDAOImpl,还得实现自身的DAO SystemUserDAOImp.javal  

如下:

 

package com.huangt.dao.impl;



import com.huangt.bean.SystemUser;
import com.huangtt.dao.SystemUserDAO;

public class SystemUserDAOImpl extends  AbstractHibernateDAOImpl<SystemUser, Integer>  implements SystemUserDAO {
	
	@Override
    protected Class<SystemUser> getDomainClass() {
        return SystemUser.class;
    }
}

  以上@Override getDomainClass()的方法。以便service的调用。

 

  service接口也很简单,只需继承BaseService即可。对于该实现类SystemUserServiceImpl.java

  如下:

 

package com.huangt.service.impl;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;


import com.huangt.bean.SystemUser;
import com.huangt.dao.AbstractDAO;
import com.huangt.dao.SystemUserDAO;
import com.huangt.service.SystemUserService;


@SuppressWarnings("unchecked")
public class SystemUserServiceImpl extends BaseServiceImpl implements SystemUserService {

	private SystemUserDAO systemuserDAO;
	
	public SystemUserDAO getSystemUserDAO() {
		return systemuserDAO;
	}

	public void setSystemUserDAO(SystemUserDAO systemUserDAO) {
		this.systemuserDAO = systemUserDAO;
	}

	@Override
	public AbstractDAO getDAO() {
		return systemuserDAO;
	}


	//加载所有系统用户
	public List<SystemUser> loadAll() throws Exception {
		
		return this.getDAO().loadAll() ;
	}
	
	
}

 注意:以上需要Override getDAO()方法,提供下面的loadAll()调用。

 

 

 

 

<!--EndFragment-->
分享到:
评论

相关推荐

    hibernate与spring整合demo

    总结,Hibernate与Spring的整合是Java开发中的常见实践,它将ORM的强大功能与Spring的全面管理相结合,为开发者带来了极大的便利。理解和掌握这种整合方式,对于提升Java EE应用开发的效率和质量至关重要。

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用03

    Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合使用能够构建出高效、可维护性高的Web应用程序。本篇将深入剖析这三者如何协同工作,并提供实际范例应用。 首先,Struts2作为MVC(模型-视图...

    Struts 2+Hibernate+Spring整合开发技术详解sample.pdf

    Struts 2+Hibernate+Spring整合开发技术详解sample.pdf

    Struts2+Hibernate+Spring整合开发技术详解19章网上书店完整源码

    Struts2+Hibernate+Spring整合开发技术详解19章网上书店完整源码(内附数据库导出文件) 与书上最后一章内容完全对应 可以结合书上教程进行最后一章学习

    精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例全书

    《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例全书》是一本深入探讨J2EE Web应用程序开发的专业书籍。J2EE,全称Java 2 Platform, Enterprise Edition,是Java平台上用于构建企业级分布式应用程序的...

    ssh整和技术struts与hibernate整合,struts与spring整合,hibernate与spring整合,struts,hibernate,sp

    Struts技术资料 hibernate技术资料 spring技术资料 ssh整合技术(struts与hibernate整合,struts与spring整合,hibernate与spring整合,struts,hibernate,spring整合)

    SpringMVC+Hibernate+Spring整合实例

    总的来说,"SpringMVC+Hibernate+Spring整合实例"提供了一个全面的学习平台,帮助开发者深入理解Java企业级应用的开发模式和最佳实践。通过这个实例,你可以提升自己的技能,为未来的项目开发打下坚实的基础。

    精通J2EE——Eclipse+Struts+Hibernate+Spring整合应用案例(pdf完整版).part2-1

    精通J2EE——Eclipse+Struts+Hibernate+Spring整合应用案例 pdf电子书, 包含所有18个章节的完整版, 美中不足的是扫描质量不是很高,且是第一版的,不是目前最新的第二版! 请看清楚了再下,免得后悔! 共有两个部分-这...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用02

    这个"Struts2+Hibernate+Spring整合开发深入剖析与范例应用02"的学习资源,很可能是关于这三大框架集成使用的详细教程或案例集。02这个文件名可能代表系列的第二部分,意味着它可能在前一部分的基础上进一步深入讲解...

    Struts+Hibernate+Spring整合项目之登录部分

    3. **整合Hibernate和Spring**:在applicationContext.xml中配置SessionFactory,并声明User实体类的映射文件,让Spring管理SessionFactory。 4. **编写Action**:创建登录Action,处理用户提交的登录请求,通过...

    hibernate和spring整合Java项目

    本文将深入探讨Hibernate与Spring的整合过程,以及在项目中的实际应用。 一、Hibernate简介 Hibernate是一个强大的ORM框架,它为Java开发者提供了一种方便的方式来管理数据库操作。通过使用Hibernate,我们可以将...

    Struts 2+Hibernate+Spring整合开发技术详解 12~17章

    - **Spring与Hibernate整合**:配置Spring管理Hibernate SessionFactory,实现声明式事务管理。 4. **整合开发**: - **Struts 2与Spring的整合**:通过Spring插件使Struts 2的动作类能够利用Spring的依赖注入...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用06

    在"Struts2+Hibernate+Spring整合开发深入剖析与范例应用06"中,我们可能涉及以下几个关键知识点: 1. **Struts2框架**:Struts2是一个强大的MVC框架,用于构建动态Web应用。它的核心是Action类,它处理HTTP请求并...

    hibernate与spring整合

    **标题:“Hibernate与Spring整合”** 在Java开发中,Hibernate和Spring都是不可或缺的框架。Hibernate是一个优秀的对象关系映射(ORM)工具,它简化了数据库操作,而Spring框架则提供了全面的应用程序管理,包括...

    Struts 2+Hibernate+Spring整合开发技术详解随书源码18

    4. **整合流程**:整合Struts 2、Hibernate和Spring,首先需要配置Spring的IoC容器来管理所有组件,包括Action、DAO和Service。然后,使用Spring的HibernateTemplate或JdbcTemplate进行数据访问。接着,将Struts 2与...

    Struts.2.Hibernate.Spring整合开发技术详解.rar

    Struts 2、Hibernate 和 Spring 是Java开发中最流行的三大开源框架,它们的整合使用被称为SSH(Struts2、Spring、Hibernate)集成开发。这三大框架分别解决了Web应用中的不同问题,Struts 2负责表现层,Spring处理...

    10.6struts2+hibernate+spring的整合源代码

    SSH(Struts2+Spring+Hibernate)框架整合是Java Web开发中常见的一种技术栈,能有效地提高开发效率和代码质量。 Struts2作为MVC框架,主要负责处理HTTP请求,控制应用程序的流程,提供视图和控制器的分离。它的...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用05

    在"Struts2+Hibernate+Spring整合开发深入剖析与范例应用05"的源码中,我们可以看到具体的配置文件(如struts.xml、spring-context.xml、hibernate.cfg.xml)、Action类、Service类、DAO类以及实体类等。通过对这些...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用04

    在这个"Struts2+Hibernate+Spring整合开发深入剖析与范例应用04"的主题中,我们将探讨这三大框架的集成过程、关键概念以及实际应用。 首先,Struts2是基于MVC(Model-View-Controller)设计模式的Web框架,它负责...

    Struts2+Hibernate+Spring整合教程

    整合过程中,通常会使用Spring来管理Struts2和Hibernate的bean,实现依赖注入。Action类可以在Spring容器中声明,通过@Autowired注解注入所需的Service层对象。Hibernate的SessionFactory和Transaction可以通过...

Global site tag (gtag.js) - Google Analytics