这篇文章用于总结hibernate操作数据库的各种方法

一、query方式

1、hibernate使用原生态的sql语句执行数据库查询

有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错误,就猜测因为不是原生态的sql语句,数据库不支持,因此情愿选择回到jdbc时代。这样既耗时耗力,又破坏面向对象的编程。其实,hibernate已经考虑到这个问题,hibernate可以执行原生态的sql语句,正对每种数据库,你可以写对应的sql语句,然后用createSQLQuery(sql)即可。

  1. /**
  2. * 本地sql的检索方式,使用原生态的sql语句检索
  3. *
  4. */
  5. Session session = this.getSession();
  6. String sql = "select * from course where cid=:id";
  7. Query query = session.createSQLQuery(sql);// 本地SQL检索方式
  8. query.setInteger("id", c_id);
  9. query.list();// 返回持久化的list

2、query执行查询操作(基本方式,字符串连接方式生成hql语句)

query执行查询操作,可以返回唯一对象或者是对象列表

(1)query返回对象列表

  1. /**
  2. * hql的检索方式,执行查询数据库操作,返回对象的列表
  3. * 采用hql语句连接方式
  4. */
  5. Session session = this.getSession();
  6. String hql = "select * from CourseDO where CId="+id+"";
  7. Query query = session.createQuery(hql);// 本地SQL检索方式
  8. query.list();// 返回持久化的list

(2)query返回唯一对象

  1. /**
  2. * hql的检索方式,执行查询数据库操作,返回唯一对象
  3. * 采用hql语句连接方式
  4. */
  5. Session session = this.getSession();
  6. String hql = "select * from CourseDO where CId="+id+"";
  7. Query query = session.createQuery(hql);// 本地SQL检索方式
  8. query.uniqueResult();// 返回持久化的list

3、query执行查询操作

hql采用参数方式,其中参数绑定方式分为两种:按照名字绑定,按照位置绑定

(1)hql参数绑定采用按照名字绑定

  1. /**
  2. * hql的检索方式,执行查询数据库操作,返回对象的列表
  3. *
  4. * 参数绑定的形式分为按名字绑定,按位置绑定 此处是按照名字绑定
  5. */
  6. Session session = this.getSession();
  7. String hql = "select * from CourseDO where CId=:id";
  8. Query query = session.createQuery(hql);// 本地SQL检索方式
  9. query.setInteger("id", c_id);// 名字绑定参数
  10. query.list();// 返回持久化对象的list列表

(2)hql参数绑定采用按照位置绑定

  1. /**
  2. * hql的检索方式,参数绑定的形式分为按名字绑定,按位置绑定 此处是按照位置绑定
  3. */
  4. String hql = "from CourseDO where CId=?";
  5. Session session = this.getSession();
  6. Query query = session.createQuery(hql);
  7. query.setParameter(0, c_id);// 位置绑定方式
  8. query.uniqueResult();// 检索单个对象,返回唯一值

4、query执行更新,删除操作

利用query的executeUpdate()方法实现

  1. /**
  2. * query执行更新,删除等非查询语句
  3. *
  4. */
  5. String hql = "delete from CourseDO where CId=? and Time=?";
  6. Session session = this.getSession();
  7. Query query = session.createQuery(hql);
  8. query.setParameter(0, c_id);// 位置绑定方式
  9. query.setDate(1, new Date());// 位置绑定方式,设置为Date类型
  10. query.executeUpdate();// 执行delete,update和insert into 语句

二、hibernate模版方法

利用hibernate模版方法执行hql语句非常简单,但是有时候不是那么方便,可以自己选择使用。

1、hibernateTemplate查询数据库

  1. /**
  2. * 利用hibernate模版方法进行查询,绑定参数形式
  3. *
  4. */
  5. String hql = "from CourseDO where CId=? and Date=?";
  6. List<CourseDO> courseDOs = getHibernateTemplate().find(hql, c_id,
  7. new Date());

2、hibernateTemplate更新数据

  1. /**
  2. * 利用hibernate模版方法进行更新,绑定参数形式
  3. *
  4. */
  5. List<CourseDO> courseDOs = getHibernateTemplate().update(courseDO);

3、hibernateTemplate插入数据

  1. /**
  2. * 利用hibernate模版方法进行插入,绑定参数形式
  3. *
  4. */
  5. List<CourseDO> courseDOs = getHibernateTemplate().save(courseDO);

