在配置Hibernate映射配置文件中遇到如下情況:
<hibernate-mapping package="com.hibernate.www"> <class name="User" table="t_user"> <id name="id" type="int" column="u_id"> <generator class="native"> </id> ......... </class></hibernate-mapping>對第四行的代碼不是很理解 后來查了點資料如下: Hibernate區分不同的持久化對象是依靠對象標識符(OID)來實現,而對象標識符則可以通過Hibernate內置的標識生成器來產生。(說白了就是Hibernate區分對象需要唯一的対像標識符,這個可以選用內置的對象生成器生成)
assigned:OID是由業務邏輯程序產生,Hibernate只負責持久化,常用于映射自然主鍵。hilo:OID有Hibernate按照high/low算法產生,該算法需要從數據庫的某個表的字段值讀取high值。increment:OID由Hibernate按遞增方式產生,該算法依賴保存于當前實例中的一個最大值變量。identidy:OID由底層數據庫的自增主鍵生成機制產生,如MySQL中的auto_increment類型主鍵與SQL Server的identity類型主鍵。sequence:OID由底層數據庫的sequence主鍵生成機制產生,如Oracel sequence。native:根據底層數據庫對OID的支持,具體選擇identity、sequence、hilo生成器來產生OID,常用于跨平臺應用。
在選用這些Hibernate內置的表示生成器時,應根據所選用的數據庫產品而定。如果數據庫為MySQL或SQL Server則優先考慮identity生成器,如果是Oracle則考慮sequence。如果是提高跨平臺性,則選用native生成器。
新聞熱點
疑難解答