因为Hibernate是ORM(对象关系映射)的,所以程序员是不需要写Sql语句的。所有的操作都是通过对对象的操作。

1,原生Session

事务管理

  1. Transaction tx = session.beginTransaction();//开启事务
  2. tx.commit();//提交事务

查询数据

查询user表中主键值为1的数据

  1. Object user = session.get(User.class, 1);

插入数据

向数据表中插入一条新数据

  1. User user=new User();
  2. user.setId(4);
  3. user.setName("jordan");
  4. user.setPassword("abc123");
  5. Transaction tx = session.beginTransaction();//开启事务
  6. session.save(user);
  7. tx.commit();//提交

更新全部数据

将数据表中id为4的字段全部赋值,

如果对应的user表中的字段在插入的对象中没有给定值,那么将会赋值为null

  1. User user=new User();
  2. user.setId(4);
  3. user.setName("james");
  4. Transaction tx = session.beginTransaction();
  5. session.update(user);//这个会把id为4的数据,name字段值改为'james' ,password字段值改为null。
  6. tx.commit();

更新部分数据

如果只更新数据表中某行的部分字段,可以按照一下的思路

思路:

先把所有数据查询出来,

然后把需要修改的数据修改掉

再进行一次全部更新。

这样就可以实现部分更新了

  1. User user = (User)session.get(User.class, 4);
  2. user.setPassword("abcdef");
  3. Transaction tx = session.beginTransaction();//开启事务
  4. session.update(user);
  5. tx.commit();//提交事务

删除数据

删除主键为2的数据

  1. User user=new User();
  2. user.setId(2);//以主键作为删除条件
  3. Transaction tx = session.beginTransaction();
  4. session.delete(user);
  5. tx.commit();

2,HQL

使用原生Session进行数据库操作,虽然贯彻了Hibernate的ORM特性,也就是一切都通过对象来实现,但是原生Session的缺点也明显,它只封装了基本的增删查改操作,对于复杂的情况可能就力不从心了。Hibernate提供了更加灵活的HQL语句(Hibernate Query Language),来弥补这个缺板,HQL可以由程序员自己写SQL语句,摆脱了ORM的约束。

查询全部数据

SQL语句:select * from user

HQL操作:

  1. String hql="from User";
  2. Query query = session.createQuery(hql);
  3. List list = query.list();//查询全部数据
  4. for(Object user:list){
  5. System.out.println(user);
  6. }

查找指定条件的数据

SQL语句:select * from user where uid=2;

HQL操作:

  1. String hql="from User where id=?";
  2. Query query = session.createQuery(hql);
  3. query.setInteger(0, 2);//设置参数
  4. Object result = query.uniqueResult();//得到唯一结果
  5. System.out.println(result);

使用预定义函数

SQL语句:select count(*) from user

HQL操作:

  1. String hql="select count(*) from User";
  2. Query query = session.createQuery(hql);
  3. Object result = query.uniqueResult();//结果肯定是整形
  4. System.out.println(result);

分页

SQL语句:select * from user limit 1,2

HQL操作:

  1. String hql="from User";
  2. Query query = session.createQuery(hql);
  3. query.setFirstResult(1);//查询起始位置
  4. query.setMaxResults(2);//指定查询的数量
  5. List list = query.list();
  6. for(Object user:list){
  7. System.out.println(user);
  8. }

更新

SQL语句:update user set uname='honny' where uid=1

HQL操作:

  1. String hql="update User set name=? where id=?";
  2. Query query = session.createQuery(hql);
  3. query.setString(0, "honny");
  4. query.setInteger(1, 1);
  5. Transaction tx = session.beginTransaction();//开启事务
  6. int rows = query.executeUpdate();//得到影响的行数
  7. tx.commit();//提交事务
  8. System.out.println("影响行数:"+rows);

