HQL:完全面向对象查询

SQL的执行顺序:

1.From

2.Where 过滤基础数据

where与having的区别:1.顺序不同 2.where过滤基础数据 3. 过滤聚合函数

3.Group by

4.Select

5.Having

6.Order by

 

使用Hibernate查询时,使用hibernate的一个接口query

Hql是面向对象的查询语句,所以跟的是类名

Query query = session.createQuery(“select id,name,stu.cla.name from Student”);

List<Object[]>  list  = query.list();

For(Object[]  obj :  list){

........打印等

Obj[0] = id;  Obj[1] = name;  Obj[2] = stu.cla.name ;

}

查询后的数据存在一个Object数组里面

---------------------------------------------------------------------------------------------------------------------------------

list得到查询

List<List> list = = session.createQuery(“select new List(id,name,stu.cla.name) from Student”).list();

For(List list1 : list){

System.out.print(list1.get(0) + list1.get(1));

}

---------------------------------------------------------------------------------------------------------------------------------

Java对象查询 需要一个带参数的构造函数

创建一个中间类,包括所需要的属性等  new 对象:包名.类名

List<MyData> list = session.createQuery(“select new com.lovo.my.MyData(id,name,classname) from MyData”).list();

For(MyData data: list){

System.out.print(data.id + “  ”  + data.name + “  ”  + data.classname);

}

---------------------------------------------------------------------------------------------------------------------------------

Map得到查询

List<Map> list = = session.createQuery(“select new map(name as stuname,stu.cla.name as claname) from Student”).list();

For(Map map : list){

System.out.print(map.get(“stuname”) +” ” + map.get(“classname”));

}

---------------------------------------------------------------------------------------------------------------------------------

知道查询的结构是一个对象,获得一个结果集

Student stu = (Student)session.createQuery(“from Student where id=2”).uniqueResult();

(懒加载)有关联时:      当清除session后,会报懒加载错误

System.out.print(stu.getName()+” ” + stu.getCla().getName());

开启懒加载:1.配置中设置 lazy=”false” 2.在session关闭前,初始化 hibernate.initialize()

内连接:匹配才连接,不匹配不连接,会导致数据的丢失

Dto:数据持久化

单例模式:例如:private HibernateUtil(){}  不能new

Hibernate占位符:1.id= :id(命名参数) 2.id=?

 

Group by 投影有限制:1.group by之后的能投影 2.聚合函数

Round(需要取整的函数,保留几位小数)

IfNull(判断的数据,0);---如果数据为空,则用0代替

HQL中只能在Where /  select 中使用子查询

 

用本地SQL/HQL语句:

Select name from t_student;     Select id from t_student;

返回一列数据:用string接受    用Integer接受

session.createSQLQuery(Select * from t_student).addScalar(“name”).list();

在SQL语句中有标量,*则没有效果

session.createSQLQuery(Select * from t_student).addEnitity(Student.class).list();

把查询到的所有数据存储到Student对象中

Hibernate就是对JDBC的封装 :对数据库访问效率的降低和性能的下降(针对这个生成了缓存 ---- 内存中)   位于数据库和数据库访问层中

一级缓存:Session 缓存

Session.clear();-----清除session,缓存中的所有数据全部清除

lazy(懒加载)有懒加载:

1.需要什么数据则发送什么SQL语句

2.关闭懒加载:把所有的关联表全部用一条SQL语句连接,对象过多保存在内存中

3.关闭session时,懒加载也关闭

4.默认懒加载开启

抓取策略:

Session关闭后,立即抓取数据-----把所有的数据抓取到数据库中

From Student stu left join fetch stu,myclass where stu.id = 1;

二级缓存:用第三方jar包 sessionFactory级别

在hibernate配置下:

<!--查询缓存-->

<property name="cache.use_query_cache">true</property>

<!--开启二级缓存-->

<property name="cache.use_second_level_cache">true</property>

<!--配置echche的实现类-->

<property name="cache.region.factory_class">

org.hibernate.cache.EhCacheRegionFactory

</property>

Hibernate悲观和乐观锁:控制数据在操作时,不会被外界所破坏

悲观锁:锁表的状态 setLockMode(对象,LockMode.UPGPADE)  依赖数据库的锁表机制,t提交后才释放

乐观锁:主要采用版本的形式

配置:

1.创建类时,添加一个属性version int

