`
niatwangcong
  • 浏览: 86460 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Hibernate Gossip: 建立SQL查詢

阅读更多
 
Hibernate Gossip: 建立SQL查詢
Hibernate提供了對SQL的支援,您可以指定您所要建立的SQL,並將實體類別與資料表格關聯,舉個例子來說,如果您打算使用像以下的SQL語句:<wbr style="LINE-HEIGHT: 1.3em">
SELECT * FROM user WHERE age > 20


則您可以如下建立SQL查詢:
// SQL,並指定別名為user
String sql = "select {user.*} from User user where user.age > 20";Session session = sessionFactory.openSession();
// 建立 SQLQuerySQLQuery sqlQuery = session.createSQLQuery(sql);
// 將別名user與實體類User關聯在一起sqlQuery.addEntity("user", User.class);Iterator iterator = sqlQuery.list().iterator();while(iterator.hasNext()) {    User user = (User) iterator.next();    System.out.println(user.getAge() + "\t" + user.getName());}        session.close();


addEntity()是將實體類別與別名連結在一起的方法,大括號指定要查詢的資料,Hibernate根據所給定的SQL自動生成以下的句子:
select user.id as id0_, user.name as name0_0_, user.age as age0_0_ from User user where user.age > 20


返回的結果則由Hibernate進行封裝為所指定別名關聯之實體類,如此您可以得到使用SQL的彈性,但無需處理繁瑣的ResultSet。

您也可以將SQL語句定義在映射文件中,例如:
  • User.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="onlyfun.caterpillar.User" table="user">
        ....
    </class>

    <sql-query name="onlyfun.caterpillar.QueryUser">        <![CDATA[            select {user.*} from User user where user.age > 20          ]]>        <return alias="user" class="onlyfun.caterpillar.User"/>    </sql-query>
</hibernate-mapping>

定義的時候,使用<return>標籤指定別名與實體類之關聯,配合映射文件中的定義,您可以如下運行Hibernate:
Session session = sessionFactory.openSession();Query query = session.getNamedQuery("onlyfun.caterpillar.QueryUser");        Iterator iterator = query.list().iterator();while(iterator.hasNext()) {    User user = (User) iterator.next();    System.out.println(user.getAge() + "\t" + user.getName());}        session.close();


也可以設定查詢參數,例如:
....<sql-query name="onlyfun.caterpillar.QueryUser"><![CDATA[select {user.*} from User user where user.age > :age]]><return alias="user" class="onlyfun.caterpillar.User"/></sql-query>....


使用Hibernate查詢時如下:
Session session = sessionFactory.openSession();Query query = session.getNamedQuery("onlyfun.caterpillar.QueryUser");query.setInteger("age", 20);Iterator iterator = query.list().iterator();while(iterator.hasNext()) {    User user = (User) iterator.next();    System.out.println(user.getAge() + "\t" + user.getName());}        session.close();</wbr>
分享到:
评论
1 楼 cyf-123456 2009-05-19  
有点乱

相关推荐

    开源框架:Hibernate Gossip v1.04

    Hibernate查询语言(HQL)类似于SQL,但面向对象,可以更方便地操作实体类。Criteria API则提供了一种类型安全的查询方式,允许在运行时动态构建查询,提高了代码的灵活性。 5. **缓存机制** Hibernate支持二级...

    Java经典问题算法大全

    2.Algorithm Gossip: 费式数列. 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官(一) 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八...

    经典算法大全.pdf

    巴斯卡三角形 6 4.Algorithm Gossip: 三色棋 7 5.Algorithm Gossip: 老鼠走迷官(一) 9 6.Algorithm Gossip: 老鼠走迷官(二) 11 7.Algorithm Gossip: 骑士走棋盘 13 8.Algorithm Gossip: 八皇后 ...

    经典算法大全

    2.Algorithm Gossip: 费式数列 5 3. 巴斯卡三角形 6 4.Algorithm Gossip: 三色棋 7 5.Algorithm Gossip: 老鼠走迷官(一) 9 6.Algorithm Gossip: 老鼠走迷官(二) 11 7.Algorithm Gossip: 骑士走棋盘 ...

    R-gossip:分布式负载均衡效率优化算法.pdf

    通过建立一个期望收敛模型,在对称假设条件下,算法能够加快收敛速度。 移位寄存器在R-gossip算法中起到加速收敛的作用。通过实验验证,R-gossip算法相较于传统gossip算法,其效率大约提高了30%。 分布式系统关键...

    Algorithm.rar_Algorithm Gossip_gossip_gossip algorithm_gossip算法

    2.Algorithm Gossip: 费式数列 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八皇 9....

    camel-gossip:骆驼八卦

    草稿用法: from("gossip://&lt;bound&gt;:&lt;port&gt;/?peers=&lt;listOfPeers&gt;&routeIds=&lt;listOfRouteIdsToControl&gt;").to("controlbus:route");listOfRouteIdsToControl在此节点被提升/降级时启动/停止。 当您在需要故障转移...

    gossip:Gossip协议的Go实现

    Gossip协议的Go实现。 概述 该软件包提供了最终一致的内存中数据存储的实现。 数据存储值使用推挽式八卦协议进行交换。 // Create a gossiper g := NewGossiper("&lt;ip&gt;:&lt;port&gt;", "&lt;unique&gt;", "&lt;peer&gt;") // Add ...

    R-gossip:分布式负载均衡效率优化算法

    该算法通过在每个集群代理节点上设置多个且数量相同的移位寄存器(shift register),在对称假设下建立期望收敛模型,加快gossip算法的收敛速度,提高分布式系统的负载均衡效率。实验结果表明,其效率较传统gossip...

    良葛格Gossip_struts_spring_hibernate

    3. **Hibernate ORM**:Hibernate是一个对象关系映射(Object-Relational Mapping,ORM)工具,简化了Java应用与数据库之间的交互。它允许开发者用面向对象的方式来操作数据库,而无需编写大量SQL语句。 4. **Java ...

    99乘法表java源码-gossip:一个javalisp解析器

    gossip - yet another lisp interpreter gossip是一个lisp解释器, 语法借鉴了scheme以及common lisp, 此项目的主要目的是学习。 安装 下载源码 打包: mvn package 运行方式: java -jar your_gossip_home/gossip-1.0-...

    nodejs_gossip:nodejs八卦协议实现

    nodejs_八卦 nodejs八卦协议实现 nodejs 八卦.js 连接到 localhost:8080 在 chrome 中查看网络状态 控制台命令: 重启重置对等体颜色 css_color 建立网络的节点 断网示例 重建网络

    CSC-582-3-W15-GOSSIP:分布式八卦算法

    分布式八卦算法,通常被称为Gossip协议,是一种在分布式系统中高效传播和同步信息的方法。它在许多场景下被广泛使用,比如在大规模的数据库复制、负载均衡、故障检测以及网络中的消息传递等。这种算法的设计灵感来源...

    gossip:一个在线用户界面,可以有效地创作和交付令人敬畏的和内容丰富的演示文稿。 :rocket:

    因此,我将软件命名为Gossip来构建一个工具,该工具使用户可以更有效,更方便地制作和传达故事。 使您的下一个演示文稿不是演示文稿。 入门 有一个可以帮助您使用Gossip创建和交付演示文稿所需的所有技术。 还有...

    gossip:通过网络套接字发送和接收消息的基准

    通过分析这些文件,我们可以深入了解`gossip`的工作原理,比如它如何建立连接、封装和解封装消息,以及如何处理错误和网络中断。基准测试的结果可能会展示在控制台,或者被记录到文件中,以便分析和比较不同实现的...

    p2p-gossip:用于请求工件的 p2p 八卦协议

    例如,./ ./gossip -p --verbose 实例化二进制后续时间以使用get参数接收资源。 例如,./ ./gossip get cats.jpg 运行测试 运行单元测试不需要任何设置。 go test ./... 包装说明 ID ID 包提供了生成唯一的随机 ...

    基于结构化Gossip协议的网格服务发现.pdf 论文

    本文详细描述了S-Gossip算法及其协议的实现过程,并在此基础上建立了一个层次化的服务发现模型。该模型利用S-Gossip算法的特点,实现了资源和服务的有效管理和快速发现。 层次化的服务发现模型将整个网格分为多个...

    「来道题」Redis的Gossip协议:随机通信,最终一致;PING、PONG;配置纪元

    「来道题」服务端面试真题全解析 互联网大厂的资深工程师,带您开启技术成长之路~ 多年大规模在线服务实战经验,近百场校招、社招面试经历,告诉您最...Redis的Gossip协议:随机通信,最终一致;PING、PONG;配置纪元

Global site tag (gtag.js) - Google Analytics