• (二)Hibernate4 CRUD 体验


    所有的学习我们必须先搭建好hibernate的环境(1、导入对应的jar包,2、hibernate.cfg.xml,3、XXXX.hbm.xml)

    第一节:HibernateUtil 封装

    导入对应的hibernate的jar包和mysql的jar包

    HibernateUtil.java

     1 package com.wishwzp.util;
     2 
     3 import org.hibernate.SessionFactory;
     4 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
     5 import org.hibernate.cfg.Configuration;
     6 import org.hibernate.service.ServiceRegistry;
     7 
     8 /**
     9  * 
    10  * hibernate封装
    11  * @author wishwzp
    12  *
    13  */
    14 public class HibernateUtil {
    15     
    16     private static final SessionFactory sessionFactory=buildSessionFactory();
    17 
    18     /**
    19      * 绑定SessionFactory
    20      * @return
    21      */
    22     private static SessionFactory buildSessionFactory(){
    23         // 实例化配置文件
    24         Configuration configuration=new Configuration().configure(); 
    25         // 实例化服务登记
    26         ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    27         //获取Session工厂
    28         return configuration.buildSessionFactory(serviceRegistry);
    29     }
    30     
    31     public static SessionFactory getSessionFactory(){
    32         return sessionFactory;
    33     }
    34 } 


    第二节:XML 版CRUD 实现

    导入对应的hibernate的jar包、mysql的jar包和添加每次都需要用到的HibernateUtil.java

    Student.java

     1 package com.wishwzp.model;
     2 
     3 public class Student {
     4 
     5     private long id;
     6     private String name;
     7     
     8     public long getId() {
     9         return id;
    10     }
    11     public void setId(long id) {
    12         this.id = id;
    13     }
    14     public String getName() {
    15         return name;
    16     }
    17     public void setName(String name) {
    18         this.name = name;
    19     }
    20     @Override
    21     public String toString() {
    22         return "Student [id=" + id + ", name=" + name + "]";
    23     }
    24     
    25     
    26 }

    Student.hbm.xml

     1 <?xml version="1.0"?>
     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 
     6 <hibernate-mapping package="com.wishwzp.model">
     7 
     8     <class name="Student" table="t_student">
     9         <id name="id" column="stuId">
    10             <generator class="native"></generator>
    11         </id>
    12         
    13         <property name="name"></property>
    14     </class>
    15 
    16 </hibernate-mapping>

    hibernate.cfg.xml

     1 <?xml version='1.0' encoding='utf-8'?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     5 
     6 <hibernate-configuration>
     7 
     8     <session-factory>
     9 
    10         <!--数据库连接设置 -->
    11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
    13         <property name="connection.username">root</property>
    14         <property name="connection.password">123456</property>
    15 
    16        
    17         <!-- 方言 -->
    18         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    19     
    20         <!-- 控制台显示SQL -->
    21         <property name="show_sql">true</property>
    22 
    23         <!-- 自动更新表结构 -->
    24         <property name="hbm2ddl.auto">update</property>
    25         
    26         <!-- XML 版CRUD 实现 -->
    27           <mapping resource="com/wishwzp/model/Student.hbm.xml"/>
    28 
    29 </hibernate-configuration>

    StudentTest.java

      1 package com.wishwzp.service;
      2 
      3 import java.util.List;
      4 
      5 import org.hibernate.Query;
      6 import org.hibernate.Session;
      7 import org.hibernate.SessionFactory;
      8 
      9 import com.wishwzp.model.Student;
     10 import com.wishwzp.util.HibernateUtil;
     11 
     12 public class StudentTest {
     13     
     14     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
     15     
     16     /**
     17      * 添加
     18      */
     19     private void add(){
     20         // 生成一个session
     21         Session session=sessionFactory.openSession();
     22         // 开启事务
     23         session.beginTransaction(); 
     24         
     25         Student s=new Student();
     26         s.setName("张三");
     27         session.save(s);
     28         
     29         // 提交事务
     30         session.getTransaction().commit();
     31         // 关闭session
     32         session.close();
     33     }
     34     
     35     /**
     36      * 删除
     37      */
     38     private void delete(){
     39         // 生成一个session
     40         Session session=sessionFactory.openSession(); 
     41         // 开启事务
     42         session.beginTransaction(); 
     43         
     44         Student student=(Student)session.get(Student.class, Long.valueOf(1));
     45         session.delete(student);
     46         
     47         // 提交事务
     48         session.getTransaction().commit(); 
     49         // 关闭session
     50         session.close(); 
     51     }
     52     
     53     /**
     54      * 更新
     55      */
     56     private void update(){
     57         // 生成一个session
     58         Session session=sessionFactory.openSession(); 
     59         // 开启事务
     60         session.beginTransaction(); 
     61         
     62         Student student=(Student)session.get(Student.class, Long.valueOf(2));
     63         student.setName("张三2");
     64         session.save(student);
     65         
     66         // 提交事务
     67         session.getTransaction().commit(); 
     68         // 关闭session
     69         session.close(); 
     70     }
     71     
     72     /**
     73      * 查询
     74      */
     75     private void getAllStudent(){
     76         // 生成一个session
     77         Session session=sessionFactory.openSession(); 
     78         // 开启事务
     79         session.beginTransaction(); 
     80         
     81         String hql="from Student";
     82         Query query=session.createQuery(hql);
     83         List<Student> studentList=query.list();
     84         for(Student student:studentList){
     85             System.out.println(student);
     86         }
     87         
     88         // 提交事务
     89         session.getTransaction().commit(); 
     90         // 关闭session
     91         session.close(); 
     92     }
     93 
     94     public static void main(String[] args) {
     95         StudentTest studentTest=new StudentTest();
     96         studentTest.add();
     97 //        studentTest.delete();
     98 //        studentTest.update();
     99 //        studentTest.getAllStudent();
    100     }
    101 }

    第三节:注解版CRUD 实现

    导入对应的hibernate的jar包、mysql的jar包和添加每次都需要用到的HibernateUtil.java

    hibernate.cfg.xml

     1 <?xml version='1.0' encoding='utf-8'?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     5 
     6 <hibernate-configuration>
     7 
     8     <session-factory>
     9 
    10         <!--数据库连接设置 -->
    11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
    13         <property name="connection.username">root</property>
    14         <property name="connection.password">123456</property>
    15 
    16        
    17         <!-- 方言 -->
    18         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    19     
    20         <!-- 控制台显示SQL -->
    21         <property name="show_sql">true</property>
    22 
    23         <!-- 自动更新表结构 -->
    24         <property name="hbm2ddl.auto">update</property>
    25 
    26         <!-- 注解版CRUD 实现 -->
    27         <mapping class="com.wishwzp.model.Teacher"/>
    28     </session-factory>
    29 
    30 </hibernate-configuration>

     Teacher.java

     1 package com.wishwzp.model;
     2 
     3 import javax.persistence.Entity;
     4 import javax.persistence.GeneratedValue;
     5 import javax.persistence.Id;
     6 import javax.persistence.Table;
     7 
     8 import org.hibernate.annotations.GenericGenerator;
     9 
    10 //实体
    11 @Entity
    12 //这个是你指定是数据库哪张表,我这里指定的是t_teacher
    13 @Table(name="t_teacher")
    14 public class Teacher {
    15 
    16     private long id;
    17     private String name;
    18     
    19     @Id//主键
    20     @GeneratedValue(generator="_native")//这里开始使用名为_native的策略
    21     @GenericGenerator(name="_native",strategy="native")//这里定义一个名为_native的策略,是native
    22     public long getId() {
    23         return id;
    24     }
    25     public void setId(long id) {
    26         this.id = id;
    27     }
    28     public String getName() {
    29         return name;
    30     }
    31     public void setName(String name) {
    32         this.name = name;
    33     }
    34     @Override
    35     public String toString() {
    36         return "Teacher [id=" + id + ", name=" + name + "]";
    37     }
    38     
    39     
    40 }

     TeacherTest.java

     1 package com.wishwzp.service;
     2 
     3 import java.util.List;
     4 
     5 import org.hibernate.Query;
     6 import org.hibernate.Session;
     7 import org.hibernate.SessionFactory;
     8 
     9 import com.wishwzp.model.Teacher;
    10 import com.wishwzp.util.HibernateUtil;
    11 
    12 public class TeacherTest {
    13     
    14     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
    15     
    16     public void add(){
    17         Session session=sessionFactory.openSession(); // 生成一个session
    18         session.beginTransaction(); // 开启事务
    19         
    20         Teacher s=new Teacher();
    21         s.setName("张三");
    22         session.save(s);
    23         
    24         session.getTransaction().commit(); // 提交事务
    25         session.close(); // 关闭session
    26     }
    27     
    28     public void delete(){
    29         Session session=sessionFactory.openSession(); // 生成一个session
    30         session.beginTransaction(); // 开启事务
    31         
    32         Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(1));
    33         session.delete(Teacher);
    34         
    35         session.getTransaction().commit(); // 提交事务
    36         session.close(); // 关闭session
    37     }
    38     
    39     public void update(){
    40         Session session=sessionFactory.openSession(); // 生成一个session
    41         session.beginTransaction(); // 开启事务
    42         
    43         Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(2));
    44         Teacher.setName("张三2");
    45         session.save(Teacher);
    46         
    47         session.getTransaction().commit(); // 提交事务
    48         session.close(); // 关闭session
    49     }
    50     
    51     public void getAllTeacher(){
    52         Session session=sessionFactory.openSession(); // 生成一个session
    53         session.beginTransaction(); // 开启事务
    54         
    55         String hql="from Teacher";
    56         Query query=session.createQuery(hql);
    57         List<Teacher> TeacherList=query.list();
    58         for(Teacher Teacher:TeacherList){
    59             System.out.println(Teacher);
    60         }
    61         
    62         session.getTransaction().commit(); // 提交事务
    63         session.close(); // 关闭session
    64     }
    65 
    66     public static void main(String[] args) {
    67         TeacherTest TeacherTest=new TeacherTest();
    68         // TeacherTest.add();
    69         // TeacherTest.delete();
    70         // TeacherTest.update();
    71         TeacherTest.getAllTeacher();
    72     }
    73 }

     注释版的我们就不需要在去配置XXX.hbm.xml了。

    第四节:Junit4 单元测试框架引入

    导入对应的junit包

    百度云:http://pan.baidu.com/s/1dFBbhhZ

    密码:3z1i

    在测试版CRUD的基础上,我们运用junit重写了运行主类mian()。

    TeacherTest2.java

     1 package com.wishwzp.service;
     2 
     3 
     4 
     5 import java.util.List;
     6 
     7 import org.hibernate.Query;
     8 import org.hibernate.Session;
     9 import org.hibernate.SessionFactory;
    10 import org.junit.Test;
    11 
    12 import com.wishwzp.model.Teacher;
    13 import com.wishwzp.util.HibernateUtil;
    14 
    15 public class TeacherTest2 {
    16     
    17     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
    18     
    19     @Test
    20     public void testAdd() {
    21         Session session=sessionFactory.openSession(); // 生成一个session
    22         session.beginTransaction(); // 开启事务
    23         
    24         Teacher s=new Teacher();
    25         s.setName("张三");
    26         session.save(s);
    27         
    28         session.getTransaction().commit(); // 提交事务
    29         session.close(); // 关闭session
    30     }
    31 
    32     @Test
    33     public void testDelete() {
    34         Session session=sessionFactory.openSession(); // 生成一个session
    35         session.beginTransaction(); // 开启事务
    36         
    37         Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(2));
    38         session.delete(Teacher);
    39         
    40         session.getTransaction().commit(); // 提交事务
    41         session.close(); // 关闭session
    42     }
    43 
    44     @Test
    45     public void testUpdate() {
    46         Session session=sessionFactory.openSession(); // 生成一个session
    47         session.beginTransaction(); // 开启事务
    48         
    49         Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(3));
    50         Teacher.setName("张三2");
    51         session.save(Teacher);
    52         
    53         session.getTransaction().commit(); // 提交事务
    54         session.close(); // 关闭session
    55     }
    56 
    57     @Test
    58     public void testGetAllTeacher() {
    59         Session session=sessionFactory.openSession(); // 生成一个session
    60         session.beginTransaction(); // 开启事务
    61         
    62         String hql="from Teacher";
    63         Query query=session.createQuery(hql);
    64         List<Teacher> TeacherList=query.list();
    65         for(Teacher Teacher:TeacherList){
    66             System.out.println(Teacher);
    67         }
    68         
    69         session.getTransaction().commit(); // 提交事务
    70         session.close(); // 关闭session
    71     }
    72 
    73 }
  • 相关阅读:
    闭包
    保存数据
    Browers Object Model
    JavaScript中的null和undefined
    魔法查询函数
    《黑客与画家》 读书感想
    CakePHP查询数据
    HDFS写入和读取流程
    回调函数
    JAVA中的指针
  • 原文地址:https://www.cnblogs.com/wishwzp/p/5477490.html
Copyright © 2020-2023  润新知