hibernate配置文件的属性总结
hibernate-mapping的属性
auto-import (可选 - 默认为 true): 指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。
package (可选): 指定一个包前缀,如果在映射文档中没有指定全限定的类名, 就使用这个作为包名。
class的属性
name (可选): 持久化类(或者接口)的Java全限定名。 如果这个属性不存在,Hibernate将假定这是一个非POJO的实体映射。
table (可选 - 默认是类的非全限定名): 对应的数据库表名。
discriminator-value (可选 - 默认和类名一样): 一个用于区分不同的子类的值,在多态行为时使用。它可以接受的值包括 null 和 not null。
dynamic-update (可选, 默认为 false): 指定用于UPDATE 的SQL将会在运行时动态生成,并且只更新那些改变过的字段。 //这样做性能可能会用问题
dynamic-insert (可选, 默认为 false): 指定用于INSERT的 SQL 将会在运行时动态生成,并且只包含那些非空值字段。
batch-size (可选,默认是1) 指定一个用于 根据标识符(identifier)抓取实例时使用的"batch size"(批次抓取数量)。
optimistic-lock(乐观锁定) (可选,默认是version): 决定乐观锁定的策略。 optimistic-lock="none|version|dirty|all"
lazy (可选): 通过设置lazy="false", 所有的延迟加载(Lazy fetching)功能将被全部禁用(disabled)。
id的属性
name (可选): 标识属性的名字。
column (可选 - 默认为属性名): 主键字段的名字。
type (可选): 标识Hibernate类型的名字。
generator的属性
<generator
创建的时候如果引用的对象没有创建的话就会创建
更新的时候如果修改引用对象的话,引用的对象本身也会修改
实体类的设计原则
1.实现一个默认的(即无参数的)构造方法(constructor)
2.提供一个标识属性(identifier property)(可选)
3.使用非final的类 (可选) 这样就不支持lazy,且必须通过设置lazy="false" 来明确地禁用代理。因为代理是继承这个类(User) 生成的,final的类是不能继承的
4.为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选)
hibernate.hbm2ddl.auto在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema.
取值 validate | update | create | create-drop
inverse="true"只用在一对多和多对多双向关连,用于反转hibernate对lazy支持只在session打开的时候有效