淺析Hibernate自定義持久化實(shí)現(xiàn)
在Hibernate3中,我們可以對(duì)實(shí)體的insert,update,delete操作進(jìn)行定義,而無(wú)需完全依賴Hibernate提供的自動(dòng)化操作接口.
對(duì)應(yīng)Hibernate自定義持久化實(shí)現(xiàn)機(jī)制,配置文件中引入了以下3個(gè)新的節(jié)點(diǎn)定義:sql-insert,sql-update與sql-delete.通過(guò)這3個(gè)節(jié)點(diǎn),我們可以直接指定用于實(shí)體insert,update,delete操作的SQL語(yǔ)句,從而避免了Hibernate自生成SQL所帶來(lái)的局限.
對(duì)于Item映射,在Hibernate自定義持久化實(shí)現(xiàn)中,我們可以如下定義:
- <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 節(jié)點(diǎn)還擁有一個(gè)可選屬性:callabel.如果此屬性為true,則當(dāng)前所定義的定點(diǎn)將被視為存儲(chǔ)過(guò)程加以執(zhí)行.
注意:Hibernate自定義持久化實(shí)現(xiàn)與Hibernate提供的內(nèi)置支持配置文件是不一樣的.自定義持久化實(shí)現(xiàn)的定義是在節(jié)點(diǎn)class內(nèi),而內(nèi)置支持是與class節(jié)點(diǎn)同個(gè)級(jí)別的.
【編輯推薦】






















