Hibernate入门这一篇就够了(三)

简介: Hibernate入门这一篇就够了

Session


Session是Hibernate最重要的对象,Session维护了一个连接(Connection),只要使用Hibernate操作数据库,都需要用到Session对象


通常我们在DAO层中都会有以下的方法,Session也为我们提供了对应的方法来实现


public interface IEmployeeDao {
    void save(Employee emp);
    void update(Employee emp);
    Employee findById(Serializable id);
    List<Employee> getAll();
    List<Employee> getAll(String employeeName);
    List<Employee> getAll(int index, int count);
    void delete(Serializable id);
}



更新操作


我们在快速入门中使用到了save(Objcet o)方法,调用了这个方法就把对象保存在数据库之中了。Session对象还提供着其他的方法来进行对数据库的更新


  • session.save(obj);   【保存一个对象】
  • session.update(obj);  【更新一个对象】
  • session.saveOrUpdate(obj);  【保存或者更新的方法】
  • **没有设置主键,执行保存; **
  • **有设置主键,执行更新操作; **
  • 如果设置主键不存在报错!


我们来使用一下update()方法吧….既然是更新操作了,那么肯定需要设置主键的,不设置主键,数据库怎么知道你要更新什么。将id为1的记录修改成如下:


user.setId(1);
        user.setPassword("qwer");
        user.setCellphone("1111");
        user.setUsername("zhongfucheng");

微信图片_20220221151241.jpg这里写图片描述


主键查询


通过主键来查询数据库的记录,从而返回一个JavaBean对象


  • session.get(javaBean.class, int id);  【传入对应的class和id就可以查询】
  • session.load(javaBean.class, int id);  【支持懒加载】


User重写toString()来看一下效果:


User user1 = (User) session.get(User.class, 1);
        System.out.println(user1);

微信图片_20220221151243.jpg这里写图片描述


HQL查询


HQL:hibernate  query  language 即hibernate提供的面向对象的查询语言


  • 查询的是对象以及对象的属性【它查询的是对象以及属性,因此是区分大小写的!】


SQL:Struct query language 结构化查询语言


  • 查询的是表以及列【不区分大小写】


HQL是面向对象的查询语言,可以用来查询全部的数据!


Query query = session.createQuery("FROM User");
        List list = query.list();
        System.out.println(list);

微信图片_20220221151245.jpg这里写图片描述


当然啦,它也可以传递参数进去查询


Query query = session.createQuery("FROM User WHERE id=?");
        //这里的?号是从0开始的,并不像JDBC从1开始的!
        query.setParameter(0, user.getId());
        List list = query.list();
        System.out.println(list);

微信图片_20220221151247.jpg这里写图片描述


QBC查询


QBC查询: query by criteria  完全面向对象的查询


从上面的HQL查询,我们就可以发现:HQL查询是需要SQL的基础的,因为还是要写少部分的SQL代码….QBC查询就是完全的面向对象查询…但是呢,我们用得比较少


我们来看一下怎么使用吧:


//创建关于user对象的criteria对象
        Criteria criteria = session.createCriteria(User.class);
        //添加条件
        criteria.add(Restrictions.eq("id", 1));
        //查询全部数据
        List list = criteria.list();
        System.out.println(list);

微信图片_20220221151250.jpg这里写图片描述


本地SQL查询


有的时候,如果SQL是非常复杂的,我们不能靠HQL查询来实现功能的话,我们就需要使用原生的SQL来进行复杂查询了!


但是呢,它有一个缺陷:它是不能跨平台的…因此我们在主配置文件中已经配置了数据库的“方言“了。


我们来简单使用一下把:


//将所有的记录封装成User对象存进List集合中
        SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM user").addEntity(User.class);
        List list = sqlQuery.list();
        System.out.println(list);

微信图片_20220221151252.jpg这里写图片描述


beginTransaction方法


开启事务,返回的是一个事务对象….Hibernate规定所有的数据库操作都必须在事务环境下进行,否则报错!



目录
相关文章
|
4月前
|
SQL Java 数据库连接
Hibernate - 基础入门详解
Hibernate - 基础入门详解
44 1
|
SQL Java 数据库连接
hibernate入门学习笔记
hibernate入门学习笔记
64 0
|
SQL XML Java
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
|
存储 SQL Java
Hibernate入门实例
Hibernate是一个基于jdbc的开源的持久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码工作。Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
Hibernate入门实例
|
SQL 设计模式 缓存
【框架】[Hibernate]构架知识点详解入门与测试实例
【框架】[Hibernate]构架知识点详解入门与测试实例
101 0
【框架】[Hibernate]构架知识点详解入门与测试实例
|
Oracle Java 关系型数据库
Hibernate入门这一篇就够了(四)
Hibernate入门这一篇就够了
132 0
Hibernate入门这一篇就够了(四)
|
XML Java 数据库连接
Hibernate入门这一篇就够了(二)
Hibernate入门这一篇就够了
134 0
Hibernate入门这一篇就够了(二)
|
SQL XML 前端开发
Hibernate入门这一篇就够了(一)
Hibernate入门这一篇就够了
157 0
Hibernate入门这一篇就够了(一)
|
SQL Java 数据库连接
Hibernate入门这一篇就够了
前言 本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门,相信你们看了就会使用Hibernate了! 什么是Hibernate框架? Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之...
1229 0
|
Java 数据库连接 数据库