Hibernate中在xxx.hbm.xml文件中控制insert和update语句

Hibernate中在xxx.hbm.xml文件中控制insert和update语句

1.hibernate在初始化阶段,就会根据映射文件的映射信息,为所有的持久化类预定义一下SQL语句:

A)Insert语句,如Order类的insert语句

insert intoORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(?,?,?,?)

B)Update语句,如Order类的update语句

update ORDERS set ORDER_NUMBER=?,PRICE=?,CUSTOMER_ID=?,where ID=?

C)Delete语句,如Order类的delete语句

Delete from ORDER where ID=?

D)根据OID来从数据库加载持久化实例的select语句,如Order类的select语句

Select ID,ORDER_NUMBER,PRICE,CUSTOMER_ID from ORDERS whereID=?

(HQL或者QBC查询对应的select语句是在执行该代码时才动态生成的)

说明如下:

这些SQL语句都存放在SessionFactory的内置缓存中,当执行Session的save()方法,update()方法,delete()方法,load()方法和get()方法时,将从缓存中找到相应的预定义的SQL语句,再把具体的参数值绑定到该SQL语句中

其中元素的dynamic-insert属性和dynamic-update属性,如果设置为true,则表示当保存一个对象或者更新一个对象时,会动态生成insert和update语句,insert和update语句仅包含所有取值需要更新的字段,默认值为false。Hibernate生成动态的SQL语句的系统开销很小,因此不会影响应用的运行性能,如果表中包含很多地段,在insert和update语句中就只包含需要插入或更新的字段,这样可以节省数据库执行SQL语句的时间,从而提高应用的运行性能

 

你可能感兴趣的:(Hibernate)