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

一、query方式

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

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

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

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

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

(1)query返回对象列表

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

(2)query返回唯一对象

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

3、query执行查询操作

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

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

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

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

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

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

利用query的executeUpdate()方法实现

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

二、hibernate模版方法

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

1、hibernateTemplate查询数据库

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

2、hibernateTemplate更新数据

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

3、hibernateTemplate插入数据

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

4、hibernateTemplate删除数据

		/**
* 利用hibernate模版方法进行删除,绑定参数形式
*
*/
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. PIL Gif分割成多个图片

    项目中遇到GIF图片读取问题,使用PIL中Image im=Image.open("D:\\yzm\\0009.gif") mode = 'RGB' im.seek(0) im.c ...

  2. java中subString、split、stringTokenizer三种截取字符串方法的性能比较(转)

    最近在阅读java.lang下的源码,读到String时,突然想起面试的时候曾经被人问过:都知道在大数据量情况下,使用String的split截取字符串效率很低,有想过用其他的方法替代吗?用什么替代? ...

  3. POJ 2442 Squence (STL heap)

    题意: 给你n*m的矩阵,然后每行取一个元素,组成一个包含n个元素的序列,一共有n^m种序列, 让你求出序列和最小的前n个序列的序列和. 解题思路: 1.将第一序列读入seq1向量中,并按升序排序. ...

  4. Cocos2d-x CCProgressTimer

    CCProgressTimer,创建使用这个节点可以大致实现两个作用的效果: 其一:在游戏中几乎大部分的游戏启动界面都是游戏加载画面,那么用到的一般是进度条提示加载进度,其使用的就是CCProgres ...

  5. Swift - 区间运算符(... 和 ..<)

    区间运算符可以用来表示两个操作数之间的范围集合. 1,闭区间运算符:a...b 1 2 3 for iCount in 512...1024{      //从512遍历到1024(包括1024) } ...

  6. Photoshop图象切片保存为网页HTML(DIV+CSS布局)的方法

    首先,制作图象切片(以一张图片为例子) 一.选择“切片”工具,在图像上拖动以分割图像(例如:一张图像切割2次就形成3个切片)切片后如下图 二.设置切片选项(如大小.目标链接.图片说明等等):选择“切片 ...

  7. 桌面应用框架 OneRing

    框架目标 OneRing是一个跨平台的桌面应用框架.和Adobe AIR类似,它支持用html/js/css制作用户界面,与之不同的是,它的应用为本地程序,可以直接访问操作系统的数据. 架构 一个On ...

  8. UVA 534 - Frogger(kruskal扩展)

    UVA 534 - Frogger 题目链接 题意:给定一些点.如今要求一条路径从第一个点能跳到第二个点,而且这个路径上的最大距离是最小的 思路:利用kruskal算法,每次加最小权值的边进去,推断一 ...

  9. ThinkPHP框架配置自定义的模板变量(十)

    原文:ThinkPHP框架配置自定义的模板变量(十) 模板替换(手册有详细介绍对应的目录) __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/ __ROOT__: 会替换成当 ...

  10. [Android阅读代码]圆形旋转菜单CircleMenu

    项目名称:圆形旋转菜单CircleMenu 原版项目代码下载 感谢原作者开源