Hibernate4学习总结——(二)

转载来源:http://blog.csdn.net/qq_29829081/article/details/51020774

一、增删改查方法

需求:将客户对象保存进数据库。

User.java

[java]  view plain  copy
 print ?
  1. package edu.scut.b_curd;  
  2. public class User {  
  3.     private int id;  
  4.     private String name;  
  5.     private String password;  
  6.     private String email;  
  7.     public int getId() {  
  8.         return id;  
  9.     }  
  10.     public void setId(int id) {  
  11.         this.id = id;  
  12.     }  
  13.     public String getName() {  
  14.         return name;  
  15.     }  
  16.     public void setName(String name) {  
  17.         this.name = name;  
  18.     }  
  19.     public String getPassword() {  
  20.         return password;  
  21.     }  
  22.     public void setPassword(String password) {  
  23.         this.password = password;  
  24.     }  
  25.     public String getEmail() {  
  26.         return email;  
  27.     }  
  28.     public void setEmail(String email) {  
  29.         this.email = email;  
  30.     }  
  31.     @Override  
  32.     public String toString() {  
  33.         return "User [id=" + id + ", name=" + name + ", password=" + password  
  34.                 + ", email=" + email + "]";  
  35.     }  
  36. }  
User表

User.hbm.xml

[java]  view plain  copy
 print ?
  1. <pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.     <class name="edu.scut.b_curd.User" table="t_user">  
  7.         <!-- 主键 -->  
  8.         <id name="id" column="t_id">  
  9.             <generator class="assigned"></generator>  
  10.         </id>  
  11.           
  12.         <!-- 普通属性 -->  
  13.         <property name="name" column="t_name" type="string" length="20"></property>  
  14.         <property name="password" column="t_password" length="20"></property>  
  15.         <property name="email" column="t_email" length="50"></property>  
  16.     </class>  
  17. </hibernate-mapping>  

 
  

1.1 保存

在事务当中,如果发生异常,就需要回滚,将数据还原为之前的状态。

[java]  view plain  copy
 print ?
  1. public void test1(){  
  2.     //1 获取session对象  
  3.     Session session = HibernateUtil.getSession();  
  4.       
  5.     //2 开启事务  
  6.     session.beginTransaction();  
  7.       
  8.     try {  
  9.             //3 保存user  
  10.         User user = new User();  
  11.             user.setId(2);  
  12.         user.setName("张三丰");  
  13.          user.setPassword("666666");  
  14.         user.setEmail("[email protected]");  
  15.           
  16.         session.save(user);  
  17.           
  18.          //4 提交事务  
  19.          session.getTransaction().commit();  
  20.     } catch (Exception e) {  
  21.             e.printStackTrace();  
  22.             //出现异常,回滚事务  
  23.          session.getTransaction().rollback();  
  24.     } finally{  
  25.          //关闭资源  
  26.         HibernateUtil.close(session);  
  27.     }  
  28. }  

1.2 更新

有两种方式,第一种方式需要对对象的每一项数据都要修改,否则将成为null;第二种只操作需要修改的属性,更为常用。

[java]  view plain  copy
 print ?
  1.        public void test2(){  
  2. //1 获取session对象  
  3. Session session = HibernateUtil.getSession();  
  4. //2 打开事务  
  5. session.beginTransaction();  
  6.   
  7. try {  
  8.     //3 更新操作,有两种方式  
  9.     /* 
  10.      * 第一种方式: 
  11.      * <1>必须给id赋值; 
  12.      * <2>hibernate会把所有字段都更新,如果对象的属性不赋值,则设置null 
  13.      */  
  14.     /*User user = new User(); 
  15.     user.setId(1); 
  16.     user.setName("荆天明"); 
  17.     user.setPassword("666666"); 
  18.     user.setEmail("[email protected]"); 
  19.     session.update(user); 
  20.     */  
  21.       
  22.     /* 
  23.      * 第二种方式(推荐的方式) 
  24.      * <1>先把需要更新的对象查询出来 
  25.      * <2>参数一:查询的对象 
  26.      * <3>参数二:ID值 
  27.      */  
  28.     User user = (User) session.get(User.class,1);  
  29.     //修改需要更新的属性  
  30.     user.setName("盖聂");  
  31.     user.setPassword("88888888");  
  32.       
  33.     //4 提交事务  
  34.     session.getTransaction().commit();  
  35. catch (Exception e) {  
  36.     e.printStackTrace();  
  37.     //有异常,回滚事务  
  38.     session.getTransaction().rollback();  
  39. finally{  
  40.     //5 关闭资源  
  41.     HibernateUtil.close(session);  
  42. }  

1.3 查询

较常用的是以下三种方式。

[java]  view plain  copy
 print ?
  1.         public void test3(){  
  2. //1 获取session对象  
  3. Session session = HibernateUtil.getSession();  
  4. //2 打开事务  
  5. session.beginTransaction();  
  6.   
  7. try {  
  8.     //3 查询用户  
  9.     //<1>查询所有用户,hql  
  10.     Query query = session.createQuery("from User");  
  11.     List<User> users = query.list();  
  12.     for (User user : users) {  
  13.         System.out.println(user);  
  14.     }  
  15.       
  16.     //<2>查询一个用户  
  17.     User user = (User) session.get(User.class,1);  
  18.     System.out.println(user);  
  19.       
  20.     //<3>条件查询一个用户  
  21.     Query q = session.createQuery("select u from User u where name=? ");  
  22.     q.setParameter(0"盖聂");  
  23.     User u = (User) q.uniqueResult();  
  24.     System.out.println(u);  
  25.       
  26.     //4 提交事务  
  27.     session.getTransaction().commit();  
  28. catch (Exception e) {  
  29.     e.printStackTrace();  
  30.     //有异常,回滚事务  
  31.     session.getTransaction().rollback();  
  32. finally{  
  33.     //5 关闭资源  
  34.     HibernateUtil.close(session);  
  35. }  

1.4 删除

两种删除方式,推荐使用第一种。

[java]  view plain  copy
 print ?
  1.           public void test4(){  
  2.     //1 获取session对象  
  3.     Session session = HibernateUtil.getSession();  
  4.     //2 打开事务  
  5.     session.beginTransaction();  
  6.       
  7.     try {  
  8.         //3 删除用户  
  9.         //第一种,先查询出来  
  10.         User user = (User) session.get(User.class1);  
  11.         if(user!=null){  
  12.             session.delete(user);  
  13.         }  
  14.           
  15.         //第二种(不推荐)  
  16.         User user2 = new User();  
  17.         user2.setId(2);  
  18.         session.delete(user2);  
  19.           
  20.         //4 提交事务  
  21.         session.getTransaction().commit();  
  22.     } catch (Exception e) {  
  23.         e.printStackTrace();  
  24.         //有异常,回滚事务  
  25.         session.getTransaction().rollback();  
  26.     } finally{  
  27.         //5 关闭资源  
  28.         HibernateUtil.close(session);  
  29.     }     
  30. }  

你可能感兴趣的:(Hibernate4学习总结——(二))