Hibernate 單向一對多映射
單向 n-1:
單向 n-1 關(guān)聯(lián)只需從 n 的一段訪問 1 的一端
此處 Order 類和 Customer 類,其中 Order 類需要引用 Customer 類
代碼:
public class Customer { private Integer id; private String customerName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } }
public class Order { private Integer id; private String OrderName; private Customer customer; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getOrderName() { return OrderName; } public void setOrderName(String orderName) { OrderName = orderName; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } }
<hibernate-mapping> <class name="com.hibernate.entities.n21.Customer" table="CUSTOMERS"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <property name="customerName" type="java.lang.String"> <column name="CUSTOMER_NAME" /> </property> </class> </hibernate-mapping>
<hibernate-mapping package="com.hibernate.entities.n21"> <class name="Order" table="ORDERS"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <property name="OrderName" type="java.lang.String"> <column name="ORDER_NAME" /> </property> <many-to-one name="customer" class="Customer" fetch="select"> <column name="CUSTOMER_ID" /> </many-to-one> </class> </hibernate-mapping>
在 Order 的 hbm 配置文件中,使用了 <many-to-one> 的標(biāo)簽關(guān)聯(lián)了 Customer 類
其中 name 表示 Order 類中該屬性的屬性名
class 表示關(guān)聯(lián)的類的類名
fetch 表示加載時(shí)的方式,join 表示從數(shù)據(jù)庫獲取 Order 類時(shí),會(huì)一起把 Order 所關(guān)聯(lián)的 Customer 一同加載到 session 緩存中,而 select 表示加載 Order 時(shí),不加載所關(guān)聯(lián)的Customer,只有當(dāng)使用 customer 屬性時(shí),再加載到緩存中,Hibernate 默認(rèn)值為 join
當(dāng) customer 的一個(gè)對象被 order 對象引用時(shí),不能在數(shù)據(jù)庫中刪除 customer,因?yàn)?order 數(shù)據(jù)表中有外鍵指向 customer 表
精誠所至,金石為開。

浙公網(wǎng)安備 33010602011771號(hào)