0 0

关于hibernate查询的和开发中的一些疑问10

我在开发的过程中遇到一些疑问,希望各大牛帮我解答下。

环境介绍:  

假设现在有2个表

category(文章分类)
id 主键
name 文章分类中文名
desc 描述

 

 

 

 

 

 

 

article(文章列表)
id 主键
categoryid 分类id
title 文章标题
content 内容

 

因为用的是hibernate, 上面两个表对应的PO分别是CategoryPO , ArticlePO.没有配置外键映射.

 

1. 现在要求根据文章分类查询个分类的前10条record。

我想到的办法(1) .在service 层查询出所有categoryPO.name,然后再根据categoryPO.name去Article 里查询每个categoryPO.name的各10条。这样我有多少个category.name就返回多少个list,然后遍历每个list就行了。但是这样会造成多条sql语句查询,事务是用spring 配置的在service层的自动事务管理,

                     (2).只用一条HQL 查出一个list结果类似下面

id category.name aritcle.title
1 分类1 标题1
2 分类1 标题2
..... 这里重复。每个分类有10条
11 分类2 标题11
12 分类2 标题12

 但是这句HQL不会写。然后前台在遍历这个list 。每次将遍历的category.name用临时变量保存,当遇到category.name不同是当作下一个category直接重复生成1个DIV显示新的category.

                        (3)在(2)的基础上不left join categoryPO,

id article.categoryid aritcle.title
1 1 标题1
2 1 标题2
..... 这里重复。每个分类有10条
11 2 标题11
12 2 标题12

然后再在java里用for循环把categoryPO set到articlePO里,不知道java的效率高还是数据库的效率高。

 

注:categoryPO我是全部已经缓存在ehcache里的,并且设置为永远不过期。

 

2. 就是有一种情况,我只需要PO的某些字段例如上面的AritclePO 有很多属性,但是某些时候我可能只需要部分例如:title,id...等。我人比较懒不想写select a.title,a.id from AritlcePO a,等语句,因为有时候虽然不是全部字段,但是字段也挺多;我能不能只写from AritclePO ,然后查询的时候,只根据我要的字段生成SQL,而不是默认的查询全部字段。我感觉这个有点类似延迟加载。能实现吗?

 

3. 我如果把对象放在缓存里(这里的缓存是指ehcache),并且设置永远不过期,这和直接在类里加载到内存有什么区别,比如:我用的是tomcat,那如果我把对象直接放到application里又有什么区别。

 

期望大牛们为我解答,也欢迎大家讨论一下,如果有表达不清晰的地方可以尽管问。谢谢...

2013年7月31日 11:29

1个答案 按时间排序 按投票排序

0 0

1.from CategoryPO c where (select count(id) from CategoryPO c1 where c1.name = c.name and c.id<c1.id)<10 order by c.id

2.<property lazy='true'/> 还需要字节码增强!

2013年8月02日 14:21

