java工程优化——ORM框架查询优化原理

众所周知,当下的流行的企业级架构中,ORM一直是最基础的部分,在架构设计的底层,对逻辑层提供面向对象的操作支持,而事实总是和我们预想的有所偏差,ORM在提供了较好的操作体验时,也流失了一部分原生SQL的灵活性与高效性,当然,这个问题不影响我们使用ORM框架,但是却阻碍了我们网站流量的提升,尤其是在企业级的多关系复杂查询方面,性能瓶颈是不得不提的部分!

针对此问题,大多数的ORM框架提供一个折中的解决方案,就是在查询语句中,构造一个对象,可以是一个Entity,也可以是Map等,这样的方案,很大程度上解决了级联查询的问题,今天,我们一起来揭开这层面纱,看看这里的优化,是如何做到的!

现象:

先看看我们的实验中用到的几个实体

大家可以看到中间的学生实体,和其他的实体关联太多,如果我们使用一般的查询语句会变得非常缓慢,我们测试在查询10条记录,不开启懒加载的前提下,10分钟这些数据都不能加载,大家看看日志文件,发的sql语句:

原因

查询语句:

From Student  where isDlete=0

日志文件:

这只是一小部分,我们做的统计是,发出了241条查询语句,这样的结果是客户不能容忍的,通过研究,我们发现直接发 from 虽然可以返回对象,但是严重拖慢查询效率,在from前加select语句,就会好很多,因为加上select后,就会组合成join语句,最后只发一天sql语句,对效率的提升是明显的!

总结:

一个问题的解决方法,有时候会非常简单,而又对自己当初的设计懊悔不已,其实这都是一个过程,一个财富,我们遇到的每一个问题,都是为了让我们在以后的设计中有更好的想法,当然更重要的一点就是那别人撞的头破血流的经验作为自己的经验,提升自己的能力,这也是企业喜欢见到的!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 14:52:34

java工程优化——ORM框架查询优化原理的相关文章

Java急速WEB+ORM框架(JFinal)

JFinal框架是基于java语言的急速WEB+ORM框架,其设计核心是开发迅速,代码量少,学习简单,功能强大,轻量级,已扩展,Restful.在拥有java语言所有优势的同时再拥有python,php等动态语言的开发效率,让你有足够多的时间去做其他的事. JFinal有如下主要特点: MVC架构,设计精巧,使用简单 遵循COC原则,零配置,无xml 独创Db + Record模式,灵活便利 ActiveRecord支持,使数据库开发极致快速 自动加载修改后的java文件,开发过程中无需重启we

java工程优化——多线程下的单例模式

在最初学习设计模式时,我为绝佳的设计思想激动不已,在以后的工程中,多次融合设计模式,而在当下的设计中,我们已经觉察出了当初设计模式的高瞻远瞩,但是也有一些不足,需要我们去改进,有人说过,世界上没有绝对的事,当然,再简单的事情,环境变了,也会发生变化,今天和大家一起分享在多线程下单例模式的优化. 1,传统 首先,我们回顾下传统的单例(懒汉式)是如何工作的: public class SingletonClass{ private static SingletonClass instance=nul

Mego(2) - NET主流ORM框架分析

接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM框架实现 EF功能最强的ORM EF与EFCore缺陷 ORM框架工作原理 所有的ORM框架的工作原理都离不开下面这张图,只是每个框架的实现程度不同但是最终的目的是相同的. 如果是一个ORM框架那么一定会有上图中蓝色部分的这几个元素,无论是增删改查对于ORM一定是以对象为起点,使用对象构造出LINQ

Hibernate框架ORM的实现原理

1. 什么是ORM ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作.因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作. 2.什么是Hibernate 对于Hibernate的称呼有很多,比如工具.技术.框架以及解决方案等,这些都可以,重要的是大家要知道它的作用.在这里我习惯性称它为框架,它是一种能实现ORM的框架.能实

好程序员Java干货分享Spring框架之IOC原理

好程序员Java干货分享Spring框架之IOC原理,前言:Spring框架是我们进行企业级开发的最常用框架,本章我们将了解Spring框架,并学习Spring的IOC特性以及IOC的实现原理:注解和反射. Spring框架简介 Spring是一种轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架,能够为企业级开发提供一站式服务. Spring的优点有 1.方便解耦,简化开发 通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度

基于java注解实现自己的orm框架

ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关系. 现在常见的ORM框架比如Hibernate和mybatis,都是采用了ORM的方式,基本原则就是类-表(Table).属性-列(Column)这样的对应,所以一个对象就能表示数据表中的一行数据啦. 本文转自http://m.blog.csdn.net/woshisangsang/article/details

自己写ORM框架 DBUtils_DG Java(C#的写在链接里)

ORM框架想必大家都比较熟知了,即对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”. 当你开发一个应用程序的时候(不使用O/R MAPPING),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等. 现在流行的ORM框架有: JAVA系列:APACHE OJB,C

Weed3 for java 新的微型ORM框架

Weed3,微型ORM框架(支持:java sql,xml sql,annotation sql:存储过程:事务:缓存:监听:等...) 05年时开发了第一代: 08年时开发了第二代,那时候进入互联网公司,对性能有了全新的认识: 14年时开发了第三代.因为不喜欢滥用反射,不喜欢有很多配置,所以一直在执着的没放弃. 前两代,都是在.net开发的:第三代,重点放在了java上.应该算是个功能全面且最小的ORM框架,无其它依赖,仅0.1mb.对外的接口也不多,主要由DbContext上的四个接口发起所

SSH三大框架的原理

Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息3.通过config.buildSessionFactory();//创建SessionFactory4.sessionFactory.openSession();//打