在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>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
sql-insert,sql-delete,sql-update 节点还拥有一个可选属性:callabel.如果此属性为true,则当前所定义的定点将被视为存储过程加以执行.
注意:Hibernate自定义持久化实现与Hibernate提供的内置支持配置文件是不一样的.自定义持久化实现的定义是在节点class内,而内置支持是与class节点同个级别的.
【编辑推荐】