`
starbhhc
  • 浏览: 654604 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate系列:映射一对一连接表单向关联

阅读更多
SQL:C_E_JOIN_SINGLE为中间表

create table car_join_single (      
    id number(10,0) not null,      
    name varchar2(15) not null,      
    serial varchar2(30) not null,      
    manufacturer varchar2(50) not null,      
    producedate date,      
    primary key (id)      
);       
create table c_e_join_single(      
cid number(10,0) not null,      
eid number(10,0) not null unique,      
primary key (cid)      
);       
create table engine_join_single (      
    id number(10,0) not null,      
    model varchar2(20) not null,      
    manufacturer varchar2(50) not null,      
    producedate date,      
    primary key (id)      
);       
alter table C_E_JOIN_SINGLE      
  add constraint FK_CAR_JOIN_SINGLE foreign key (CID)      
  references CAR_JOIN_SINGLE (ID);      
alter table C_E_JOIN_SINGLE      
  add constraint FK_ENGINE_JOIN_SINGLE foreign key (EID)      
  references ENGINE_JOIN_SINGLE (ID);      



POJO:Car类有Engine类的一个引用(以下为省略写法)

public class Car implements Serializable      
{      
private Engine engine;      
}       
     
public class Engine implements Serializable      
{      
//没有car属性      
}     



XML:    Car.hbm.xml     Engine.hbm.xml(以下为省略写法)

<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">     
  <class name="Car" table="car_join">     
    <id name="id" column="id" type="integer">     
      <generator class="native" />     
    </id>     
    <join table="c_e_join_single">       
            <key column="cid"       
                 unique="true"/>       
            <many-to-one name="engine"       
                         column="eid"       
                         not-null="true"       
                         unique="true"     
                         fetch="join" />       
    </join>       
  </class>     
</hibernate-mapping>       
     
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">     
  <class name="Engine" table="engine_join_single">     
    <id name="id" column="id" type="integer">     
      <generator class="native"/>     
    </id>     
  </class>     
</hibernate-mapping>      



a)  先保存其中一方得到那一方的id,然后再set并保存另一方
    session.save(engine);
    car.setEngine(engine);
    session.save(car);

b) session.get(Car.class, id),将得到一个外连接的sql,如下:
select
        car0_.id as id0_1_,
        car0_.name as name0_1_,
        car0_.serial as serial0_1_,
        car0_.manufacturer as manufact4_0_1_,
        car0_.producedate as produced5_0_1_,
        car0_1_.eid as eid1_1_,
        engine1_.id as id2_0_,
        engine1_.model as model2_0_,
        engine1_.manufacturer as manufact3_2_0_,
        engine1_.producedate as produced4_2_0_
    from
        car_join_single car0_
    inner join
        c_e_join_single car0_1_
            on car0_.id=car0_1_.cid
    inner join
        engine_join_single engine1_
            on car0_1_.eid=engine1_.id
    where
        car0_.id=?

one-to-one连接表单向关联映射总结: 需对在主控方的XML文件中设置join元素做连接表,表现为many-to-one。查询时可以使用fetch属性来提高查询效率。

分享到:
评论

相关推荐

    Hibernate关联映射

    3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接表通常包含两个外键,分别引用两个参与一对一关联的表。配置上,需要创建一个新的实体类来代表连接表,并在其中定义...

    Hibernate关联关系映射目录

    在一对一连接表单向关联中,两个实体通过第三个表来进行关联。这个第三张表通常称为连接表或者关联表,它包含了两个实体的主键字段。 **表结构示例**: - **Person表**: - `personid`: 主键 - `name`: 姓名 - `...

    Hibernate 一对一连接表单向关联

    本知识点将深入讲解Hibernate中的一对一(OneToOne)连接,特别是单向关联的实现。 在数据库设计中,一对一关联是指两个实体之间存在唯一对应的关系,例如一个人可能只有一个身份证,或者一个账户只有一个用户信息...

    Hibernate 多对一连接表单向关联

    这篇博客“Hibernate 多对一连接表单向关联”可能详细讲解了如何在Hibernate中配置和使用这种关联。 首先,我们要理解多对一关联的基本概念。假设我们有两个实体,例如`Employee`(员工)和`Department`(部门)。...

    hibernate中的关联关系

    以上介绍的是 Hibernate 中一对一关联关系的三种不同方式,包括一对一连接表单向关联、一对一主键单向关联和一对一外键单向关联。每种关联方式都有其特定的应用场景,选择合适的关联方式对于提高应用程序的性能和可...

    hibrenate xml 配置 映射

    #### 2.1.3 一对一连接表单向关联 当两个实体通过第三方连接表关联时,可以使用`&lt;join&gt;`标签。连接表通常包含双方主键作为外键。 ```xml ``` #### 2.1.4 一对多外键单向关联 一个实体可以有多个关联实体,如...

    43-Hibernate数据关联实现〖MVSN〗_Struts + DAO + Hibernate(6).rar

    这包括一对一、一对多、多对一和多对多四种关联类型。例如,一个用户可以有多个订单,这是一种一对多的关系;反之,每个订单对应一个用户,这是一种多对一的关系。实现数据关联通常通过配置XML映射文件或使用注解来...

    Hibernate、Spring和Struts工作原理及使用理由

    Hibernate通过配置文件支持一对一、一对多、多对一和多对多的关系映射。 **缓存机制**: - **一级缓存**:内部缓存,每个Session有自己的缓存,生命周期与Session相同。 - **二级缓存**:可选的全局缓存,支持应用...

    Hibernate工作原理及为什么要用

    Hibernate支持多种关系映射,如一对一(one-to-one)、一对多(one-to-many)、多对多(many-to-many),通过配置文件中的many-to-one、one-to-many、many-to-many等元素实现。 **缓存机制**: 1. **一级缓存**:...

    Struts+Hibernate视频教学

    9. 集合映射:学习如何处理一对多、多对一、多对多的关系映射。 10. 查询和检索:使用HQL(Hibernate Query Language)进行复杂查询,理解 Criteria API。 11. Struts与Hibernate整合:将两者结合,实现数据持久化,...

    struts+hibernate+Spring面试题

    3. 一对多配置:返回的是一个集合,集合中的元素对应数据库中的一条或多条记录。 4. update()与saveOrUpdate():update()用于更新已存在的持久化对象,而saveOrUpdate()根据对象是否已有ID判断是保存还是更新。 5....

    hibernate+struts一对多增删改查demo(学生对班级)

    在IT行业中,开发Web应用程序时,常常需要处理复杂的对象关系,比如一对一、一对多、多对多等。这里我们关注的是“一对多”关系的实现,以“hibernate+struts”框架为例,结合MySQL数据库,来创建一个学生对班级的增...

    简单Struts+Hibernate实例

    Struts是MVC(模型-视图-控制器)设计模式的一个实现,主要用于控制应用程序的流程,而Hibernate则是一个对象关系映射(ORM)工具,用于简化数据库操作。在这个"简单Struts+Hibernate实例"中,我们将深入探讨这两个...

    Spring,hibernate,struts的面试笔试题.doc

    - **替代一对一关联:** 使用多对一替代一对一以减少复杂度。 - **配置对象缓存:** 避免不必要的集合缓存。 - **使用 Bag 和 Set:** 分别用于一对多和多对多关系。 - **使用显式多态:** 对于继承类而言。 - **...

    购物车实例(struts+hibernate)

    2. **创建Hibernate映射**:为每个模型类编写对应的.hbm.xml文件,描述对象与数据库表的关系。 3. **配置Hibernate**:设置Hibernate的配置文件(hibernate.cfg.xml),包括数据库连接信息、方言等。 4. **编写...

    hibernate+struts2 框架项目源代码

    首先,Hibernate作为一款对象关系映射(ORM)框架,它消除了Java程序与数据库之间的直接交互,将数据库操作转化为对Java对象的操作。通过配置文件和注解,Hibernate可以自动管理数据库连接、SQL语句的生成以及对象的...

    Java Web 基于Spring Struts Hibernate 轻量级架构开发基础

    7. Hibernate的实体映射:理解实体类、主键生成策略、关联映射(一对一、一对多、多对多)以及懒加载和级联操作。 8. Hibernate的CRUD操作:通过Session接口执行增删改查,以及使用Criteria和HQL进行复杂查询。 ...

Global site tag (gtag.js) - Google Analytics