2.Version必须配置在id的后面  <version name=”version” column=”version”></version>

Gson gson = new Gson();

String list = gson.toJson();

 

打成jar包:

1.file--export

2.输入jar --- jarfile

3.选择想要打的jar包  写入jar包名称 选择保存路径

Hibernate中的HQL查询与缓存机制的更多相关文章

  1. Hibernate中关于HQL查询返回List<Object>数据的结果集问题

    ---恢复内容开始--- 开发中遇到的一个小问题,使用Hibernate中的HQL查询时,使用query.list()查询出来的是一个List<Object>结果集 原来代码: publi ...

  2. 分享知识-快乐自己:Hibernate 中Criteria Query查询详解

    1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Cr ...

  3. Hibernate中的HQL语言

    一.HQL语言简介 HQL全称是Hibernate Query Language,它提供了是十分强大的功能,它是针对持久化对象,直接取得对象,而不进行update,delete和insert等操作.而 ...

  4. Hibernate-ORM:15.Hibernate中的Criteria查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲师Hibernate中的Criteria查询! 一,Criteria简介: 刚接触Hibernate ...

  5. Hibernate-ORM:13.Hibernate中的连接查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将会解释Hibernate中的连接查询(各种join) 一,目录 1.内链接 1.1显式内连接(inn ...

  6. Hibernate-ORM:08.Hibernate中的投影查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将叙述hibernate中的投影查询 一,目录: 1.解释什么是投影查询 2.返回Object单个对象 ...

  7. 关于RecyclerView中Viewholder和View的缓存机制的探究

    关于RecyclerView中Viewholder和View的缓存机制的探究 http://www.cnblogs.com/littlepanpc/p/4241575.html

  8. WCF技术剖析之八:ClientBase<T>中对ChannelFactory<T>的缓存机制

    原文:WCF技术剖析之八:ClientBase<T>中对ChannelFactory<T>的缓存机制 和传统的分布式远程调用一样,WCF的服务调用借助于服务代理(Service ...

  9. Hibernate中的条件查询完成类

    Hibernate中的条件查询有以下三个类完成: 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询条件的工具类

随机推荐

  1. Python自动化 【第十五篇】:CSS、JavaScript 和 Dom介绍

    本节内容 CSS javascript dom CSS position标签 fixed: 固定在页面的某个位置 relative + absolute: 相对定位 opacity:0.5 设置透明度 ...

  2. Xcode7中你一定要知道的炸裂调试神技

    转自:http://www.cocoachina.com/ios/20151020/13794.html Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. ...

  3. 线程+IO流

    第十八天知识点总结 线程的停止: 1.停止一个线程,一般是通过一个变量来控制. 2.如果需要停止一个处于一个等待状态的线程,那么需要配合interrupt方法来完成 守护线程(后台线程):在一个进程中 ...

  4. Python 2.7_初试连接Mysql查询数据导出到excel_20161216

    由于每天到公司都需要先执行一遍检测操作,观察数据是否导入完整,今天想到能否自动连接Mysql执行SQL并导出数据,每天到公司直接查看excel文件即可 时间紧,代码初次试验,边摸索边学习吧. xlsx ...

  5. winform版弹框操作

    公共弹框帮助类操作手册 1.说明 封装了对于winform操作的一些提示框,包括数据加载耗时的时候,提示数据正在加载,请稍后的提示窗体,动态提示给用户一些有用的信息.例如网吧里面续费提醒等. 2.操作 ...

  6. UIImagePickerController的知识点

    1.UIImagePickerController是系统提供的用来获取图片或视频的接口,使用UIImagePickerController类来获取图片的基本步骤如下: a.初始化UIImagePick ...

  7. Python全栈考试-部分试题(精选)

    Python全栈考试(一) Python全栈考试(一) 1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py ...

  8. C#多线程的异步委托/调用

    C#异步调用(Asynchronou Delegate) C#异步调用获取结果方法:主要有三种,也可以说是四种(官方说四种,电子书说三种),官方在MSDN上已经有详细的说明:链接 需要了解到获取异步执 ...

  9. go 静态web服务器

    package main import ( "net/http" ) type helloHandler struct{} func (h *helloHandler) Serve ...

  10. html中表格的制作

    <table summar="给表格添加摘要".> <captioan> 给表格添加标题 </caption> <tr> <t ...