hibernate nativeSql应用
2015-11-30 23:48
309 查看
HQL尽管容易使用,但是在一些复杂的数据操作上功能有限。特别是在实现复杂的报表统计与计算,以及多表连接查询上往往无能为力,这时可以使用SQL(Native SQL)实现HQL无法完成的任务。
使用Naive SQL可以返回object结果,也可以返回持久对象类型结果,根据需要决定不同的写法,得到不同的结果。
(1)、利用Hibernate提供的SQLQuery对象执行。即可以通过Session对象的createSQLQuery()方法获取。
(2)、通过addScalar()方法设置返回数据的类型可以减少ResultSetMetaData对象的使用而提高运行效率。
获取SQL查询的持久对象有三种方式实现:
方式1:Hibernate不仅能把查询到的记录封装为包含多个Object数组的List对象返回,还可以把每一条查询到的记录封装成持久对象后返回包含这些对象的List对象。
方式2:使用大括号指定查询的字段,然后通过SQLQuery对象对象的addEntity()方法关联SQL中的别名和持久化类确定要返回的List对象中的每个元素类型。
方式3:同时使用SQLQuery对象的addScalar()方法和Transformers对象的aliasToBean()方法关联数据库的表与持久化类确定返回记录的各个字段与持久化类属性的对象对应关系。
使用Naive SQL可以返回object结果,也可以返回持久对象类型结果,根据需要决定不同的写法,得到不同的结果。
(1)、利用Hibernate提供的SQLQuery对象执行。即可以通过Session对象的createSQLQuery()方法获取。
(2)、通过addScalar()方法设置返回数据的类型可以减少ResultSetMetaData对象的使用而提高运行效率。
获取SQL查询的持久对象有三种方式实现:
方式1:Hibernate不仅能把查询到的记录封装为包含多个Object数组的List对象返回,还可以把每一条查询到的记录封装成持久对象后返回包含这些对象的List对象。
方式2:使用大括号指定查询的字段,然后通过SQLQuery对象对象的addEntity()方法关联SQL中的别名和持久化类确定要返回的List对象中的每个元素类型。
方式3:同时使用SQLQuery对象的addScalar()方法和Transformers对象的aliasToBean()方法关联数据库的表与持久化类确定返回记录的各个字段与持久化类属性的对象对应关系。
相关文章推荐
- LinQ To SQL 添加、删除、更新C#
- Oracle排名函数(Rank)实例详解
- keepalived+redis 高可用redis主从解决方案
- Oracle解析流程
- Redis 缓存 + Spring 的集成示例
- Oracle BBED模拟坏块&验证坏块
- oracle递归遍历查询
- powerdesign使用心得
- powerdesign使用心得
- mybatis 取传进来的参数 mybatis #{ } ${ }区别是啥?
- oracle11g如何将dataguard的主库数据恢复到oracle单机实例?
- mysql 数据库优化 慢查询日志的开启
- Mysql查询语句使用select.. for update导致的数据库死锁分析
- mysql中数据类型
- 工程中导入sqlite -sqlite 基础教程(1)
- sqlite 句柄-sqlite 基础教程(3)
- java实现MongoDB查询一
- oracle 10046使用学习
- MySQL重构查询的方式
- 数据库行转列和列转行小例子