Hibernate 简单的CURD操作

一、单表操作 CURD 实例

  • save
  • update
  • delete
  • get/load (查询单个记录)

 

二、代码实现

StudentTest.java

  1. @Test
  2. public void testSaveStudnets() {
  3.     //生成学生对象
  4.     Student s = new Student();
  5.     s.setName("陶渊明");
  6.     s.setSex(1);
  7.     s.setBirthday(new Date());
  8.     Address address = new Address("332000","13512345678","江西九江");
  9.     s.setAddress(address);
  10.     session.save(s);//保存对象进入数据库
  11. }
  12. @Test
  13. public void testGetStudents() {
  14.     Student s = (Student) session.get(Student.class1);
  15.     System.out.println(s);
  16. }
  17. @Test
  18. public void testLoadStudents() {
  19.     Student s = (Student) session.load(Student.class1);
  20.     System.out.println(s);
  21. }
  22. @Test
  23. public void testUpdateStudents() {
  24.     Student s = (Student) session.get(Student.class1);
  25.     s.setName("五柳先生");
  26.     session.update(s);
  27. }
  28. @Test
  29. public void testDeleteStudents() {
  30.     Student s = (Student) session.get(Student.class1);
  31.     session.delete(s);
  32. }

 

三、get 和 load 的区别

区别一、

  • 不考虑缓存的情况下,get 方法会在调用之后,立即向数据库发送 sql 语句,返回持久化对象。
  • load 方法会在调用后返回一个持久化对象。该代理对象只保留了实体对象的 id,直到使用实体对象的非主键属性时才发出 sql 语句。

区别二、

  • 查询数据库中不存在的数据时,get 方法返回 null 。
  • load 方法返回异常 org.hibernate.ObjectNotFoundException

p


  • 微信
  • 赶快加我聊天吧
  • 博客交流群
  • 海纳百川,大家来水
  • weinxin
言曌

发表评论 取消回复 您未登录,登录后才能评论,前往登录

    • avatar 言曌 博主

      ssssss

        • avatar 游客
          回复 2023年12月24日 18:34:37   1层

          @ 言曌 1

          • avatar 言曌 博主
            回复 2023年12月24日 18:34:56   2层

            @ 1111 2

          • avatar 游客

            ssss

              • avatar 言曌 博主
                回复 2023年11月25日 21:53:19   1层

                @ 你好 1111111

                • avatar 言曌 博主
                  回复 2023年11月25日 21:58:18   2层

                  @ 你好 sss

                  • avatar 言曌 博主
                    回复 2023年12月24日 18:35:13   3层

                    @ 你好 22222