EJB3 jpa 数据库表的映射关系

1)多对一映射关系(单向)

使用外键关联,在外键的选取上以多的一方为主,即外键要在多的一方体现出来

@Entity
public class Company implements Serializable{
    @Id
    @Column(name = "c_id")
    private int id;

    private String name;
}
@Entity
public class Employee implements Serializable {

    @Id
    @Column(name="e_id")
    private int id;

    private String name;

    @ManyToOne
    @JoinColumn(name = "c_id")
    private Company company;
}

2)一对多

1.单向关联(以一的一方为主,即一对多关系要体现在一的一方)

创建中间表,以两张表的id字段为内容(hibernate的生成策略:在多的一方生成一个外键)

@Entity
public class Company implements Serializable{
    @Id
    @Column(name = "c_id")
    private int id;

    private String name;

    @OneToMany
    private Set<Employee> employee;
}
@Entity
public class Employee implements Serializable {

    @Id
    @Column(name="e_id")
    private int id;

    private String name;
}

2.双向关联

不创建中间表,以在多的一方保存一个外键作为记录,体现一对多

**与单向不同的是,双向关联必须要在一的一方定义mappedby,指向多的一方

@Entity
public class Company implements Serializable{
    @Id
    @Column(name = "c_id")
    private int id;

    private String name;

    @OneToMany(mappedBy="companys")
    private Set<Employee> employees;}
@Entity
public class Employee implements Serializable {

    @Id
    @Column(name="e_id")
    private int id;

    private String name;
    @ManyToOne
    private Company companys;
}

3)一对一

1.一对一主键关联(生成的表没有任何外加字段,也没有中间表,以ID的约束为主键)

@Entity
public class Company implements Serializable{
    @Id
    @Column(name = "c_id")
    private int id;

    private String name;

    @OneToOne
    @PrimaryKeyJoinColumn
    private Boss boss;
}
@Entity
public class Boss {

    @Id
    private int id;

    private String name;

    @OneToOne(mappedBy="boss")
    private Company company;

}

2.一对一外键关联(在主的一方A加入一个外键,并且该外键唯一,而在另一方B同样引入该规则,但不产生外键,仅使A的一方的主键也唯一)

@Entity
public class Company implements Serializable{
    @Id
    @Column(name = "c_id")
    private int id;

    private String name;

    @OneToOne
    @JoinColumn(name="boss_id" ,unique=true)
    private Boss boss;

}
@Entity
public class Boss {

    @Id
    private int id;

    private String name;

    @OneToOne(mappedBy="boss")
    private Company company;

}
时间: 2024-07-30 20:29:30

EJB3 jpa 数据库表的映射关系的相关文章

django之模型类、迁移和数据库表之间的关系

环境配置:ubuntu 16.04,Django 1.8.2,MySQL-python 1.2.5 目的是为了了解模型类的定义和其对应数据库里面表的关系 实测发现: 关于模型类和数据库里面的表关系,模型类里面定义的类属性是为了生成数据库里面的表结构使用的,类似mysql里面创建一个表. 一个模型类,对应着数据库里面的一个表. 一个类属性,对应着数据库表里面的一个字段 一个类属性的类型(如charfield),对应着数据库里面字段类型. 进入python manage.py shell运行的pyt

Spring Hibernate JPA 联表查询 复杂查询

(转自:http://www.cnblogs.com/jiangxiaoyaoblog/p/5635152.html) 今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibernate都提供了Entity,我们应该用哪个,还是说可以两个一起用? Hibernate的Entity是继承了jpa的,所以如果觉得jpa的不够用,直接使用hibernate的即可

hiberate 映射关系 详解

在我们平时所学的关系型数据库中,我们会大量处理表与表之间的关系,如果表比较多的话处理起来就比较繁琐了,但是hibernate给我们提供了很大的便利,这些便利让我们处理起来方便. 如果我们把表的每条记录当成一个对象的话,那我们我们的映射关系可以分为四种 1)一对一 2)一对多 3)多对一 4)多对多 现在我们假设有四个表,员工表,部门表,办工作表,职位表. 有如下映射关系 1)多个员工对应一个部门 2)一个部门对应多个员工 3)一个员工对应多个职位(这里我们假设一个人有多大能力,就要承担多大责任,

Hibernate多对一,多对多的表映射关系

版权声明:本文为博主原创文章,未经博主允许不得转载. 本文旨在介绍hibernate的实体与数据库表的各种关系映射 1.多对一/一对多关系映射 User-------用户表 Department -------------部门表 Contact---------------组件部分,(地址类)) 下面开始各实体代码: User.java实体类 package com.huangchao.model; import java.io.Serializable; import java.util.Da

数据库表关系及配置

1.数据库表中的关系 一对一 一对多(多对一) 多对多 2.如何确立和实现数据库中的表关系 一对多的表关系实现: 使用外键约束 我们习惯把一的方称为主表,把多的方称为从表 外键:从表中有一列,除了null之外,只能来源于主表的主键 默认情况下,外键的字段是可以重复的 多对多的表关系在数据库中实现: 使用中间表 中间表有两个外键,引用两个多对多表的主键 不能有其它字段信息,至于中间表的主键,应该采用联合主键 任何一个多方表和中间表去比较都是一对多的关系 一对一的表关系再数据库中实现: 有两种: 1

自动生成对应数据库表的JPA代码工具

http://blog.csdn.net/zheng2008hua/article/details/6274659 关键词:JPA 数据库表代码自动生成,JPA代码生成 自动生成对应数据库表的JPA代码工具: 1.myEclipse 使用MyEclipse Persistence Tools; 2.eclipse 创建一个JPA Project工程后,右键工程选JPA Tools选项生成,有用到Data Source Explorer,参考http://blog.csdn.net/zheng20

Hibernate(三) 之 映射关系

一.概念: 关系:名词,事物之间相互作用.相互联系的状态. 关联:名词:表示对象(数据库表)之间的关系:动词:将对象(数据库表)之间通过某种方式联系起来. 映射:将一种形式转化为另一种形式,包括关系. 级联:动词,有关系的双方中操作一方,另一方也将采取一些动作. 值类型:对象不具备数据库同一性,属于一个实体实例其持久化状态被嵌入到所拥有的实体的表行中,没有标识符. 实体类型:具有数据库标识符. 二.数据库: 1.关系 2.1.1.一对一.一对多.多对多 2.1.2.如何表示? 外键+索引 2.级

SSH深度历险(一)深入浅出Hibernate架构(一)-------映射解析——七种映射关系

        ORM.全称是(Object Relational Mapping),即对象关系映射.ORM的实现思想就是将关系数据库中表的数据映射成对象.以对象的形式展现.这样开发者就能够把对数据库的操作转化为对这些对象的操作.Hibernate正是实现了这样的思想,达到了方便开发者以面向对象的思想来实现对数据库的操作.    Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java).映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.

数据库表设计原则

(1)不应针对整个系统进行数据库设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计:不同组件间所对应的数据库 表之间的关联应尽可能减少,如果不同组件间的表需要外键关联也尽量不要创建外键关联,而只是记录关联表的一个主键,确保组件对应的表之间的独立性,为系统 或表结构的重构提供可能性. (2)采用领域模型驱动的方式和自顶向下的思路进行数据库设计,首先分析系统业务,根据职责定义对象.对象要符合封装的特性,确保与职责相关的数据项被定 义在一个对象之内,这些数据项能够完