日期:2014-05-16  浏览次数:20421 次

Hibernate增删改查数据库之一DAO类

/*使用了自己封装的HibernateUtils工具类(该类详见之二篇日志)*/
public class SessionTest extends TestCase {
/**
  * 1.DESC--利用save()方法插入一条数据到数据库
  */
public void testSave(){
  Session session = null;
  User user = null;
  //实例化POJO对象
  user = new User();//@@@此时的user对象为瞬时对象状态@@@
  user.setName("xxx");
  user.setPassword("asb");
  user.setCteateTime(new Date());
  try{
   //获取session对象(调用HibernateUtils工具类)
   session=HibernateUtils.getSession();
   //开启事物
   HibernateUtils.openTransaction();
   //调用save(object)方法将持久化对象保存到数据库中(插入数据)
   session.save(user);//@@@此时的user对象为持久化对象状态@@@
   user.setName("update");
   session.update(user);//(更新数据)
   //提交事物
   HibernateUtils.commitTransaction();
  }catch(Exception e){
   //回滚事物
   HibernateUtils.rollbackTransation();
   e.printStackTrace();
  }finally{
   //关闭session对象
   HibernateUtils.closeSession(session);
  }
}
/**
  * 2.DESC--利用get()方法按主键查询数据库中的一条记录
  *   总结:get()不是延迟加载数据,当数据库无匹配数据时候,返回NULL
  *   技巧:判断是否查到指定主键的数据,只需要判断User对象是否为空
  */
public void testGet(){
  Session session = null;
  //创建session对象
  session = HibernateUtils.getSession();
  //开启事物
  HibernateUtils.openTransaction();
  //调用get()方法(按指定ID)
  User user = (User)session.get(User.class,"402880d51c6b345e011c6b34608d0001");
  //提交事物
  HibernateUtils.commitTransaction();
  if(user!=null){
   System.out.println("user.name=="+user.getName());
  }else{
   System.out.println("数据库中无与之匹配的数据!");
  }
  //关闭Session对象
  HibernateUtils.closeSession(session);
}
/**
  * 3.DESC--利用load()方法按主键查询数据库中的一条记录
  *   总结:get()是延迟加载数据,当数据库无匹配数据时候,返回ObjectNotFoundException异常
  *   技巧:判断是否查到指定主键的数据,只需要看是否抛出异常
  */
public void testLoad(){
  Session session = null;
  try{
   //创建session对象
   session = HibernateUtils.getSession();
  
   //调用load方法(按指定ID)
   User user = (User)session.load(User.class,"402880d51c6b345e011c6b34608d0001");
   //提交事物
   HibernateUtils.commitTransaction();
   System.out.println("user.name=="+user.getName());
  }catch(Exception e){
   System.out.println("数据库中无与之匹配的数据!");
  }finally{
   //关闭Session对象
   HibernateUtils.closeSession(session);
  }
}
/**
  * 3.DESC--利用delet()方法按主键删除数据库中的一条记录
  *   技巧:先用load()查出该条记录,然后调用delete()删除
  *   重点:要开启提交事物,否则删除不了
  */
public void testDelete(){
  Session session = null;
  try{
   //创建session对象
   session = HibernateUtils.getSession();
   //开启事物
   HibernateUtils.openTransaction();
   //调用load方法(按指定ID)
   User user = (User)session.load(User.class,"402880d51c6b345e011c6b34608d0001");
   session.delete(user);
   //提交事物
   HibernateUtils.commitTransaction();
  }catch(Exception e){
   System.out.println("删除失败-->数据库中无与之匹配的数据!");
  }finally{
   //关闭Session对象
   HibernateUtils.clo