1. 程式人生 > >Hibernate 與 Mybatis 對映關係

Hibernate 與 Mybatis 對映關係

一 OneToMany

一對多可以存在兩種對映實現:外來鍵關聯或表關聯。

create table customer (
  id int(20) not null auto_increment,
  name varchar(100),
  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),
  customer_id int
(20), primary key (id) )

1 外來鍵對映:

@Entity
@Table(name="customer")
public class CustomerEO implements java.io.Serializable {
  @OneToMany(cascade={ CascadeType.ALL })
  @JoinColumn(name="customer_id")
  private Collection<AddressEO> addresses = new ArrayList<AddressEO>();
...
}

外來鍵定義在多的一方,也就是address表中.

2 表對映

@Entity
@Table(name = "customer")
public class CustomerEO implements java.io.Serializable {
  ...
  @OneToMany(cascade = { CascadeType.ALL })
  @JoinTable(name="ref_customer_address",
           joinColumns={ @JoinColumn(name="customer_id",referencedColumnName="id")},
           inverseJoinColumns={@JoinColumn
(name="address_id",referencedColumnName="id")}) private Collection<AddressEO> addresses = new ArrayList<AddressEO>(); ... }

二 ManyToMany

多對多, 不贅述。

三 Mybatis 的對映關係

參考:https://www.yiibai.com/mybatis/
mybatis 是將物件與SQL語句進行對映,而對於複雜的對映關係,更適合在XML檔案中進行定義。
對映關係的組建離不開ResultMap標籤。
而對於一對多,多對一,多對多關係的定義利用了關鍵字:Collection , Association標籤。