- 浏览: 989362 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
数据库:
--学生表
create table stu
(
s_id int identity(1,1) not null primary key,
s_name varchar(50),
s_sex varchar(20)
)
Go
--科目表
create table subject
(
b_id int identity(1,1) not null primary key,
b_name varchar(50)
)
--中间关系表
create table stu_sub
(
t_id int identity(1,1) not null primary key,
s_id int,
b_id int
)
Stu.hbm.xml配置:
<hibernate-mapping>
<class name="com.mengya.entity.Stu" table="stu" schema="dbo" catalog="mp">
<id name="SId" type="java.lang.Integer">
<column name="s_id" />
<generator class="native" />
</id>
<property name="SName" type="java.lang.String">
<column name="s_name" length="50" />
</property>
<property name="SSex" type="java.lang.String">
<column name="s_sex" length="20" />
</property>
<!-- 集合名称为:subject,关系表为:stu_sub -->
<set name="subject" table="stu_sub" inverse="false" cascade="save-update">
<!-- 在多对多中的关系表中的s_id找到本对象 -->
<key>
<column name="s_id"></column>
</key>
<!-- 集合中放的对象是com.mengya.entity.Subject -->
<many-to-many class="com.mengya.entity.Subject">
<!-- 在多对多中的关系表中的b_id找到com.mengya.entity.Subject对象 -->
<column name="b_id"></column>
</many-to-many>
</set>
</class>
</hibernate-mapping>
Subject.hbm.xml配置:
<hibernate-mapping>
<class name="com.mengya.entity.Subject" table="subject" schema="dbo"
catalog="mp">
<id name="BId" type="java.lang.Integer">
<column name="b_id" />
<generator class="native" />
</id>
<property name="BName" type="java.lang.String">
<column name="b_name" length="50" />
</property>
<!-- 集合名称为:stu,关系表为:stu_sub -->
<set name="stu" table="stu_sub">
<!-- 在多对多中的关系表中的b_id找到本对象 -->
<key>
<column name="b_id"></column>
</key>
<many-to-many class="com.mengya.entity.Stu">
<!-- 在多对多中的关系表中的s_id找到com.mengya.entity.Stu对象 -->
<column name="s_id"></column>
</many-to-many>
</set>
</class>
</hibernate-mapping>
测试:
public void save() {
Stu stu1 = new Stu();
Stu stu2 = new Stu();
Subject sub1 = new Subject();
Subject sub2 = new Subject();
stu1.setSName("张明学");
stu1.setSSex("男");
stu2.setSName("张丹凤");
stu2.setSSex("女");
sub1.setBName("Java");
sub2.setBName(".NET");
/*
* 这样添加是不对的,因为我在Stu.hbm.xml中配置是:inverse="false" cascade="save-update"
* 表示stu对象对stu对象中的set集合里的对象,维护关联关系,并保持save-update操作
*/
// sub1.getStu().add(stu1);
// sub1.getStu().add(stu2);
//
// sub2.getStu().add(stu1);
// sub2.getStu().add(stu2);
/*
* 故:stu对象集合中应封装sub对象
*/
stu1.getSubject().add(sub1);
stu1.getSubject().add(sub2);
stu2.getSubject().add(sub2);
/*
* 在上面添加中,我们仅仅让学生维护了关系,即学生知道科目,科目不知道学习
* 其实多对多中,只要让一方维护关系就可以了。多对多的关系维据中向中间表中插入数据,
* 若双方都维护关系就中间表中的数据就有重复的了.
*/
session=this.GetSession();
tran=session.beginTransaction();
session.save(stu1);
session.save(stu2);
tran.commit();
session.close();
}
个人说明:多对多的查询效率很低,它会去查三张表,若数据量大的话,效率很低.所以数据量大的话不适合建立多对多的关系.
发表评论
-
Hibernate的HQL not like查询
2009-09-24 18:20 9743今天想用Hibernate的Restriction ... -
Hibernate Gossip: Bag
2009-09-14 16:37 1436Bag是集合,与Set不同的是,Bag允许重复的元素,在Jav ... -
hibernate的Restrictions用方说明
2009-06-15 21:09 1882方法 说明 Restric ... -
Hibernate完成常用的JDBC操作下
2009-05-29 16:38 1422一方: package com.mengya.dao; i ... -
Hibernate完成常用的JDBC操作上
2009-05-29 16:35 1881package com.mengya.dao; import ... -
Native SQL查询
2009-04-29 22:02 1553你也可以使用你的数据 ... -
hibernate调用存储过程来分页
2009-04-29 07:56 3722虽然Hibernate帮助我们完成了分页功能,但若 ... -
Hibernate中实体对象的生命周期
2009-04-21 22:58 1400实体对象的生命周期在Hibernate应用中是一个很关键的概念 ... -
HibernateTemplate的常规用法
2009-04-21 22:55 1316HibernateTemplate提供非常多的常用方法来完成基 ... -
cascade与inverse的作用
2009-04-21 22:52 1757Cascade:用来说明当对主对象进行某种操作时是否对其关联的 ... -
Hibernate一对一的使用
2009-04-21 22:50 1778数据库:create table student( id ... -
query.iterate()与query.list()的区别
2009-04-21 22:46 1993Query query=this.GetSession().c ... -
Hibernate中的Query一些基本用法
2009-04-21 22:45 5023/*** 添加*/public void save(Stu s ... -
Hibernate中Criteria的使用
2009-04-21 22:42 2801/*** 使用Criteria全查询*/public List ... -
Hibernate关联表特殊查询(一方)inner join fetch,left join fet
2009-04-21 22:40 18037inner join fetch/*** 一对多中的一方inn ... -
Hibernate关联表特殊查询(多方)上
2009-04-21 22:39 2339/*** 多条件组合查询*/ public List get ... -
get和load的区别
2009-04-20 17:20 1189(1)load()方法从来就是假定数据在数据库中是存在的,在使 ... -
Hibernate中的ORM关系映射主键生成方式即(Generator的class值)
2009-04-20 17:18 2129主键产生器可选项说明 ...
相关推荐
### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
相对应地,多对一(Many-to-One)关系则是从多个实体指向一个单一实体的关联。理解这两种配置的区别对于进行高效的数据操作至关重要。 **一对多关系详解:** 在Hibernate中,一对多关系通常用在父类(拥有端)和...
以上是对“hibernate说明文档”标题和描述中的关键知识点的详细介绍,旨在帮助读者深入了解Hibernate的工作原理及其应用场景。通过掌握这些核心概念和技术,开发者可以更加高效地使用Hibernate框架来处理复杂的...
总之,为了实现Hibernate对多数据库的支持,需要精心设计和配置,以确保代码的可移植性,同时兼顾性能和数据一致性。以上各点提供了实现这一目标的基础,但实际项目中可能还需要解决更多特定于数据库的问题。通过...
**hibernate框架一对一关联测试案例详解** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用Java对象来处理数据。本篇我们将深入探讨Hibernate中的一对一...
对于一对一或多对一,通常在"多"的一方添加对"一"的引用,而在"一"的一方则可以忽略,因为默认就已经存在了"多"的关系。 2. **@ManyToOne和@OneToMany注解**:如果使用注解方式,我们会在"多"的一方使用`@ManyToOne...
本文将以一个实例为依托,深入解析如何使用注解来设置一对多关系以及多对一关系的映射。 在Hibernate中,处理一对多关系主要使用`@OneToMany`和`@ManyToOne`注解。一个简单的例子通常包括两个实体类:一个“父”类...
- 在"老师"实体类中,使用`@OneToMany`注解来表示与"学生"的多对一关系,指定`mappedBy`属性为"学生"实体中的反向引用属性名,如`@OneToMany(mappedBy = "teacher")`。 - 在"学生"实体类中,使用`@ManyToOne`注解...
**Hibernate 注解说明文档** 在Java的持久化框架中,Hibernate是备受青睐的一款,它极大地简化了数据库操作。本文档将深入探讨Hibernate注解的使用,帮助开发者更好地理解和利用这些注解来实现对象关系映射(ORM)...
在这个“hibernate说明及demo的例子”中,我们将深入探讨Hibernate的核心概念和功能,并通过一个实际的示例来展示如何使用它。 一、Hibernate概述 Hibernate是一个强大的工具,它消除了JDBC代码的繁琐,提供了数据...
在Java的持久化框架Hibernate中,一对多映射(One-to-Many Mapping)是一种常见的关系映射类型,它反映了数据库中表与表之间的关联关系。本文将深入探讨Hibernate一对多映射的概念、配置以及实现方式,并结合提供的...
3. 查询缓存:存储查询结果,减少对数据库的访问。 七、事务管理 Hibernate支持JTA(Java Transaction API)和JDBC事务,通过Transaction对象进行控制,保证数据的一致性和完整性。 八、高级特性 1. 异步操作:...
Hibernate连接SQLite配置步骤: 1、添加SQLite库: 1.1、将两个jar包:com.zy.hibernate.dialect.SQLiteDialect.jar、sqlite-jdbc-3.7.2.jar拷贝到“\WEB-INF\lib”文件夹下; 2、配置hibernate: 2.1、将...
以下是对Hibernate的一些关键知识点的详细说明: 1. **异常处理**: 在描述中提到的`org.hibernate.PropertyValueException: not-null property references a null or transient value`是Hibernate抛出的一个常见...
此压缩包“Hibernate01_源代码及重要说明”包含了Hibernate的源代码,以及相关的重要说明,旨在帮助开发者深入理解其工作原理。 **一、Hibernate 框架概述** 1. **对象关系映射(ORM)**: ORM是Hibernate的核心,...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是常见的关系映射类型,它用于表示两个实体之间一对一的关联关系。本篇将详细阐述Hibernate中一对一关联的两种实现方式:基于主键关联和基于外键关联,并...
本篇文章将详细讲解Hibernate中的"多对一"关联,并通过具体的源码示例来帮助理解。同时,我们还将探讨如何在Spring框架中集成并测试这些关联。 **1. Hibernate中的多对一关联** 在数据库设计中,"多对一"关系表示...
5. **关联映射**:熟悉一对一、一对多、多对一、多对多等不同类型的关联映射配置。 6. **延迟加载和懒加载**:理解何时及如何使用这些特性来提高性能。 7. **实体生命周期**:了解Hibernate如何处理对象的创建、...
**hibernate全套资料文档API及配置说明文档** 在Java世界中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发人员使用面向对象的编程方式来操作数据库,从而降低了数据库操作的复杂性。这个压缩包...