【Hibernate】数据Session对象的常规操作收集的更多相关文章

  1. Hibernate之Session对象的相关方法以及持久化对象的状态

    一.持久化对象的状态        站在持久化的角度, Hibernate 把对象分为 4种状态: 持久化状态,临时状态,游离状态,删除状态.Session 的特定方法能使对象从一个状态转换到另一个状 ...

  2. hibernate之Session对象

    Session对象:数据库的核心对象 增删改查 ...java public class UserDao { public void addUser(User user) { //使用hibernat ...

  3. hibernate的session对象核心方法注意的问题

    1.session.save()方法 1).session.save()方法会使一个对象从临时状态转变为持久化状态. 2).session.save()方法会赋予持久化对象的OID属性一个ID值,以对 ...

  4. Hibernate(二)——POJO对象的操作

    POJO对象其实就是我们的实体,这篇博客总结一下框架对POJO对象对应数据库主键的生成策略,和一些对POJO对象的简单增删改查的操作.  一,Hibernate框架中主键的生成策略有三种方式: 1,数 ...

  5. [原创]java WEB学习笔记94:Hibernate学习之路---session 的管理,Session 对象的生命周期与本地线程绑定

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Hibernate之Session缓存以及操作Session缓存的相关方法

    1.Session概述 A.Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法. B. Sessio ...

  7. 第八章 Hibernate数据操作技巧

    第八章   Hibernate数据操作技巧8.1 分组统计数据    语法:[select]... from ...[where] [group by...[having...]] [order by ...

  8. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

  9. hibernate的事务管理和session对象的详解

    //开启事务 transaction=session.beginTransaction(); 上面为开启事务 transaction.commit();这个为提交事务 从session对象中获取事务后 ...

随机推荐

  1. Git 以分支的方式同时管理多个项目

    你是否遇到过这样的问题: 你的客户在你们这边做了N个项目,而项目之间又存在着某些业务关联(数据库访问等) 之前你可能是这样处理的,为客户的每个项目创建单独的Git版本 PC项目 手机项目 微信项目 其 ...

  2. (转)【风宇冲】Unity3D教程宝典之AssetBundles:第一讲

    自:http://blog.sina.com.cn/s/blog_471132920101gz8z.html 原创文章如需转载请注明:转载自风宇冲Unity3D教程学院                 ...

  3. Intercepting a 404 in IIS 7 and up

      Lately I've been working on a system that needs to serve flat files, which is what IIS is very goo ...

  4. 一道Javascript面试题引发的血案

    文章首发于szhshp的第三边境研究所,转载请注明 先来看几道面试题,公司的开发们都尝试做了一下,然而基本没有人能够全部答对. 覆盖的考点很多,也有一些难度,题目挺有意思建议手动执行一边玩玩. Que ...

  5. tomcat管理员在远程(不同)机器上访问管理页面

    tomcat8.5管理员默认只能在安装tomcat的机器上访问,如果想在其他机器上访问,则需要进行配置修改 添加用户和权限(<tomcat>\conf\tomcat-users.xml): ...

  6. SqlServer2012自增主键跳跃增长的问题解决方案

    1.问题:SqlServer2012自增主键插入几条数据,然后重启服务,然后再插入几条数据,发现重启后插入的记录ID出现跳跃. 2.解决方案: Open SQLServer configuration ...

  7. C# 通过SendMessage获取浏览器地址栏的地址

    1:通过SPY++获得地址栏的层次结构,然后一层一层获得 2:代码 using System; using System.Collections.Generic; using System.Linq; ...

  8. GCC中的内嵌汇编语言

    原文可参考:GCC中的内嵌汇编语言 一.声明   虽然Linux的核心代码大部分是用C语言编写的,但是不可避免的其中还是有一部分是用汇编语言写成的.有些汇编语言代码是直接写在汇编源程序中的,特别是Li ...

  9. mysql标准写法及其他常见问题

    /* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50549 Source H ...

  10. MVC+WCF框架下广告位管理——文件上传

    广告位是站点中不可缺少的内容之中的一个.也是能直接给我们站点带来经济收益的内容之中的一个. 好的广告位不仅不会强宾压主,而会为我们的站点锦上添花.起到画龙点睛的作用.因此设计好广告位也是开发过程中一大 ...