美文网首页
Hibernate基础

Hibernate基础

作者: ticktackdong | 来源:发表于2018-05-07 20:54 被阅读0次
一.批量插入,使用for循环可以方便的批量插入
  SessionFactory sf = new Configuration().configure().buildSessionFactory();

    Session s = sf.openSession();
    s.beginTransaction();

    for (int i = 0; i < 10; i++) {
        Product p = new Product();
        p.setName("iphone"+i);
        p.setPrice(i);
        s.save(p);         
    }

    s.getTransaction().commit();
    s.close();
    sf.close();
二.对象状态
  瞬时:指的是没有和hibernate发生任何关系,在数据库中也没有对应的记录,一旦JVM结束,这个对象也就消失了 
  持久: 指得是一个对象和hibernate发生联系,有对应的session,并且在数据库中有对应的一条记录
  脱管:指的是一个对象虽然在数据库中有对应的一条记录,但是它所对应的session已经关闭了
    Product p = new Product();
    p.setName("p1");
    System.out.println("此时p是瞬时状态");
    s.save(p);
    System.out.println("此时p是持久状态");
    s.getTransaction().commit();
    s.close();
    System.out.println("此时p是脱管状态");
三.通过id获取对象
     Product p =(Product) s.get(Product.class, 6);
    //需要传递一个类对象,毕竟需要知道获取的是哪个对象
    //除了get之外还可以使用load获取对象
     System.out.println("id=6的产品名称是: "+p.getName());
四.根据id把对象删除掉
   注意:hibernate在删除一条数据之前,先要通过id把这条记录取出来
     Product p =(Product) s.get(Product.class, 5);
    s.delete(p);
五.修改一个对象的属性,并更新到数据库
Product p =(Product) s.get(Product.class, 6);//根据id获取该对象
     
    System.out.println(p.getName());
     
    p.setName("iphone-modified");
     //修改该对象的属性
    s.update(p);
    //通过session的update方法把变化更新到数据库中
六.HQL(Hibernate Query Language)
hibernate专门用于查询数据的语句
有别于SQL,HQL更接近面向对象的思维方式
    String name = "iphone";
    Query q =s.createQuery("from Product p where p.name like ?");
   //注意前面没有select *,不需要,用的是类名Product而不是表product_
   //首先根据hql创建一个Query对象
    q.setString(0, "%"+name+"%");
   //设置参数,这里基0,根据name进行模糊查询
    List<Product> ps= q.list();
  //通过Query对象的list()方法即返回查询的结果了
    for (Product p : ps) {
        System.out.println(p.getName());
    }
七.Criteria进行数据查询
 完全是面向对象的方式进行数据查询
 将不再看到有sql语句的痕迹
String name = "iphone";        
    Criteria c= s.createCriteria(Product.class);
//1. 通过session的createCriteria创建一个Criteria 对象
    c.add(Restrictions.like("name", "%"+name+"%"));
 //2. Criteria.add 增加约束。 在本例中增加一个对name的模糊查询(like)
    List<Product> ps = c.list();
 //3. 调用list()方法返回查询结果的集合
    for (Product p : ps) {
        System.out.println(p.getName());
    }
 除此之外,Criteria还可以很方便的进行分页查询和获取总数
八.标准SQL查询
多表联合查询并且有分组统计函数的情况下效率较高
 String name = "iphone";
     
    String sql = "select * from product_ p where p.name like '%"+name+"%'";
     
    Query q= s.createSQLQuery(sql);
   //使用Session的createSQLQuery方法执行标准SQL语句
    List<Object[]> list= q.list();
   //因为标准SQL语句有可能返回各种各样的结果
   //比如多表查询,分组统计结果等等。 
   //不能保证其查询结果能够装进一个Product对象中
   //所以返回的集合里的每一个元素是一个对象数组
  //然后再通过下标把这个对象数组中的数据取出来。
    for (Object[] os : list) {
        for (Object filed: os) {
            System.out.print(filed+"\t");
        }
        System.out.println();
    }

相关文章

  • Hibernate基础

    什么是ORM?为什么要使用Hibernate? 对象关系映射。java语言是面向对象的,而数据库技术是从数学理论发...

  • Hibernate基础

    一.批量插入,使用for循环可以方便的批量插入 二.对象状态 三.通过id获取对象 四.根据id把对象删除掉 五....

  • Hibernate基础

    配置Hibernate: 1、导入Hibernatejar包,MySQL的JDBC的jar包,Junit-4的ja...

  • spring5x-hibernate5-cfg

    spring5x-hibernate5-cfg 此模块是从spring5x-hibernate5-base 基础模...

  • 新早起计划第十天-学会表达自己的情感

    早起情况 学习了Hibernate和Mybatis框架的基础知识 orm工具的基本思想 无论是Hibernate,...

  • Hibernate的使用(一) 持续更新

    Hibernate的简介及简单使用 一、什么是Hibernate。 还在自学JavaWeb基础的童鞋们可能听到Hi...

  • Hibernate的基础

    1.Hibernate的基本使用方式 1.Hibernate是一个对象关系映射框架 2.Hibernate的命名规...

  • Hibernate入门基础

    1. Hibernate技术简介 Hibernate能够使关系数据变得十分容易,是数据库表的访问同普通Java对象...

  • Hibernate 环境搭建

    导入基础架包 导入hibernate的基础架包 + mysql jdbc架包 创建实体Bean 创建 Hibern...

  • Hibernate初探

    什么是Hibernate Hibernate实际上是一个框架。 框架实际上是一个半成品。我们在这个基础上开发可以减...

网友评论

      本文标题:Hibernate基础

      本文链接:https://www.haomeiwen.com/subject/wrgvrftx.html