打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Hibernate API、对象状态、HQL、Criteria - 天黑博客 - ITey...

Hibernate API、对象状态、HQL、Criteria

文章分类:Java编程

一、Hibernate中对象状态

学习Hibernate API之前要知道Hibernate中对象的几种状态,这样对API的学习会更加深入。

 

对象状态:

瞬时(transient):刚new出的对象,没有跟Session关联。数据库中没有此条记录。

持久(persistent):此对象跟Session有关联,Session没有关闭,事务没有提交。数据库中已有此数据。

                            对象发生变化 时Hibernate还会检测到。

脱管(detached):跟Session已经没有关联,数据库中有此数据。对象发生变化时Hibernate不会检测到。也叫游离。

 

二、介绍一下Hibernate中主要的API:

 

1、org.hibernate.cfg.Configuration类

作用:配置并启动Hibernate。读取配置文件、读取映射文件。创建单实例的SessionFactory。

configure():读取"/hibernate.cfg.xml"配置文件。

buildSessionFactory():创建SessionFactory

setProperty(String key,Object value):通过代码给Hibernate设置属性值

 

2、org.hibernate.SessionFactory接口

作用:初始化Hibernate,负责创建Session。使用了工厂模式。

openSession():创建数据库连接,并且返回一个Session。

 

3、org.hibernate.Session接口

作用:执行对持久化对象的CRUD操作。包含了很多常见的SQL语句。

beginTransaction():开始一个事务,并且返回一个事务的实例。

save(Object):创建一条记录。

persist(Object) :同save(Object)方法类似。

saveOrUpdate(Object):创建或更新一条记录。

merge(Object):

get(Class, Serializable):根据id查询。

load(Object, Serializable):根据id查询 。返回的是代理,不会立刻访问数据库。懒加载的。

delete(Object) :删除一条记录

 

4、org.hibernate.Transaction接口

作用:负责事务的操作。

commit():事务提交

 

5、org.hibernate.Query接口

作用:Query可以使用HQL语言来查询数据库。

list():返回查询结果集。返回结果是List。

uniqueResult() :查询唯一的结果。返回结果是Object。

setXXX():给参数设置值

分页:

setFirstResult(int):设置分页时开始的位置。不论哪个数据库都通用

setMaxResult(int):设置分页时返回的结果数。不论哪个数据库都通用

 

6、org.hibernate.Criteria接口

作用:条件查询,比Query更加面向对象。

add(Criterion):添加约束条件

 

7、org.hibernate.criterion.Restrictions类

作用:

 

三、HQL语言(Hibernate Query Language)

HQL是面向对象的查询语言。HQL查询的是对象而不是表。

HQL主要通过org.hibernate.Query来操作。Query的创建方式:

Query q = session.createQuery(hql);

String hql = "from User as user where user.name=?"; 

q.setString(0,"zhangsan");

List<User> list = q.list();

Object o = q.uniqueResult();

 

命名参数方式:

String hql = "from User as user where user.name=:n"; //冒号加上变量的名字

q.setString("u","zhangsan");

 

四、Criteria查询方式(条件查询)

Criteria是一种比HQL更加面向对象的查询方式。

Criteria c = session.createCriteria(User.class);  //参数是要查询的类

c.add(Restrictions.eq("name",n));  //添加约束条件。第一个参数是类的字段名,第二个参数是匹配的值

List<User> list = q.list();

Object o = q.uniqueResult();

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
五、hibernate的Session操作, 查询过滤, 缓存利用, 批量处理
Hibernate Shards 数据的水平、垂直切割(三)- Hibernate Shards结构
Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解
java学习笔记
学习笔记之 O/R 映射技术的王牌Hibernate框架
Hibernate之数据检索
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服