一般在使用框架或EJB的时候,需要实体对对应表关联的映射 在抛开配置文件的时候就需要注解来解决映射关系了
表关系大概上分单向、双向关联,细致的又分为一对一、一对多、多对一、多对多这些具体的关联。
一对一
单向:
在默认的情况下,关联的实体的主键一般是用来做外键的,如果不用主键作为外键的话可关联其他属性,需要为JoinColumn添加referencedColumnName=“字段名“
@OneToOne
@JoinColumn
public Org getOrg(){
return org;
}
双向关联(Bidirectional)
1、两个有关联的表在实体映射时都需要配置@OneToOne,就是在单向关系映射的情况下在另外一个表也要加注解配置
@Entity
@Table(name=”address")
public class Address implements java.io.Serializable{
……………………
private Customer customer;
@OneToOne(mappedBy="address")
public Custome getCoustomer(){}
}
@Entity
@Table(name="customer")
public class Customer implements java.io.Serializable{
……
private Address address;
@OneToOne(cascade={})
@JoinColumn(name="address_id")
public Address getAddress(){
}
}
http://blog.sina.com.cn/s/blog_605f5b4f0100hgxd.html 有不懂mappedBy属性的可参考
2、双向一对一EJB还有另外一种就是主键关联
需要加上@PrimaryKeyJoinColumn注解配置
3、默认关联就是外键关联了 这样只需要一个@OneToOne就可以了
总体来说,在确认表关系后根据设计有三种选择
1、外键关联
2、主键关联
3、字段关联
然后再根据主从关系配置mappedby属性
一对多
单向:
一对多是系统中常常出现的实体关系,比如说:员工&部门、学生&班级、专业&学校等等实例。在EJB、Hibernate、SpringMVC中都是由@OneToMany表示
通常有三种策略去映射这种单向一对多的关系:1、外键关联 2、表关联 3、默认关联