相关推荐

    Springboot开发+Springmvc+Hibernate 在线招标系统源代码.zip

    Springboot+Springmvc+Hibernate 在线招标系统源代码.zip 如有部署疑问可私信联系 . └── 源代码 ├── OnlineBiddingSystem.iml ├── pom.xml └── src ├── main │ ├── java │ │ └── ...

    ssh框架整合step by step (springMVC + spring 5.0.4 + hibernate 5.0.12)

    # 做了BaseDao的简单封装, 并做了基于BaseDao的增/删/改/查/分页查询等操作的示例(并在示例中列出了访问路径); # 工程所需jar包、sql脚本放在了百度网盘(资源内有下载地址), jar包下载后拷贝到\WebContent\WEB-INF\...

    采用struts+spring+hibernate架构电信业务系统

    本系统采用struts+spring+hibernate架构,重在讲述三者结合在一起的应用开发,所有源程序都 有详细的注释,供入门者学生参考,未经作者允许不得用于商业用途,只能用于教学或个人学习。 程序只是整个系统中的...

    java-ssh开发的权限管理系统-适合开发中小系统。

    3、系统已经把一些hibernate dao操作、缓存、快速日志等组件化,打包到类库中。 4、集成了springsecurity3来实现安全管理,支持功能按钮的权限分配,满足大多数要求。 5、后续会继续发布新的版本,为大家提供更好的...

    中国移动业务管理系统(struts+spring+hibernate)源码

    本系统采用struts+spring+hibernate架构,重在讲述三者结合在一起的应用开发,所有源程序都有详细的注释,供入门者学生参考,未经作者允许不得用于商业用途,只能用于教学或个人学习。 程序只是整个系统中的一个...

    基于SSM(spring+springMVC+MyBatis)开发的仓库管理系统

    (写在前面的话,评论中说的图片显示问题解决了,原因是文件被拦截了,感谢帮忙解决问题的同学!...供应商管理模块:为管理员提供实现对供应商信息的管理维,包括对供应商的查询、添加、修改和删除等操作。

    SSM(spring+springMVC+MyBatis)技术开发的仓库管理系统源码.zip

    供应商管理模块:为管理员提供实现对供应商信息的管理维,包括对供应商的查询、添加、修改和删除等操作。 经销商管理模块:为管理员提供实现对经销商信息的管理维,包括对供应商的查询、添加、修改和删除等操作。 ...

    OA办公系统

    本项目实现了自定义分页架构的封装,自定义后台验证框架,自定义权限验证,自封装hibernate的dao基类,使用简单方便,大大减少了开发中的繁琐任务和冗余代码。由于时间关系,可能项目中有很多功能没有开发完成,大家...

    分享一套java基于SSM(spring+springMVC+MyBatis)开发的仓库管理系统

    供应商管理模块:为管理员提供实现对供应商信息的管理维,包括对供应商的查询、添加、修改和删除等操作。 经销商管理模块:为管理员提供实现对经销商信息的管理维,包括对供应商的查询、添加、修改和删除等操作。 ...

    chinamobile项目

    本系统采用struts+spring+hibernate架构,重在讲述三者结合在一起的应用开发,所有源程序都 有详细的注释,供入门者学生参考,未经作者允许不得用于商业用途,只能用于教学或个人学习。 程序只是整个系统中的一个...

    WMS仓库管理系统SSM.zip

    供应商管理模块:为管理员提供实现对供应商信息的管理维,包括对供应商的查询、添加、修改和删除等操作。 经销商管理模块:为管理员提供实现对经销商信息的管理维,包括对供应商的查询、添加、修改和删除等操作。 ...

    软件专业调研报告.docx

    近年来,我国软件和信息技术服务业发展迅速,但产业规模和实力还不能满足国民经济和社会发展需要,依然存在一些制约产业发展的突出问题,具体表现在:缺乏具有全球领先地位的大企业,产业整体上处于价值链的中低端;...

    spring完全学习实例(一)

    主要包括Spring的IoC、AOP(注释注入、Schema注入、与AspectJ的集成、有接口和无接口的实现的界面编程)、中间数据访问层(编程事事务管理、声明式事务管理、与Hibernate的集成、与JDO的集成、与JTA的集成、纯Spring...

    j2ee通用权限管理系统

    包含源代码,发布文档和系统说明文档 开发环境:1、struts2+sprng+hibernate+ajax+html 2、 将所有sql写在了配置文件来代替dao层,简化了开发,增加了可维护性。 如有疑问请联系本人,本人邮箱:songdianhai@163....

    北大青鸟学士后第三单元OA办公自动化管理系统

    hibernate.cfg.xml 是hibernate配置信息和Spring的配置分开配置再通过classpath 导入给applicationContext.xml(这两个文件本身已经没使用到了) 项目现在hibernate配置信息都写在了applicationContext-common.xml中 ...

    Bioinfo-C:有效地开发C语言中的生物信息学应用程序-开源

    Bioinfo-C是基于对象的免费集成(LGPL)C代码,可有效开发生物信息学... 计划扩展到应用程序开发人员和生物学家。 2017年4月,主要开发人员去世了。 目前,BIOINFO-C处于Hibernate状态。 如有疑问,欢迎您与Wolfd联系。

Global site tag (gtag.js) - Google Analytics