论坛首页 Java企业应用论坛

spring hibernatedaosupport hibernate

浏览 2664 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-03-13   最后修改:2010-04-23

   在使用hibernate3.1的时候,觉得它简化了dao的代码,让代码简洁了好多。

   但是想想还是有很多让人不如意的地方,例如,创建sessionfactory,session.....然后对这些开启,关闭之类的。后来学习了spring2.0,在里面接触了hibernatedaosupport类,慢慢使用到项目中。现在感觉,如果使用了hibernate3.1,而不使用spring2.0的hibernatedaosupport类的支持,会气死...。对于它,里面有很多的方法,可以实现我们dao类的crud操作,但是平时方法用的比较单一,现在总结下下添加与删除的方法:

  getHibernateTemplate().save(Object entity);
  getHibernateTemplate().save(String entityName, Object entity);
  getHibernateTemplate().saveOrUpdate(Object entity);
  getHibernateTemplate().saveOrUpdate(String entityName, Object entity);
  getHibernateTemplate().saveOrUpdateAll(Collection entites);

 

  getHibernateTemplate().delete(Object entity);
  getHibernateTemplate().delete(Object entity, LockMode lockMode);
  getHibernateTemplate().deleteAll(Collection entities);

 

/**用户数据访问类
 * @author Administrator
 */
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
	
	/** 添加用户5个方法介绍开始 **/
	public void addUser(User user){
		getHibernateTemplate().save(user);
	}

	/**
	 * @para1,名称随便取
	 */
	public void addUser1(User user){
		getHibernateTemplate().save("aa",user);
	}

	public void addUser2(User user){
		getHibernateTemplate().saveOrUpdate(user);
	}

	/**
	 * @para1,名称随便取
	 */
	public void addUser3(User user){
		getHibernateTemplate().saveOrUpdate("User",user);
	}

	/**
	 * 批量添加
	 * @param,必须为实现Collection接口实现集合
	 */
	public void addUser4(ArrayList<User> users){
		getHibernateTemplate().saveOrUpdateAll(users);
	}
	/** 添加用户5个方法介绍结束 **/
	
	/** 删除用户3个方法介绍开始 **/
	public void deleteUser(User user){
		getHibernateTemplate().delete(user);
	}
	
	/**
	 * LockMode:锁(对于hibernate这样设计的目的是在于什么地方,还不明白!)
	 * LockMode.NONE : 无锁机制
	 * LockMode.WRITE :在Insert和Update记录的时候会自动获取
	 * LockMode.READ : 在读取记录的时候会自动获取
	 * 以上这三种锁机制一般由Hibernate内部使用,如Hibernate为了保证Update
	 * 过程中对象不会被外界修改,会在save方法实现中自动为目标对象加上WRITE锁
	 * LockMode.UPGRADE :利用数据库的for update子句加锁
	 * LockMode.UPGRADE_NOWAIT :Oracle的特定实现,利用Oracle的for
	 * update nowait子句实现加锁
	 *@param user
	 */
	public void deleteUser1(User user){
		//getHibernateTemplate().delete(user);
		getHibernateTemplate().delete(user, LockMode.NONE);//LockMode.WRITE无效
	}
	
	/**
	 * 批量删除
	 *@param users
	 */
	public void deleteUser2(ArrayList<User> users){
		getHibernateTemplate().deleteAll(users);
	}
	/** 删除用户3个方法介绍结束 **/
}

    这是一个简单的dao类了.....(里面对添加与删除方法介绍了下)

   

/**用户业务处理类
 * @author Administrator
 *
 */
public class UserBizImpl implements UserBiz {
	private UserDao userDao;
	
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	public void addUser(User user){
		//userDao.addUser(user);
		//userDao.addUser1(user);
		//userDao.addUser2(user);
		//userDao.addUser3(user);
		ArrayList<User> users=new ArrayList<User>();
		users.add(new User("a","b"));
		users.add(new User("b","b"));
		userDao.addUser4(users);
	}
	
	public void deleteUser(User user){
		//userDao.deleteUser(user);
		//ArrayList<User> users=(ArrayList<User>) getListUser();
		//userDao.deleteUser2(users);
		userDao.deleteUser1(user);
	}
	
	public List getListUser(){
		return userDao.getListUser();
	}
	
	public User getUserById(int id){
		return userDao.getUserById(id);
	}
}

    这是dao对应的biz类了.....

    下次对更新与查询总结下,希望刚入门可以参考下...

     tanlinqing

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics