6.2.6 默认关联

如果表中的使用了外键关联(Foreign Key),则在映射实体关系时不需要作其它的设置,实体管理器将会默认映射外键所定义的两个表。

例如使用以下SQL语句创建表customer和表address

--客户表

CREATE TABLE  customer (

  id int(20) NOT NULL auto_increment,

  name varchar(100)  ,

  address_id int(20) ,

  PRIMARY KEY  (id)

)

--地址表

CREATE TABLE  address (

  id int(20) NOT NULL auto_increment,

  province varchar(50)  ,

  city varchar(50) ,

  postcode varchar(50) ,

  detail varchar(50) ,

  PRIMARY KEY  (id)

)

--创建外键

ALTER TABLE customer ADD CONSTRAINT fk_customer_address

   FOREIGN KEY (address_id) REFERENCES address (id);

 

这样,CustomerEO中的映射可以简化为以下代码所示。

@Entity

@Table(name = "customer")

public class CustomerEO implements java.io.Serializable {

         ……

         private AddressEO address;

 

         @OneToOne

         public AddressEO getAddress() {

                   return address;

         }

 

         public void setAddress(AddressEO address) {

                   this.address = address;

         }

}

使用外键利用的是数据库底层的机制,有利于数据的完整性。但使用外键减少了数据的灵活性,尤其是在数据库分开部署时,最好不要采用外键的方式。所以是否采用外键进行实体间关系的映射要视具体情况而定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值