EJB、Spring注解表关联
一般在使用框架或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、默认关联