SSH与SSM学习之hibernate02——ORM配置详解
一、我们的ORM配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.qwm.hilbernate01.User">
<id name="id">
<!--id自增-->
<generator class="increment"></generator>
</id>
<property name="name"/>
<property name="age"/>
</class>
</hibernate-mapping>
二、根元素
<!-- 配置表与实体对象的关系 -->
<!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简答类名了. -->
<hibernate-mapping package="com.qwm.hilbernate01">
....
</hibernate-mapping>
原来的配置文件就可以改为
....
<!-- 配置表与实体对象的关系 -->
<!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简答类名了. -->
<hibernate-mapping package="com.qwm.hilbernate01">
<class name="User">
.....
</class>
</hibernate-mapping>
三、class元素
<!--
class元素: 配置实体与表的对应关系的
name: 完整类名
table:数据库表名
-->
<class name="User" table="tb_user1">
....
</class>
四、id元素
<!--
id元素:配置主键映射的属性
name: 填写主键对应属性名(类中的属性)
column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<id name="id">
<!--id自增-->
<!-- generator:主键生成策略 -->
<generator class="increment"></generator>
</id>
五、主键生成策略
<!--
id元素:配置主键映射的属性
name: 填写主键对应属性名(类中的属性)
column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<id name="id">
<!--id自增-->
<!-- generator:主键生成策略 -->
<!-- generator:主键生成策略.就是每条记录录入时,主键的生成规则.(7个)
identity : 主键自增.由数据库来维护主键值.录入时不需要指定主键.
sequence: Oracle中的主键生成策略.
increment: 主键自增.由hibernate来维护.每次插入前会先查询表中id最大值.+1作为新主键值.
hilo: 高低位算法.主键自增.由hibernate来维护.开发时不使用.
native: hilo+sequence+identity 自动三选一策略.
uuid: 产生随机字符串作为主键. 主键类型必须为string 类型.
assigned: 自然主键生成策略. hibernate不会管理主键值.由开发人员自己录入.
-->
<generator class="increment"></generator>
</id>
六、property元素
<!--
property元素:除id之外的普通属性映射
name: 填写属性名
column(可选): 填写列名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<property name="name"/>
七、完整的配置说明
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表与实体对象的关系 -->
<!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简答类名了. -->
<hibernate-mapping package="com.qwm.hilbernate01">
<!--
class元素: 配置实体与表的对应关系的
name: 完整类名
table:数据库表名
-->
<class name="User" table="tb_user1">
<!--
id元素:配置主键映射的属性
name: 填写主键对应属性名(类中的属性)
column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<id name="id">
<!--id自增-->
<!-- generator:主键生成策略 -->
<!-- generator:主键生成策略.就是每条记录录入时,主键的生成规则.(7个)
identity : 主键自增.由数据库来维护主键值.录入时不需要指定主键.
sequence: Oracle中的主键生成策略.
increment: 主键自增.由hibernate来维护.每次插入前会先查询表中id最大值.+1作为新主键值.
hilo: 高低位算法.主键自增.由hibernate来维护.开发时不使用.
native: hilo+sequence+identity 自动三选一策略.
uuid: 产生随机字符串作为主键. 主键类型必须为string 类型.
assigned: 自然主键生成策略. hibernate不会管理主键值.由开发人员自己录入.
-->
<generator class="increment"></generator>
</id>
<!-- property元素:除id之外的普通属性映射
name: 填写属性名
column(可选): 填写列名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<property name="name"/>
<property name="age"/>
</class>
</hibernate-mapping>