Hibernate映射文件:hbm.xml:实现POJO(普通的Java对象)与DB表格的映射配置。虽然一个映射文件中可以配置多个POJO与数据库表的映射关系,但还是建议一个映射文件中只配置一个POJO与数据库表的映射关系。映射文件能够帮助 Hibernate 确定如何从该类中提取值,并将它们映射在表格和相关域中。
主体框架:
<?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="类名" table="表名">
<id name="属性" type="属性类型">
<column name="表中字段名"/>
<generator class="主键生成策略"/>
</id>
<property name="属性" type="属性类型">
<column name="表字段名"/>
</property>
</class>
1、映射内容的定义
</hibernate-mapping>
<hibernate-mapping package="JavaBean所在包的全路径">
</hibernate-mapping>
2、数据库与JavaBean的关联
<class name="JavaBean名称" table="对应数据库中的表名">
</class>
3、主键映射
<id name="数据库中主键在JavaBean中的属性名称" column="数据库中表的主键名" type="JavaBean中主键对象属性的类型">
<column name="数据库表中的主键字段名"/>
<!--主键生成策略-->
<generator class="主键映射方式"/>
</id>
4、普通字段映射
<property name="数据库中字段在JavaBean中的属性名称" column="数据库中的字段名" type="属性类型">
</property>
<property name="数据库中字段在JavaBean中的属性名称" column="数据库中的字段名" type="属性类型" not-null="true" >
</property>
5、一对多关系
<set name="java映射类中对应的属性" inverse="true" lazy="true">
<key column="表中对应字段"/>
<one-to-many class="多方的类"/>
</set>
many-to-one方式
<many-to-one name="java映射类中对应的属性" column="表中对应字段" class="类名" not-null="true" />
6、一对一关系
<!-- 其中主表的配置 -->
<one-to-one name="主表对象中子表对象的属性名" class="子表对象的类名"cascade="save-update"/>
<!-- 子表的配置 -->
<one-to-one name="子表对象中主表对象的属性名" class="主表对象的类名" constrained="true" />
7、多对多关系
<set name="java对象的属性名" table="表名" cascade="all" outer-join="false">
<key column="表的对应字段"/>
<many-to-many class="另一个表的对象类" column="另一个表的字段"/>
</set>
increment
increment策略是指,不使用数据库本地的自增长策略,而是由程序(Hibernate框架)产生一个自增长的ID值,赋予数据库.
每次插入前都会去查询表中id最大的值,然后+1作为新主键
hilo(了解)
高低位算法,主键自增,由hibernate来维护,开发时不使用.因为没有数据库同时不支持主键自增长或者则序列号
idenitty
identity策略,指定使用数据库里面的ID自增长策略. 只能用于支持ID自增长功能的数据库,如:MySQL,SQLServer.. 不支持没有ID自增长策略的数据库,如Oracle,DB2..
sequence
使用序列的实现ID生成策略,主要用于有序列的数据库.如:Oracle,DB2,如果不支持序列的数据库(如:MYSQL),该策略会使用一个表模拟序列。
native
使用数据库本地的策略,就是数据库里面使用怎么样的策略就用什么策略,HIbernate不做任何的判断.如:MySQL数据库使用了increment_auto,自增长策略.使用native.表示直接调用数据库里面的increment_auto策略.
uuid
就是数据库的主键是使用一个唯一的==字符串==的来存储.这个唯一的字符串就是UUID
主键必须为String类型
assigned
assigned策略,就是不使用主键生成策略,由手工输入ID.
原文:https://blog.csdn.net/kato_op/article/details/80296619