您的位置:首页 > 其它

Hibernate配置详解 --POJO映射文件 – 类映射

2013-03-18 13:45 288 查看
POJO映射文件–类映射

<class
     name=“POJO的类全路径” 
     table=“对应的库表名”
     discriminator-value=“discriminator_value”

     dynamic-update=“true | false”
     dynamic-insert=“true | false”
     select-before-update=“true | false”

     polymorphism=“implicit | explicit” 

     where=“查询时使用的SQL的条件子句”
     lazy=“true | false”
/>

Name:POJO的类的全路径。本项一定要配置。
Table:POJO对应的库表名。本项一定要配置。
select-before-update:是否在执行update时发送一条select语句查询对象是否被修改过,只有修改过时,update语句才会真的被执行。本项可以不配置。默认为false。

dynamic-update:更新SQL是否动态生成。为false时,每次更新都会将POJO的所有属性更新到DB;为true时,只更新POJO中修改过的属性。本项可以不配置。如果select-before-update=“false”,则dynamic-update 失效,变成静态update。

dynamic-insert:插入SQL是否动态生成。为false时,每次插入都会将POJO的所有属性插入到DB;为true时,只插入POJO中非空的属性。本项可以不配置。默认为false。

Lazy:设置延迟加载策略。本项可以不配置。

 
select-before-update效果演示

   1用session的update方法更新一个对象

      查看Hibernate控制台上是否只打印了一条update语句

   2将select-before-update设为true,再次执行上述更新

      查看Hibernate控制台上,在打印update语句之前,是否先打印了一条select语句(是否真的在执行更新之前进行了查询)

   3保持select-before-update设为true,创造一个对象,且它的要更新的所有属性的值与数据库里对应字段的值相同,用update语句更新这个对象

      查看控制台上是否打印select和update语句(是否因为查询到更新后的数据和更新前的数据相同,而没有执行update动作)

   4如果将select-before-update设为false,再次执行上述操作

     查看控制台上是否打印select和update语句(是否因为取消了select-before-update,导致没有判断数据是否有差异,直接执行更新动作)

 
dynamic-insert效果演示

    1创造一个POJO实例,将它的部分属性设为和数据库里对应字段的值相同,然后用session的update方法将它插入到数据库

       查看Hibernate控制台上打印的update语句(是否更新了所有属性对应的字段)

    2将dynamic-update设为true,再次执行上述插入

       查看Hibernate控制台上打印的update语句(是否没有更新值和数据库里对应字段相同的属性对应的字段)

    3将dynamic-update设为false,再看看效果

 

POJO映射文件实例–类映射

<class
   name=“a.b.Student”
   table=“STUDENT_LIST”
   discriminator-value=“a.b.Student”
   dynamic-update=“true”
   dynamic-insert=“true”
   select-before-update=“true”
   polymorphism=“implicit”
   where=“age < 18”
   lazy=“true”
/>

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  POJO