4、hibernateTemplate删除数据

  1. /**
  2. * 利用hibernate模版方法进行删除,绑定参数形式
  3. *
  4. */
  5. List<CourseDO> courseDOs = getHibernateTemplate().delete(courseDO);

hibernate操作数据库总结的更多相关文章

  1. Java_Web三大框架之Hibernate操作数据库(三)

    使用Hibernate操作数据库需要七个步骤: (1)读取并解析配置文件 Configuration conf = newConfiguration().configure(); (2)读取并解析映射 ...

  2. hibernate操作数据库例子

    1.工程目录结构如下 2.引入需要的jar包,如上图. 3.创建持久化类User对应数据库中的user表 package com.hibernate.配置文件.pojo; import java.sq ...

  3. hibernate操作数据库总结(转)

    一.query方式 1.hibernate使用原生态的sql语句执行数据库查询 有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错误,就猜测因为不是原生态的sql语句,数据库不支持,因此情愿选 ...

  4. Hibernate操作数据库的回调机制--Callback

     1:一般情况下,在使用Hibernate Session存取数据库的代码中,基本上大部分是相同的,如下两个方法所示, //查询Teacher操作 ublic Teacher getTeacher ...

  5. Hibernate 操作数据库

    com.tao.pojo实体类 package com.tao.pojo; public class User { private int id; private String name; priva ...

  6. 转 使用Hibernate操作数据库时报:No CurrentSessionContext configured! 异常

    没有currentSession配置错误,即在我们使用currentSession的时候要在hibernate.cfg.xml中进行相关的事务配置:1.本地事务<property name=&q ...

  7. hibernate操作数据库时报错解决方式

    java.sql.SQLException: Parameter index out of range (28 > number of parameters, which is 27). 这个说 ...

  8. Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库

    概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...

  9. 5 -- Hibernate的基本用法 --2 2 Hibernate的数据库操作

    在所有的ORM框架中有一个非常重要的媒介 : PO(持久化对象:Persistent Object).持久化对象的作用是完成持久化操作,简单地说,通过该对象可对数据执行增.删.改的操作 ------ ...

随机推荐

  1. 积累的VC编程小技巧之列表框

    1.列表框中标题栏(Column)的添加 创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report.Align项里选择Top.Sort项里选择 ...

  2. Android自适应不同屏幕几种方法

        因为Android设备的屏幕尺寸.分辨率区别很大.假设希望我们的应用可以在不同屏幕尺寸或分辨率的Android设备上执行,即更换Android设备后界面和字体不会因此变得混乱.则须要考虑屏幕的 ...

  3. 【源代码】基于Android和蓝牙的单片机温度採集系统

    如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 STC89C52单片机通过HC-06蓝牙模块与Android手机通信实例- 基于And ...

  4. Oracle 12C 简介

    2013年6月26日,Oracle Database 12c版本正式发布,首先发布的版本号是12.1.0.1.0,率先提供下载的平台有Linux和Solaris: Oracle官方下载地址: http ...

  5. hdu2647解题报告

    题意:有个工厂的老板给工人发奖金,每人基础都是888,工人们有自己的想法,如:a 工人想要比 b 工人的奖金高,老板想要使花的钱最少 那么就可以 给b 888,给a 889 ,但是如果在此基础上,b也 ...

  6. 关于__stdcall和__cdecl调用方式的理解

    __stdcall和__cdecl都是函数调用约定关键字,先给出这两者的区别,然后举实例分析: __stdcall:参数由右向左压入堆栈:堆栈由函数本身清理. __cdecl:参数也是由右向左压入堆栈 ...

  7. visual studio 2012 使用 git/github

    Visual studio 2012 除了支持自己的TFS还支持Git,这里讲的原生的支持,相比让VS2010支持Git要简单的多,仅仅需要两步: 第一步 安装工具: Microsoft.TeamFo ...

  8. Android性能优化---布局优化

    我们从事Android开发编写布局的时候大多数是使用XML来布局,这给我们带来了方便性,这样操作可以布局界面的代码和逻辑控制的Java代码分离出来,使程序的结构更加清晰.明了.特别的复杂的布局,但是这 ...

  9. How to get the source code of the chromium of the specified revision

    I'd like to get the source code of the chromium 34.0.1847.9. gclient config http://src.chromium.org/ ...

  10. 关于window.history.back()后退问题

    Windows下的window.history.back()后退后返回的不仅仅是前一个页而是前一个页的状态.假设一个页我改动了3次那必须后退3次才干回到前一个页.并且数据库中删除的数据依旧显示在上面感 ...