`
jackingyu
  • 浏览: 7850 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

面试:hibernate查询的写法

阅读更多
tableM和tableA是一对多关系,大概是1:10的比例
tableM和tableB是一对多关系,大概是1:10的比例
tableM和tableC是一对多关系,大概是1:10的比例


按条件从tableM查询大概1000条数据并且需要tableA,tableB,tableC的数据参与运算。

hibernate lazy:
共需执行1+1000+1000+1000=3001句sql。
共返回1000+1000*10+100*1000*10+1000*10=31000行数据

hibernate join:
共需执行1句sql。
共返回1000*10*10*10=1000000行数据

不管是lazy还是join效率都很低。我的写法是这样的:
共需执行3句sql。
共返回1000*10+1000*10+1000*10=30000行数据
Criteria oCriteria = null;

oCriteria = HCS_SC.createCriteria(tableM.class);
oCriteria = oCriteria.add(Restrictions.ge("orderNum", aaa));
oCriteria = oCriteria.add(Restrictions.le("orderNum", bbb));
oCriteria = oCriteria.setFetchMode("tableA", FetchMode.JOIN);
oCriteria.list();

oCriteria = HCS_SC.createCriteria(tableM.class);
oCriteria = oCriteria.add(Restrictions.ge("orderNum", aaa));
oCriteria = oCriteria.add(Restrictions.le("orderNum", bbb));
oCriteria = oCriteria.setFetchMode("tableB", FetchMode.JOIN);
oCriteria.list();

oCriteria = HCS_SC.createCriteria(tableM.class);
oCriteria = oCriteria.add(Restrictions.ge("orderNum", aaa));
oCriteria = oCriteria.add(Restrictions.le("orderNum", bbb));
oCriteria = oCriteria.setFetchMode("tableC", FetchMode.JOIN);
return oCriteria.list();
分享到:
评论

相关推荐

    2021最新Java程序员面试题

    - 模糊查询like语句写法:通配符为%(百分号)。 - Dao接口的工作原理:通过动态代理生成接口实现类,代理对象调用方法时,会自动映射SQL语句和接口方法参数。 - 分页原理:通过拦截器来实现分页查询。 - 结果...

    1000道互联网Java架构师面试题

    Java 架构师面试题之 MyBatis 篇 作为一名经验丰富的 Java 架构师,我将带领大家深入探索 MyBatis 面试题的世界。MyBatis 是一个流行的持久层框架,它提供了一个简单的方式来访问数据库。下面,我们将从多个角度来...

    1000道 互联网大厂Java工程师面试题(1)(1)(1).pdf

    7. **模糊查询 like 语句的写法**:使用 #{} 时,可以在 SQL 中使用 '%value%' 来实现模糊查询。 8. **Dao 接口的工作原理**:在 MyBatis 中,Dao 接口通常用于定义 SQL 操作的抽象方法,其背后使用动态代理机制来...

    程序员面试秘籍.docx

    比如,模糊查询like语句的写法,以及分页查询的实现,MyBatis的分页插件原理等。 4. **ORM框架**:MyBatis的映射方式包括Map映射、注解映射和XML映射,面试中可能会要求解释它们是如何将SQL结果封装为目标对象并...

    面试问题整理面试问题整理

    * 四个线程的写法:Thread、Runnable、Callable、Executor。 * JDBC 连接数据库:使用 DriverManager 获取连接,使用 Statement 执行 SQL 语句,使用 ResultSet 获取结果集。 * SOCKET 编程:使用 ServerSocket 创建...

    面试题集(Java、UML、XML、SQL、Web、EJB&Spring、数据结构&算法、C++、Weblogic).pdf

    JDBC用于执行SQL语句,而Hibernate简化了数据库操作,提供了对象-关系映射功能,面试中可能涉及连接池、事务管理、实体映射和HQL查询。 "Web"部分可能涵盖Servlet、JSP、HTTP协议、MVC模式等内容,这些都是构建Web...

    MyBatis的27道面试题

    MyBatis模糊查询like语句的写法相对简单,只需要在占位符中加入%即可。 在DAO接口的工作原理方面,MyBatis通过动态代理生成接口的代理实例。Dao接口里方法参数不同时,方法可以重载,MyBatis通过动态代理和反射技术...

    最新各大公司企业真实面试题-新锐公司面试题

    - **与Oracle交互:** 可以通过配置文件指定数据库连接参数,并使用JDBC或ORM框架(如Hibernate)与Oracle数据库进行交互。 ### 9. XML 文件解析与处理 **标题与描述中的关键词:** `XML` #### 详解: - **XML ...

    1000道 互联网Java工程师面试题 485页_PDF密码解除.pdf

    8. **模糊查询的写法**: - 可以使用 ${ } 中进行字符串拼接。 9. **Dao接口的工作原理**: - MyBatis通过动态代理来创建Mapper接口的代理对象。 10. **MyBatis分页**: - 可以使用RowBounds或分页插件,如...

    java和.net面试题汇总

    23. Short变量加法的正确写法:`short t1 = 1; t1 += 1;` 24. Object类包含toString、hashCode、equals等方法。 25. `String s = new String("xyz")`创建了两个对象,一个在常量池,一个在堆。 26. ArrayList与...

    java题库java题库java题库

    8. MyBatis模糊查询的SQL写法。 9. MyBatis中的Dao接口是如何工作的,以及其参数不同的方法是否能重载。 10. MyBatis的分页实现以及分页插件的工作原理。 11. SQL执行结果封装成对象的映射方式。 12. 如何执行批量...

Global site tag (gtag.js) - Google Analytics