Hibernate学习笔记(4):基本映射以及相关属性配置
hibernate基本映射
实体类--->表
实体类中的普通属性--->表字段
采用<class>标签映射成数据库表,通过<property>标签将普通属性映射成表字段
所谓普通属性指不包括自定义类,集合,数组等
属性值应该注意不能与数据库的关键字冲突,如果冲突必须重命名列名,否则出问题。表名也是。
实体类的设计原则:
1、实现一个默认的构造方法
2、提供一个标识属性(可选)
3、使用非final类(可选),因为不能继承和复写
4、为持久化字段声明访问器
hibernate-mapping标签的常用属性:
<hibernate-mapping
<!--(可选 - 默认为 true): 指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。 -->
auto-import="true|false"
<!--(可选): 指定一个包前缀,如果在映射文档中没有指定全限定的类名, 就使用这个作为包名。 -->
package="package.name"
/>
class标签的常用属性:
<class
<!--(可选): 持久化类(或者接口)的Java全限定名。 如果这个属性不存在,Hibernate将假定这是一个非POJO的实体映射。-->
name="ClassName"
<!-- (可选 - 默认是类名): 对应的数据库表名。 -->
table="tableName"
<!--(可选, 默认为 false):为true时只更新那些改变过的字段。 -->
dynamic-update="true|false"
/>
id标签的常用属性:
<id
<!--(可选): 标识属性的名字。如果 name属性不存在,会认为这个类没有标识属性。-->
name="propertyName"
<!--类型-->
type="typename"
<!--(可选 - 默认为name)主键字段的名字。 -->
column="column_name"
<!--主键的长度-->
length="L"
<generator class="generatorClass"/>
</id>
generator标签的常用属性:
<generator class="generatorClass"/>
常用的generatorClass:
native:自增,自动配置不同的数据库,由数据库自增,生成效率低,但是查找快
uuid:由Hibernate自动生成的字符串,生成效率高,但是查找慢
assigned 手动分配,必须设置id
property标签的常用属性:
<property
<!--实体类中的属性名-->
name="propertyName"
<!--指定列列名,默认为属性名-->
column="column_name"
<!--指定存储类型-->
type="typename"
<!--是否参与update和insert操作-->
update="true|false"
<!--是否使用唯一约束-->
unique="true|false"
<!--是否使用非空约束-->
not-null="true|false"
<!--指定字段长度-->
length="L"
/>