文档章节

Hibernate 中 formula的简单应用

mr桀骜不驯
 mr桀骜不驯
发布于 2013/03/09 20:54
字数 468
阅读 1322
收藏 5

在一个项目的某一个查询场景中,TEACHER表是主表,STUDENT表是TEACHER的子表,两者是以一对多的方式关联。业务逻辑需要查询多条TEACHER表的数据,并且在查询出每条A表数据的同时还需要将对应STUDENT表的行数取出来。我们当然可以利用Hibernate先将每条TEACHER数据load进来以后再以TEACHER.getStudents().size()这种方式取得对应的行数,但是代码会显得很繁琐并且增加了许多需要执行的SQL语句,有没有什么替代的方法呢?

 

我们可以使用Hiberante的formula。

 

为了解决前面提到的问题,我们只需要在TEACHER 的orm配置文件里加上这样一个property,定义其formula属性如下:

  1. ...  
    <property name="rowCount" formula="(select count(*) from STUDENT a where a.ID=teacherId)"   
    type="java.lang.String" />  
    ...
     

 

 通过这种方式我们就可以在取得每一个TEACHER持久化对象的时候就方便的得到了需要的统计信息,可以大幅度的提高我们的开发效率。注意这里不单单可以用来统计记数,还可以用于sum,avg等其他统计。

 

在Hibernate 3.x之前,formula属性只能够出现在property元素中。现在仍然可以这样做,但是Hibernate 3.x提供了一个formula属性或元素(两者在formula的用法方面实质上是等效的),可以在许多元素中使用,包括discriminator、 many-to-one、one-to-one、element、many-to-many、map-key、map-key-many-to-many 和property。这样就大大提高了对象关系映射的灵活性,从而支持对复杂数据 模型的更为细粒度的解释。

 

从3.x开始,Hibernate 使用formula、filter、subselect等提高映射灵活性,提供细粒度的解释特性,从而将其推进到一个新的级别。

本文转载自:http://longdick.iteye.com/blog/184600

mr桀骜不驯
粉丝 7
博文 12
码字总数 4596
作品 0
广州
程序员
私信 提问
关于Hibernate 中formula简介

今天做项目第一次用到Hibernate的formula,解决了困扰了很长时间的一个问题 以前做各种层级树的时候,查询结点是不是叶子结点,如果是叶子节点就直接展开图标,当时想到了几种解决方案但是总...

lvzjane
2013/06/06
1K
0
Hibernate 中中的formula属性

Property元素中的formula允许对象属性包含导出值,比如sum、average、max等的结果。如: <property name="averagePrice" formula="(select avg(pc.price) from PriceCatalogue pc, SelectedI......

街头浪子
2016/01/18
150
0
Hibernate 中中的formula属性的使用

Hibernate 中 formula属性的好用处在于 无需在数据库有真实的列 只需要写出sql 就可以创建一个虚拟的列 然后在 Dao层的查询中使用 ,比如在表 MConfirmation 中有两列 ConfirmationCost 和 ...

业余编程人士
2014/02/28
1K
0
hibernate 常识

应用程序与hibernate是通过持久化类通信: hibernate需要访问的属性一定要在*.hbm.xml中定义,不一定在持久化类中定义,但持久化类一定要提供该属性的set和get方法。 如果持久化类里有一个属...

hgqxjj
2017/12/29
0
0
Hibernate 映射基础 单个持久类与单个数据库表映射

一、单个持久化类与单个数据库表映射基础 1、在Hibernate应用中,持久化类的访问方法有两个调用者:(默认的持久化类要有默认的构造函数、setXX、getXXX方法) ①、Java应用程序:调用User对象...

Winnie007
2015/08/18
59
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部