標籤:hibernate 架構 基本映射 設定檔 orm
關聯映射:將關聯關係(在物件模型中就是一個或多個引用)映射到資料庫中
關係屬性:在記憶體中建立兩個對象之間的關係
雙向關係:在關聯性物件中都能找到對方
單項關係:只在關係的一方能找到另一方
實體類設計原則:
1、實現無參建構函式(Hibernate要調用)
2、提供一個標識(用於唯一標識該對象,映射資料庫主鍵)
3、建議不用final修飾實體類(Hibernate實現消極式載入使用CGLIB代理時會繼承實體類)
4、建議為實體類屬性產生getter、setter方法(Hibernate預設屬性訪問器)
若實體類名或實體類中屬性名稱與資料庫關鍵字重複,將會出現問題;可考慮採用table屬性和column屬性對其進行重新命名
<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="org.app.model" auto-import="true"> <!-- 實體類映射成表 --> <class name="User" table="t_user"dynamic-insert="false" dynamic-update="false"> <!-- 映射主鍵id --> <idname="id" column="user_id"access="" length=""type=""> <!-- <generatorclass="increment" /> --> <generatorclass="sequence"> <paramname="sequence">user_seq</param> </generator> </id> <!-- 映射普通屬性 --> <!-- 普通屬性(非集合、自訂類、資料等)映射成表欄位 --> <propertyname="name" column="user_name"length="30" type="string" unique="false" not-null="true"access="field" insert="true"update="true" /> <propertyname="password" /> <propertyname="createTime" /> <propertyname="expireTime" type="date" /> <!-- 映射關係屬性 --> </class></hibernate-mapping>
public class Company { private Integer id; private String name; private Address address; // setter、getter方法 // 在記憶體中建立對象關係 public void addRelation(Address address) { this.address = address; address.setCompany(this); } // 在記憶體中解除對象的關係 public void deleteRelation(Address address) { this.address = null; address.setCompany(null); }}
Hibernate-----基本映射(對應檔方式)