这个元素包括一些可选的属性。schema
和catalog
属性, 指明了这个映射所连接(refer)的表所在的schema和/或catalog名称。 假若指定了这个属性,表名会加上所指定的schema和catalog的名字扩展为全限定名。假若没有指定,表名就不会使用全限定名。 default-cascade
指定了未明确注明cascade
属性的Java属性和 集合类Hibernate会采取什么样的默认级联风格。auto-import
属性默认让我们在查询语言中可以使用 非全限定名的类名。
<hibernate-mapping schema="schemaName" catalog="catalogName" default-cascade="cascade_style" default-access="field|property|ClassName" default-lazy="true|false" auto-import="true|false" package="package.name" />
schema
(可选): 数据库schema的名称。
catalog
(可选): 数据库catalog的名称。
default-cascade
(可选 - 默认为none
): 默认的级联风格。
default-access
(可选 - 默认为property
): Hibernate用来访问所有属性的策略。可以通过实现PropertyAccessor
接口 自定义。
default-lazy
(可选 - 默认为true
): 指定了未明确注明lazy
属性的Java属性和集合类, Hibernate会采取什么样的默认加载风格。
auto-import
(可选 - 默认为true
): 指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。
package
(可选): 指定一个包前缀,如果在映射文档中没有指定全限定的类名, 就使用这个作为包名。假若你有两个持久化类,它们的非全限定名是一样的(就是两个类的名字一样,所在的包不一样--译者注), 你应该设置
auto-import="false"
。如果你把一个“import过”的名字同时对应两个类, Hibernate会抛出一个异常。注意
hibernate-mapping
元素允许你嵌套多个如上所示的<class>
映射。但是最好的做法(也许一些工具需要的)是一个 持久化类(或一个类的继承层次)对应一个映射文件,并以持久化的超类名称命名,例如:Cat.hbm.xml
,Dog.hbm.xml
,或者如果使用继承,Animal.hbm.xml
。