- 浏览: 1589928 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
基于中间表关联的单向1:N
单向 1 对 N 关联,注意 和 N:1 是相反的
想象下: 吃大锅饭的时候 ,就是很多人住一个地方,一个房间,一个大炕上
eg: 一个地方有多个人住.或者说 多家人
eg: 每个同学记住老师,比老师记住每个同学简单.
(在 n 的一端进行配置效率高)
N 1
Person : Address
Student : Teacher
这个里面放的是
单向N 对 1
包括
无连接表的 N : 1
有连接表的 N : 1
注意需求 是:
以前N:1 是在N的一端配置,也就是因为多个人记住老师 比较容易
现在要在 1的一端配置,就是让一个老师记住所有同学 (这个老师 记忆力比较好) 所以会有 一个集合 放置 所有同学
种类
FKrelated: 基于外键关联
TBrelated: 基于中间表管理
中间表
Teacher
Student
test class
单向 1 对 N 关联,注意 和 N:1 是相反的
想象下: 吃大锅饭的时候 ,就是很多人住一个地方,一个房间,一个大炕上
eg: 一个地方有多个人住.或者说 多家人
eg: 每个同学记住老师,比老师记住每个同学简单.
(在 n 的一端进行配置效率高)
N 1
Person : Address
Student : Teacher
这个里面放的是
单向N 对 1
包括
无连接表的 N : 1
有连接表的 N : 1
注意需求 是:
以前N:1 是在N的一端配置,也就是因为多个人记住老师 比较容易
现在要在 1的一端配置,就是让一个老师记住所有同学 (这个老师 记忆力比较好) 所以会有 一个集合 放置 所有同学
种类
FKrelated: 基于外键关联
TBrelated: 基于中间表管理
中间表
Teacher
Student
public class Student { private Integer sid; private String sno; private String name; private int age; //... } public class Teacher { private Integer tid; private String name; private int age; private Double salary; private Set<Student> students=new HashSet<Student>(); //.... }
DROP TABLE IF EXISTS mytest.teacher_student; CREATE TABLE mytest.teacher_student ( teacher_id INT NOT NULL, student_id INT NOT NULL, PRIMARY KEY (teacher_id, student_id), UNIQUE KEY student_id (student_id), KEY FK2E2EF2DE482FD2B0 (teacher_id), KEY FK2E2EF2DE37948810 (student_id), CONSTRAINT FK2E2EF2DE37948810 FOREIGN KEY (student_id) REFERENCES student (SID), CONSTRAINT FK2E2EF2DE482FD2B0 FOREIGN KEY (teacher_id) REFERENCES teacher (TID) ); DROP TABLE IF EXISTS mytest.teacher; CREATE TABLE mytest.teacher ( TID INT NOT NULL, NAME VARCHAR (255), AGE INT, SALARY DOUBLE, PRIMARY KEY (TID) ); DROP TABLE IF EXISTS mytest.student; CREATE TABLE mytest.student ( SID INT NOT NULL, SNO VARCHAR (255), NAME VARCHAR (255), age INT, PRIMARY KEY (SID) );
<hibernate-mapping package="com.sh.study.model.o2n.TBrelated"> <class name="Teacher" table="TEACHER"> <id name="tid" type="java.lang.Integer" column="TID"> <generator class="increment"/> </id> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> <property name="age" type="int"> <column name="AGE" /> </property> <property name="salary" type="java.lang.Double"> <column name="SALARY" /> </property> <!-- 无连接表的 1:N <set name="students1" cascade="all"> <key column="tid"/> <one-to-many class="Student"/> </set> --> <!-- 基于连接表的 1:N 注意采用 many-to-many 替换 one-to-many --> <set name="students" table="teacher_student" cascade="all" inverse="false"> <key column="teacher_id"/> <many-to-many column="student_id" class="Student" unique="true"/> </set> </class> </hibernate-mapping> <hibernate-mapping package="com.sh.study.model.o2n.TBrelated"> <class name="Student" table="STUDENT"> <id name="sid" type="java.lang.Integer" column="SID"> <generator class="increment"/> </id> <property name="sno" type="java.lang.String"> <column name="SNO" /> </property> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> <property name="age" type="int"> <column name="age" /> </property> </class> </hibernate-mapping>
test class
package com.sh.test.hibernate.o2n.tbrelated; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sh.study.model.o2n.TBrelated.Student; import com.sh.study.model.o2n.TBrelated.Teacher; //测试 Hibernate 单向 1:N public class TestHibrO2N { private ApplicationContext act; private SessionFactory factory; @Before public void init(){ act = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); factory= act.getBean("sessionFactory",SessionFactory.class); } @Test public void test1() { Session session=factory.getCurrentSession(); Transaction tx=session.beginTransaction(); Student s1=new Student(); s1.setName("ann"); s1.setAge(15); s1.setSno("s10121"); Student s2=new Student(); s1.setName("lili"); s1.setAge(16); s1.setSno("s10122"); Teacher t1=new Teacher(); t1.setName("Lukuc"); t1.setAge(26); t1.setSalary(1258.5); Set<Student> ss=t1.getStudents(); ss.add(s1); ss.add(s2); //持久化对象 session.persist(t1); //session.flush(); tx.commit(); //如果不是使用的SessionFactory.getSession()来获得Session。 //而是使用SessionFactory.getCurrentSession()方法来获得Session时, //当事务结束的时候,不管是提交还是回滚事务,hibernate会自动关闭Session的, //session.close(); } }
发表评论
-
Hibernate的属性映射配置
2014-01-08 23:20 2173package com.crazyit.app.domai ... -
Hibernate 的初始化
2014-01-08 22:43 3555public static void main(Strin ... -
Hibernate 的关系与配置
2014-01-05 21:57 28161.单向 N:1 例如:一个地方有多个人住. (在1 的一端 ... -
Spring配置Hibernate事务
2013-11-10 13:45 1217为了保证数据的一致性,在编程的时候往往需要引入事务这个概念。事 ... -
Hibernate 关系映射(一)基于外键关联的N:1
2013-05-14 23:45 10191.单向 N:1 无中间表 例如:一个地方有多个人住. ... -
Hibernate 关系映射(二)基于中间表的N:1
2013-05-13 21:11 8181.单向 N:1 有中间表 例如:一个地方有多个人住. ... -
Hibernate 关系映射(三) 基于外键关联的单向 1:1
2013-05-03 23:42 9721.单向 1:1 基于外键的 想象下 小康社会: 每家都有钱, ... -
Hibernate 关系映射(四) 基于中间表关联的单向1:1
2013-05-02 20:07 11261.单向 1:1 基于中间表 想象下 小康社会: 每家都有钱, ... -
Hibernate 关系映射(五) 基于主键关联的单向1:1
2013-03-26 00:23 9341.单向 1:1 基于主键关联 想象下 小康社会: 每家都有钱 ... -
Hibernate 关系映射(7) 基于外键关联的单向1:N
2013-03-21 00:31 868基于中间表关联的单向1:N 单向 1 对 N 关联,注意 和 ... -
Hibernate 缓存
2012-11-12 00:46 33401数据缓存:(date caching) ... -
Hibernate 的HQL,QBC 查询语言
2012-11-11 17:25 187611.HQL:(Hibernate Query Language ... -
HIbernate 关系映射配置
2012-11-11 02:10 21781.主键关联one-to-one 释义:两个表使用相同的主键 ... -
HIbernate 基础
2012-11-10 22:30 12571.标识符 表示符号生成器描述increment适用于代理主建 ... -
SSH2整合完整案例(四十三)
2012-09-14 09:34 20684注解配置:Struts2+Spring2.5+Hibernat ...
相关推荐
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的关联关系,...
综上所述,Hibernate提供了丰富的关联关系映射机制,包括一对一、一对多和多对多关联,每种关联又可以细分为单向和双向,以及基于主键和基于外键的不同实现方式。正确理解和选择合适的关联关系对于构建高效、可维护...
这个文件名暗示了这是一组基于Spring、Struts和Hibernate(简称S2SH)的示例代码,具体涉及的是关系映射中的一对一单向外键关联。"uni_fk"表示单向(unidirectional)外键(foreign key)关联。在数据库中,外键用于...
1. Hibernate 一对一外键单向关联: 在 Hibernate 中,一对一的外键单向关联意味着一个实体类中的属性指向另一个实体类,而另一个实体类并不知道这个关联。这种关联可以通过在 `many-to-one` 元素中添加 `unique=...
“Hibernate基于外键的一对多单向关联”这个标题指的是在Java持久化框架Hibernate中,如何通过外键实现一个实体类(如订单)与另一个实体类(如商品)之间的一对多关系,并且这种关联是单向的,即从订单端可以访问到...
实体关联关系映射是指在Hibernate框架下如何将Java对象之间的关联关系映射到数据库表中的过程。根据实体之间关联关系的不同,Hibernate提供了多种映射方式: 1. **一对一关联**(One-to-One) - 外键单向关联 - ...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...
【hibernate的关联关系映射】在Java持久化框架Hibernate中,关联关系映射是核心功能之一,它允许对象间的复杂关系与数据库中的表结构相匹配。在选课系统这个例子中,主要涉及到的对象包括课题(Course)、教师(Teacher...
实体关联关系映射涉及一对一、一对多、多对多等多种形式,而这些映射方式又可以分为单向和双向,依据使用的是主键还是外键,以及是否使用连接表。接下来,我们详细介绍这些知识点。 ###Hibernate实体关联关系映射...
本教程主要聚焦于Hibernate中的一个关键概念——关系映射,特别是多对一单向关联的实现。这种关联类型常出现在数据库设计中,比如一个部门可以有多名员工,但一个员工只属于一个部门。 首先,我们要理解多对一关系...
-- 映射关联PO,column是Address在该表中的外键列名,增加unique变成“1-1” --> </hibernate-mapping> ``` --- ##### 2. 一对一主键单向关联 在一对一主键单向关联中,两个实体共享同一个主键。这种方式通常...
本练习主要关注的是Hibernate中的单向多对多关联映射,这是一种常见的关系数据库设计模式,用于表示两个实体间复杂的关系。 在多对多关联中,两个实体类可以相互拥有多个实例,但只在一个方向上建立关联。例如,...
标题 "Hibernate基于连接表的一对多单向关联" 涉及的是数据库对象关系映射(ORM)框架Hibernate中的一个重要概念。在Java开发中,Hibernate是广泛使用的工具,它允许开发者将Java类与数据库表进行映射,简化了数据...
本教程主要探讨的是Hibernate中的一种重要关系映射类型:一对多单向关联。在关系型数据库中,一对多关联是最常见的关系类型,一个实体可以与多个其他实体相关联。在Hibernate中,这种关系可以通过配置XML映射文件或...
这篇博客文章“hibernate一对多关联映射(单向关联)”将深入讲解如何配置和使用这种映射关系。 在单向关联中,只有一个实体知道另一个实体的存在,也就是说,只有父实体("一"的一端)有对子实体("多"的一端)的...
6. **有连接表的 1:N 双向关联** 使用 `<set>` 和 `<join>` 标签在两边的实体映射文件中进行配置,同时指定 `inverse="true"` 表示关联的维护由另一方负责。 7. **基于主键的 1:1 (一对一) 关联映射** 这种关联...
这个文件名可能代表了一个基于Struts2、Spring和Hibernate(S2SH)的项目,其中"relation03"可能表示关系映射的第三部分,而"one2one_uni_pk"直指一对一单向主键关联的具体实现。 **详细知识点:** 1. **一对一...
在Hibernate中,关联映射是实现对象关系映射(ORM)的关键,它允许我们在对象模型和关系数据库之间建立联系。关联映射主要包括四种类型:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对...