- 浏览: 519209 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (278)
- java (41)
- 设计模式 (4)
- sql (10)
- webservice (2)
- spring (9)
- struts (6)
- struts2 (32)
- hibernate (27)
- Struts_hibernate_Spring整合 (4)
- Velocity (1)
- Servlet (9)
- JSP (6)
- javascript (19)
- jquery (10)
- ajax (4)
- html、xml (3)
- JDBC (2)
- JDK (6)
- mysql (2)
- oracle (11)
- SqlServer (1)
- DB2 (4)
- tool (7)
- linux (5)
- UML (1)
- eclipse (8)
- 执行文件 (1)
- 应用服务器 (4)
- 代码重构 (1)
- 日本語 (19)
- 交规 (1)
- office (9)
- firefox (1)
- net (1)
- 测试 (1)
- temp (6)
- 对日外包 (1)
- windows (1)
- 版本控制 (1)
- android (2)
- 项目管理 (1)
最新评论
<set><idbag><map>元素都有order-by属性,如果设置了该属性,Hibernate会利用 order by 子句进行排序
使用order-by属性,我们可以通过hbm文件执行生成的SQL如何使用order by 查询子句以返回排序后的结果集
数据库结构:
create table teamOrder (id varchar(32),teamname varchar(32)); create table studentOrder (id varchar(32),name varchar(32),description varchar(32),team_id varchar(32)); insert into teamOrder values("1","team1"); insert into studentOrder values("1","a","a","1"); insert into studentOrder values("2","b","b","1"); insert into studentOrder values("3","c","c","1");
pojo:
package Collection.Order; import java.util.Set; public class Team { private String id; private String teamname; private Set students; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTeamname() { return teamname; } public void setTeamname(String teamname) { this.teamname = teamname; } public Set getStudents() { return students; } public void setStudents(Set students) { this.students = students; } }
package Collection.Order; public class Student { private String id; private String name; private String description; private Team team; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; } }
Hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="connection.username">root</property> <property name="connection.url"> jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312&useUnicode=true </property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="myeclipse.connection.profile">mysql</property> <property name="connection.password">1234</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="hibernate.show_sql">true</property> <property name="current_session_context_class">thread</property> <property name="jdbc.batch_size">15</property> <mapping resource="Collection/Order/Student.hbm.xml" /> <mapping resource="Collection/Order/Team.hbm.xml" /> </session-factory> </hibernate-configuration>
Student.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"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="Collection.Order.Student" table="studentOrder" > <id name="id" unsaved-value="null"> <generator class="uuid.hex"></generator> </id> <property name="name" type="string" column="name"></property> <property name="description" type="string" column="description"></property> <many-to-one name="team" column="team_id" class="Collection.Order.Team" cascade="none" fetch="join"> </many-to-one> </class> </hibernate-mapping>
Team.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"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="Collection.Order.Team" table="teamOrder" > <id name="id" unsaved-value="null"> <generator class="uuid.hex"></generator> </id> <property name="teamname" type="string" column="teamname"></property> <!-- 以名称降序返回student集合 --> <set name="students" table="studentOrder" cascade="all" order-by="name desc"> <key column="team_id"></key> <one-to-many class="Collection.Order.Student"/> </set> </class> </hibernate-mapping>
测试代码:
package Collection.Order; import java.io.File; import java.util.Iterator; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class Test { public static void main(String[] args) { String filePath=System.getProperty("user.dir")+File.separator+"src/Collection/Order"+File.separator+"hibernate.cfg.xml"; File file=new File(filePath); System.out.println(filePath); SessionFactory sessionFactory=new Configuration().configure(file).buildSessionFactory(); Session session=sessionFactory.openSession(); Transaction t=session.beginTransaction(); Team team=(Team)session.createQuery("from Team t where t.teamname='team1'").uniqueResult(); Set result=team.getStudents(); for (Iterator iterator = result.iterator(); iterator.hasNext();) { Student object = (Student) iterator.next(); System.out.println(object.getName()); } t.commit(); } }
测试结果:
Hibernate: select team0_.id as id1_, team0_.teamname as teamname1_ from teamOrder team0_ where team0_.teamname='team1'
Hibernate: select students0_.team_id as team4_1_, students0_.id as id1_, students0_.id as id0_0_, students0_.name as name0_0_, students0_.description as descript3_0_0_, students0_.team_id as team4_0_0_ from studentOrder students0_ where students0_.team_id=? order by students0_.name desc
c
b
a
发表评论
文章已被作者锁定,不允许评论。
-
Hibernate 配置 说明
2011-11-29 09:05 1480Hibernate配置说明 <?xm ... -
hibernate 相关问题 (一)
2011-04-06 13:50 1465一、Hibernate缓存深入详解 看附件 ... -
Hibenrate 中 inverse="true"
2010-09-19 10:12 1059转:http://www.iteye.com/to ... -
hibernate 3.0 中 批量更新,批量删除
2010-09-09 12:51 980hibernate 2.1没有对批量更新和批量删除提供很好的支 ... -
hibernate one-to-one
2010-09-07 15:56 1426一。 1. 完全的一对一关系,即A与B两种实体,分两个表格, ... -
hibernate many-to-many
2010-09-07 15:26 882Inverse是hibernate双向关系 ... -
hibernate 集合排序 一 (内存排序)
2010-09-03 10:52 1084内存中排序 <set><map ... -
hibernate map映射
2010-09-03 10:46 1022Person.java package com.aa ... -
hibernate list映射
2010-09-03 10:41 1116Answer类为Question类一对多关联关系,即一个问题对 ... -
hibernate idbag映射
2010-09-03 10:35 1049假设Team和Student是1对多的关系,而studen ... -
hibernate set映射
2010-09-03 10:27 1796Hibernate之容器映射 Set映射 两张表对应一个 ... -
hibernate 二级缓存(三)
2010-08-31 11:00 1368过这篇文章纪录hibernate二级缓存的一些使用经历,利用几 ... -
hibernate 二级缓存(二)
2010-08-31 10:48 11401 启用 Hibernate 二级缓存 Hibe ... -
hibernate 二级缓存(一)
2010-08-31 10:29 1847一。 1 . Hibernate ... -
hibernate 事务 并发
2010-08-27 10:17 1387数据库事务与并发 ... -
hibernate 执行 本地 sql
2010-08-25 10:47 17471.为了把sql查询返回的关系数据映射为对象,需 ... -
Hibernate3的配置参数汇总
2010-08-25 10:22 7551、Hibernate JDBC属性 属 ... -
正确理解 hibernate 的 inverse many-to-many
2010-08-25 10:18 820Inverse是hibernate双向关系 ... -
Hql 语法
2010-08-19 14:40 920HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征。 ... -
hibernate检索策略(类级别检索,关联基本检索,延迟加载...)(二)
2010-08-16 22:36 1400转:http://blog.csdn.net/qking934 ...
相关推荐
综上所述,Hibernate集合映射是将Java集合类与数据库表关联的关键机制,涵盖了从一对一、一对多到多对多的各种关系映射。理解并熟练掌握这些映射方式,能够帮助开发者更好地设计和实现数据持久化层,提高代码的可...
总之,Hibernate集合映射是对象关系映射的重要组成部分,理解并熟练掌握各种映射类型、级联操作、缓存策略等,将有助于我们在实际开发中更高效、更灵活地处理数据库与Java对象之间的关系。在实践中,不断调整和优化...
3. **排序集合**:对于需要按特定顺序存储的集合,可以使用排序集合(Sorted Collection)。 4. **双向关联**:在实体类之间建立双向引用关系,确保数据的一致性和完整性。 #### 七、关联映射 关联映射是对象关系...
### Hibernate集合映射基础 1. **集合类型**:Hibernate支持多种集合类型映射,如Set、List、ArrayList、LinkedList、Map等。Set是最常见的集合映射类型,它不允许重复元素,与数据库中的唯一约束相对应。 2. **...
在Hibernate中,集合映射是指将数据库中的表与Java集合对象(如List、Set等)进行关联,方便对一组相关数据进行操作。 "bag"是Hibernate中的一种集合类型,表示无序的、可重复的对象集合。在数据库层面,这通常对应...
在Java的持久化框架Hibernate中,集合映射是将数据库中的表与Java对象的集合属性关联的过程。List集合映射是其中常见的一种方式,它允许我们将数据库中的一组相关记录映射到Java对象的List列表中。这种映射机制使得...
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...
6. **HQL(Hibernate Query Language)**:类似于SQL,但专为ORM设计,HQL允许开发者以面向对象的方式执行数据库查询,支持复杂的查询操作,如关联查询、分组、排序等。 7. **事务管理**:在数据库操作中,事务的...
Hibernate是一款强大的Java持久化框架,它简化了数据库操作,使得开发者无需直接编写SQL语句,而是通过对象关系映射(ORM)技术将Java对象与数据库表进行对应。在实际开发中,我们常常会遇到Java对象中包含集合属性...
Hibernate,作为Java领域中的一款强大且广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的编程方式来处理数据库交互,而无需直接编写SQL语句。这篇文档将深入探讨Hibernate的...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java对象和数据库记录之间建立映射,从而简化数据库编程。Hibernate API是这个框架的核心,提供了多种接口和类,帮助开发者实现数据的持久化操作...
Hibernate是一个开源的Java库,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据,而不是传统的SQL语句。在Hibernate的帮助下,开发者可以避免大量重复的JDBC代码,提高开发效率和代码的可维护性。 ...
总之,这份“Hibernate帮助手册和API集合”是学习和使用Hibernate的宝贵资料,无论你是初学者还是经验丰富的开发者,都可以从中找到所需的信息,提升开发效率,更好地利用Hibernate进行Java应用的数据库操作。
Hibernate 的集合映射可以将一个对象的集合属性映射到数据库中。集合映射可以是 set、list、map、bag、array 等。级联策略控制可以控制集合元素的保存和删除。排序策略可以控制集合元素的顺序。 聚合映射 ...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作。ORM 解决了在 Java 应用程序中使用传统 JDBC 进行数据库操作时遇到的繁琐代码问题,将数据库中的表与 Java 对象...
Hibernate为Java应用程序提供了数据库访问的便利,通过将Java对象与数据库表进行映射,实现了数据的透明访问。其核心理念是对象持久化,即将Java对象的状态保存到关系数据库中。Hibernate通过XML或注解方式定义映射...
3. 集合映射:集合类型如List、Set、Map等在Hibernate中的映射方法和注意事项。 4. 动态模型和动态更新:允许程序在运行时动态创建和更新实体类,增加了灵活性。 5. 自动更新和级联操作:当实体状态改变时,...
10. **集合映射**:在Hibernate 3.2中,可以映射各种类型的集合,如List、Set、Map等,同时支持一对多、多对一、一对一等多种关联关系。 11. **延迟加载(Lazy Loading)**:为了解决性能问题,Hibernate 提供了懒...
Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务,使得开发人员可以使用面向对象的方式来操作数据库,而无需关心底层SQL语句的编写。本文档主要围绕Hibernate的最新中文...