- 浏览: 223334 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (244)
- java (23)
- java多线程 (7)
- 综合 (1)
- oracle10g (24)
- div+css (1)
- Flex (27)
- java Nio (1)
- java设计模式 (8)
- struts2 (10)
- spring3.0 (5)
- SSH (9)
- dwr (5)
- hibernate3.6 (17)
- dom4j (1)
- sql优化 (5)
- Quartz任务调度框架 (1)
- AOP (3)
- JavaScript (18)
- jquery (3)
- JSF (9)
- ruby (1)
- 正则表达式 (1)
- 明日准备 (2)
- eclipse (3)
- gvim (1)
- CMS (1)
- linux (6)
- 杂 (4)
- java 设计模式 (1)
- MySql (10)
- JBPM (4)
- JSP技术 (1)
- Mybatis And Ibatis (2)
- 经验之谈 (10)
- WebService (1)
- java分布式(高性能,高可用,可伸缩) (0)
- springMvc (2)
- redis (0)
- ant (1)
- Nutz (6)
- 配置管理 (0)
- css+div (1)
- eChars (1)
- angularJs (1)
- D3 (3)
- Scala (1)
最新评论
-
Cobain_LI:
Cobain_LI 写道学习了,之前一直都没注意到有这样的问题 ...
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
Cobain_LI:
Cobain_LI 写道学习了,之前一直都没注意到有这样的问题 ...
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
Cobain_LI:
有个小失误,144和147行多了两个花括号
js面向对象2--js中工厂模式的演化(重要,详细) -
Cobain_LI:
学习了,之前一直都没注意到有这样的问题
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
YTT1121:
有网络拓扑发现的源代码么,或者您会编写么?可以有偿求购,搞科研 ...
flex 之twaver1--简单网络拓扑实现
多对一关系实现两种方法:
1,在多的一段添加1的主键作为外键。
2,多的一段不添加任何外键,重新建一个表来实现多对一的关联。
下面是实例:
1,Person类:
2,Address类:
3,Person映射文件
5,测试程序(不管使用哪种方式,程序的访问方式不会改变)
1,在多的一段添加1的主键作为外键。
2,多的一段不添加任何外键,重新建一个表来实现多对一的关联。
下面是实例:
1,Person类:
package com.supan.bean; public class Person { //因为由人访问其地址,所有人必须有一个地址的引用 private Integer id; private String name; private int age; private Address address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
2,Address类:
package com.supan.bean; public class Address { //程序无须从address访问Person属性,所以Address无须增加Person属性 private Integer addressId; private String addressDetail; public Address() { } public Address(String addressDetail){ this.addressDetail = addressDetail; } public Integer getAddressId() { return addressId; } public void setAddressId(Integer addressId) { this.addressId = addressId; } public String getAddressDetail() { return addressDetail; } public void setAddressDetail(String addressDetail) { this.addressDetail = addressDetail; } }
3,Person映射文件
<class name="Person" dynamic-update="true" table="myperson" dynamic-insert="true"> <id name="id" column="id" type="integer"> <generator class="native"/> </id> <property name="name" type="string" column="name" access="property" length="40"/> <property name="age" type="integer" column="age" access="property"/> <!-- 第一种方法:实现外键的方法来映射 cascase可以让person在保存自己前自动保存address持久对象,如果没有 这个属性,在保存person会手动的保存address <many-to-one name="address" class="Address" column="address_id"> </many-to-one> --> <!-- 第二种方法:使用重建关联表的方法来实现 多对一的另一种实现方式:使用连接表,即不再多的一段添加一的外键,而是 重新创建一个新表,这个表中存放连个字段一个是多的一段的主键,一个是1的 一段的主键。 --> <join table="person_address"> <!-- 映射链接表中参照本表主键的外键列 --> <key column="person_id"></key> <many-to-one name="address" cascade="all" class="Address" column="address_id"> </many-to-one> </join> </class> 4,address的映射文件: <class name="Address" dynamic-update="true" dynamic-insert="true"> <id name="addressId" column="address_id" type="integer"> <generator class="native"/> </id> <property name="addressDetail" type="string" column="addressDetail" access="property" length="240"/> </class>
5,测试程序(不管使用哪种方式,程序的访问方式不会改变)
//Person 和 Address 是多对一的单向关联 public void testPersonSave(){ Configuration cfg = new Configuration().configure(); SessionFactory sessionFactory = cfg.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction ts = session.beginTransaction(); System.out.println("111111111111111"); Person p = new Person(); p.setName("陈超阳"); p.setAge(26); Address a = new Address("河南省汝州市"); p.setAddress(a); session.persist(a);//如果配置文件中没有指定cascade为all的话,这里需要先保存address才能保存person; session.save(p); //在Person映射文件中设置了cascade为all,表示保存person前会自动保存address的 Address a2 = new Address("广东省深圳市"); session.persist(a2); p.setAddress(a2); ts.commit(); session.close(); sessionFactory.close(); }
发表评论
-
项目中关于配置文件中密码的加密处理
2014-08-08 23:32 5994注:原创作品,转载请注明出处。 在项目中,为了项目 ... -
Hibernate 调用返回值的存储过程
2014-08-04 02:20 2806注:原创作品,转载请注明出处。 曾一度认为orac ... -
hibernate 的sqlQuery对象可以操作非映射的数据库表
2014-05-23 01:17 1110注:原创作品,分享以供交流学习,转载请注明出处。 一直 ... -
hibernate sql查询 标量,实体查询
2014-05-11 23:10 887注:原创作品,分享以供交流学习,转载请注明出处 本博文实例假 ... -
hibernate hql查询 select 语句 和 from语句
2014-05-11 21:37 3972注:原创作品,分享以 ... -
hibernate 基于cglib的 事务代理
2014-03-24 23:39 825实例:使用hibernate 事务代理完成一个事务,添 ... -
hibernate 基本事务
2014-03-24 21:45 541业务需求:增加一个人,这个人有两个地址,人是一张表, ... -
Hibernate 原生sql查询
2014-03-23 19:25 6741,Person package com.supan.bean ... -
hibernate一对多 双向 关联A(无连接表)
2014-03-17 00:27 895一,创建映射 1,多的一段 java文件中需要有一的属性,配置 ... -
hibernate多条件查询
2014-03-07 00:47 8051. Hibernate的Criteria这 ... -
javaSe中使用Hibernate
2014-03-01 18:16 488hibernate可用在javaSe中也可以用在java ... -
ssh中junit 测试 hibernate 1对多单向关联(不推荐使用这种关联)
2014-02-11 23:41 663主要介绍效率最低的一对多单向关联(实际中推荐使用一对多双向关联 ... -
hql select 子查询的属性可封装成list、具体对象,改变默认的数组类型
2014-01-22 16:35 7491,select子查询属性组成成list //把sel ... -
hql查询对象、查询属性
2014-01-22 15:34 604//查询整个对象集合 public void ... -
hibernate批量插入、删除、更新。
2014-01-22 15:09 739一:效率最不好的批量插入、更新。 //批量创建Pers ... -
hibernate基本知识1
2014-01-21 16:21 529package com.supan.test; import ...
相关推荐
在Java的持久化框架Hibernate中,多对一(ManyToOne)关联关系是一种常见的对象关系映射(ORM)场景。这种关系通常出现在一个实体类拥有多条与另一个实体类相关的记录,而另一个实体类可能只有一条对应的记录。例如...
本练习主要关注的是Hibernate中的单向多对多关联映射,这是一种常见的关系数据库设计模式,用于表示两个实体间复杂的关系。 在多对多关联中,两个实体类可以相互拥有多个实例,但只在一个方向上建立关联。例如,...
这篇博客文章“hibernate一对多关联映射(单向关联)”将深入讲解如何配置和使用这种映射关系。 在单向关联中,只有一个实体知道另一个实体的存在,也就是说,只有父实体("一"的一端)有对子实体("多"的一端)的...
本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...
一对一关联分为两种类型:共享主键关联(Primary Key Join)和唯一外键关联(Unique Foreign Key Join)。在本例中,我们讨论的是后者,即通过一个独立的外键字段在两个表之间建立一对一的关系。 ### 2. 唯一外键...
总结来说,Hibernate中的多对多单向关联是一种高效的数据映射方式,它允许我们在不增加复杂性的情况下处理两个实体之间的复杂关系。通过学习和实践,开发者能够更好地掌握这种关联类型,从而在实际项目中灵活运用。
在Java的持久化框架Hibernate中,一对一(One-to-One)关联关系是常见的一种实体关系映射。本主题将深入探讨如何使用Hibernate通过主键来实现一对一的单向关联关系,并提供相关的源码分析。 首先,我们需要理解一对...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系模型,它用于处理两个实体类之间存在多个对应关系的情况。这篇博客"hibernate多对多关联映射(单项关联)"深入探讨了如何在Hibernate中实现这种映射...
本话题主要探讨的是Hibernate中的一对一关联映射,这是一种将数据库中的单个表映射到Java对象模型中单个类的关系映射技术。通过注解方式实现一对一关联映射,可以避免传统的XML配置文件,使得代码更加简洁、易读。 ...
在Hibernate中,一对一(One-to-One)映射是一种常见的关联关系,它表示两个实体之间存在一对一的对应关系。本篇文章将深入探讨Hibernate中的一对一外键单向关联。 首先,一对一外键关联指的是一个实体通过外键直接...
在Java的持久化框架Hibernate中,单向多对多映射是一种常见的关系映射方式,尤其在处理数据库中两个实体间复杂关联时显得尤为重要。在注解版的Hibernate中,我们不再需要传统的XML配置文件,而是直接在实体类上使用...
在本主题"Hibernate单向一对多关联映射(XML版)"中,我们将深入探讨如何使用XML配置来实现数据库中一个实体类对应多个实体类的关联关系。 在Hibernate中,一对多关联是一种常见的关系映射类型,它反映了数据库中的...
在本主题中,我们将深入探讨如何利用Hibernate实现一对一(One-to-One)单向关联关系,并通过源码分析来理解其工作原理。 **一对一关联关系**在数据库设计中表示两个表之间存在唯一的对应关系,例如,一个人可能...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关联是一种常见的关系映射类型,它用于表示两个实体之间可以有多个对应的关系。本篇将详细讲解如何使用Hibernate实现多对多单向关联,包括注解(Annotation)...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系映射方式,用于表示两个实体之间一对一的对应关系。本篇主要探讨的是基于主键(Primary Key)的双向关联映射,这在实际项目中非常常见...
本文主要探讨的是Hibernate中的两种关联关系:多对一单向关联和多对一双向关联。通过理解这两种关联方式,我们可以更好地设计和实现复杂的数据库模型。 首先,我们来看**多对一单向关联**。这种关联意味着一个实体...
综上所述,Hibernate提供了丰富的关联关系映射机制,包括一对一、一对多和多对多关联,每种关联又可以细分为单向和双向,以及基于主键和基于外键的不同实现方式。正确理解和选择合适的关联关系对于构建高效、可维护...
在Java的持久化框架Hibernate中,多对一的单向关联是一种常见的关系映射方式,它主要用于处理数据库中两个实体间的一种关联关系。在这种关系中,一个实体(多个实例)可以与另一个实体(单个实例)相关联。本文将...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...