hibernate 的class元素详解

  <class

注意的是class元素的属性都是可选的,

name="com.dwtj.model.PrenticeMsg"

name属性用于指定持久化类或接口的java全路径名,如果再hibernate元素中已经指定了package属性的值,则该属性可以只定义类或接口的名称。当改属性的值为一个接口类时,可以用<subclass>来指定该接口的实际类。

  table=""

table属性用于指定持久化类所对应的数据库表名,如果不对该属性进行设置,则其默认值为class属性所定义的包括包路径。

  discriminator-value=""

一个用于区分不同子类的值。

  mutable="true"

mutable属性用于设置该持久化类的示例是否可变,默认值是可变的即是可以被更改或者删除的。如果将该属性设置为false,则该持久化类的示例不可以被应用程序更新或者删除。

即对一个对象只能查询不能将修改过的对象持久化到数据库中,而且也不能将持久化的对象删除。如果对对象进行修改或者删除,则hibernate将抛出异常,这个属性用于应用程序中某些固定不变的数据。

  schema=""
  catalog=""
  proxy=""

  dynamic-update="false"

  dynamic-insert="false"

dynamic-update属性用于指定update语句是否在运行时生成,并且只更新那些修改过的字段,其默认值为false。即不动态生成Update语句,执行更新操作时将更新所有字段。dynamic-insert用于指定insert语句是否会在运行时动态生成,并且只插入那些不能为空的字段,其默认值是false,即不动态生成insert语句,执行插入操作的时候将插入所有的字段。例如,当表的字段较多的时候,建议把dynamic-update和dynamic-insert属性的值设置为true,这样在insert和update的时候就只需插入或更新的字段,这样可以节省数据库执行SQL语句的时间,从而提高应用的性能。需要注意的是这两个属性不会被子类继承。因此需要在子类重新设置。



  select-before-update="false"

指定hibernate除非确定对象的确被修改了,不会执行SQL UPDATE操作。在特定场合(实际上,只会发生在一个临时对象关联到一个新的session中去,执行update()的时候),这说明hibernate会在update之前执行一次额外的SQLSELECT操作,来决定是否应该进行UPDATE

  polymorphism="implicit"

polymorphism属性用于指定是隐式还是显式的使用查询多态。

隐式的多态指的是,如果查询的时给出的是任何超类、该类实现的接口或该类的名字。都会返回这个类的实例,如果查询中给出的是子类的名字,则会返回子类的示例。例如Animal类是一个超类,其子类Cat类和Dog类,那么执行查询set new Animal(参数列表),将得到所有的Cat类和Dog类的实例,而执行set new Cat(参数列表) ,则将得到所有的Cat类的示例。


 显示的多态则只能在明确给出类名的前提下才返回该类的示例,同时只有在这个<class>的定义中作为<subclass>或者<joined-subclass>出现的子类,才会可能被返回,也就是显式的多态只能查询。

  where=""

指定一个附加的SQLWHERE条件,在抓取这个类的对象时会一直增加这个条件。

  persister=""

  batch-size=""

指定一个用于根据标志抓取示例时使用的“batch size”

  optimistic-lock="version"

决定乐观锁的策略。

  lazy="true"
  >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值