淺析Hibernate自定義持久化實現
在Hibernate3中,我們可以對實體的insert,update,delete操作進行定義,而無需完全依賴Hibernate提供的自動化操作接口.
對應Hibernate自定義持久化實現機制,配置文件中引入了以下3個新的節點定義:sql-insert,sql-update與sql-delete.通過這3個節點,我們可以直接指定用于實體insert,update,delete操作的SQL語句,從而避免了Hibernate自生成SQL所帶來的局限.
對于Item映射,在Hibernate自定義持久化實現中,我們可以如下定義:
- <hibernate-mapping package="com.hpjianhua.hibernate.model">
- <class name="Item" table="t_items">
- <id name="itemNo">
- <generator class="assigned"/>
- </id>
- <property name="itemName" not-null="true"/>
- <property name="spec"/>
- <property name="pattern"/>
- <many-to-one name="category"/>
- <many-to-one name="unit"/>
- <sql-insert>
- INSERT INTO T_ITEM(ID,NAME,AGE) VALUES(?,?,?)
- </sql-insert>
- <sql-update>
- UPDATE T_ITEM SET NAME=?,AGE=? WHERE ID=?
- </sql-update>
- <sql-delete>
- DELETE FROM T_ITEM WHERE ID=?
- </sql-delete>
- </class>
- </hibernate-mapping>
sql-insert,sql-delete,sql-update 節點還擁有一個可選屬性:callabel.如果此屬性為true,則當前所定義的定點將被視為存儲過程加以執行.
注意:Hibernate自定義持久化實現與Hibernate提供的內置支持配置文件是不一樣的.自定義持久化實現的定義是在節點class內,而內置支持是與class節點同個級別的.
【編輯推薦】