前言
转载请标明出处:http://blog.csdn.net/wlwlwlwl015/article/details/43022193,上一篇blog记录了hibernate抓取策略的相关用法(http://blog.csdn.net/wlwlwlwl015/article/details/42705585),它主要是在对象导航时为我们进行HQL方面的优化。本篇blog将介绍一些通用性的优化方式,即在hibernate中使用视图和存储过程。在数据量比较大时(百万级),使用hibernate时不再推荐使用HQL,而是使用原生的SQL语句,而视图、索引、存储过程等数据库对象也都是基于底层数据库和原生的SQL派生出的优化方案,废话不多说,下面就开始通过代码介绍一下如何在hibernate中调用view、proc以及需要注意的一些关键点。
通过hibernate查询视图
数据库视图(View)的概念和优点等等就不说了,这个书上和网上都讲了很多,下面直接通过例子来看一下如何在hibernate中查询视图,依旧是上一篇中的例子,一对多的典型示例:班级→学生,先看一下数据表:
下面写一个简单的视图,例如需要查询以下几个字段:stu_id、sname、sex、birthday、cname,首先根据需求创建视图,
DELIMITER $$
USE `wltestdb`$$
DROP VIEW IF EXISTS `v_stuinfo`$$
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_stuinfo` AS (
SELECT
`t1`.`stu_id` AS `stu_id`,
`t1`.`name` AS `sname`,
`t1`.`sex` AS `sex`,
`t1`.`birthday` AS `birthday`,
`t2`.`name` AS `cname`
FROM (`t_student` `t1`
JOIN `t_classroom` `t2`
ON ((`t1`.`cid` = `t2`.`cla_id`))))$$
DELIMITER ;
通过查询语句select * from v_stuinfo即可查询视图,