所有的学习我们必须先搭建好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. }

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. <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
  18.  
  19. <!-- 控制台显示SQL -->
  20. <property name="show_sql">true</property>
  21.  
  22. <!-- 自动更新表结构 -->
  23. <property name="hbm2ddl.auto">update</property>
  24.  
  25. <!-- XML 版CRUD 实现 -->
  26. <mapping resource="com/wishwzp/model/Student.hbm.xml"/>
  27.  
  28. </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. <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
  18.  
  19. <!-- 控制台显示SQL -->
  20. <property name="show_sql">true</property>
  21.  
  22. <!-- 自动更新表结构 -->
  23. <property name="hbm2ddl.auto">update</property>
  24.  
  25. <!-- 注解版CRUD 实现 -->
  26. <mapping class="com.wishwzp.model.Teacher"/>
  27. </session-factory>
  28.  
  29. </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. }

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

(二)Hibernate4 CRUD 体验的更多相关文章

  1. Hibernate学习2—Hibernate4 CRUD体验初步

    接着上一节,工程结构: jar包没有变化: 一.HibernateUtil 封装: com.cy.util.HibernateUtil.java: package com.cy.util; impor ...

  2. [Beego模型] 二、CRUD 操作

    [Beego模型] 一.ORM 使用方法 [Beego模型] 二.CRUD 操作 [Beego模型] 三.高级查询 [Beego模型] 四.使用SQL语句进行查询 [Beego模型] 五.构造查询 [ ...

  3. kubebuilder实战之二:初次体验kubebuilder

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. Mybatis-plus<二>通用CRUD,分页

    Mybatis-plus<二>通用CRUD,分页 与博客Mybatis-plus<一>为同一个Springboot项目. Demo GitHub下载地址:https://git ...

  5. mybatis(二)执行CRUD操作的两种方式配置和注解

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...

  6. Mybatis学习(二) - CRUD操作(增删改查操作)

    直接上例子: 1.项目结构: 2.具体代码及配置 User.java package com.mybatis.bean; public class User { private int id; pri ...

  7. 邮件实现详解(二)------手工体验smtp和pop3协议

    上篇博客我们简单介绍了电子邮件的发送和接收过程,对参与其中的邮件服务器,邮件客户端软件,邮件传输协议也有简单的介绍.我们知道电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递必须 ...

  8. REST构架风格介绍之二:CRUD

    转载自:Todd  Wei    http://www.cnblogs.com/weidagang2046/archive/2009/05/09/1453065.html 上一节我们通过两个例子初步体 ...

  9. Yaf学习(二)----Yaf初体验

    1.hello world 1.1 用yaf输出hello world 1.首先配置host,nginx 2.host不用多说,指向虚拟机IP即可 1.2 重点说一下nginx (只说server块) ...

随机推荐

  1. oracle 日志学习(转载)

    一,重做日志概念 重做日志文件(redo log file)对于Oracle数据库至关重要.它们是数据库的事务日志.通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复 ...

  2. Android Fragment 基本介绍[转]

    Fragment Android是在Android 3.0 (API level 11)开始引入Fragment的. 可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的 ...

  3. Hadoop学习记录(4)|MapReduce原理|API操作使用

    MapReduce概念 MapReduce是一种分布式计算模型,由谷歌提出,主要用于搜索领域,解决海量数据计算问题. MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce( ...

  4. POJ3280 - Cheapest Palindrome(区间DP)

    题目大意 给定一个字符串,要求你通过插入和删除操作把它变为回文串,对于每个字符的插入和删除都有一个花费,问你把字符串变为回文串最少需要多少花费 题解 看懂题立马YY了个方程,敲完就交了,然后就A了,爽 ...

  5. SRM144 - SRM 148(少144-DIV1-LV3,147-DIV2-LV3)

    SRM 144 DIV 1 500pt tag:组合 题意:彩票中奖.给定n, m,从1-n中选择m个数组成数列a1, a2, a3...am.对于数列{am}分别满足以下条件的概率: (1)数列所有 ...

  6. IT应聘者的简历应该是怎么样的?

    从去年到现在看了几百份简历,包括产品运营和产品设计师的职位.我不是 HR,只是想直接看到求职者的状况,看看是不是要换更准确的渠道去招聘对的人.我看简历的目的也很简单:找到没有什么问题且可能合适的人,然 ...

  7. hadoop-2.6.0.tar.gz + spark-1.5.2-bin-hadoop2.6.tgz的集群搭建(单节点)

    前言 本人呕心沥血所写,经过好一段时间反复锤炼和整理修改.感谢所参考的博友们!同时,欢迎前来查阅赏脸的博友们收藏和转载,附上本人的链接.http://www.cnblogs.com/zlslch/p/ ...

  8. GCC扩展 __attribute__ ((visibility("hidden")))

    试想这样的情景,程序调用某函数A,A函数存在于两个动态链接库liba.so,libb.so中,并且程序执行需要链接这两个库,此时程序调用的A函数到底是来自于a还是b呢? 这取决于链接时的顺序,比如先链 ...

  9. java初学的几个问题

    1. 请问配置JDK时环境变量path和JAVA_HOME的作用是什么? 作用:告诉操作系统编译器运行的路径和生成的类路径.这样java源程序才可以进行编译和运行. 以下4-7题请在JDK环境下编译和 ...

  10. React-Native首次运行提示-ReferenceError-Can-t-find-variable-fbBatchedBridge

    React Native运行报错ReferenceError: Can't find variable: _fbBatchedBridge' React Native目前貌似要火的样子,作为移动开发人 ...