5.1.2. hibernate-mapping
这个元素包括一些可选的属性。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
。