Hibernate的映射文件的hbm.xml的配置方法
1、在eclipse中创建xml文件
2、引入xml文件的头文件
<?xml version="1.0" encoding="UTF-8"?>
3、引入hibernate的映射文件的约束
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
4、书写hibernate的映射配置
1、hibernate的映射内容都在<hibernate-mapping></hibernate-mapping>里并且可以在<hibernate-mapping package=””>里配置所在包。
2、Hibernate的映射文件主要就是为了不用操作数据库,直接操作该类中的属性即可。所以必须让数据库表里的字段和类中的成员变量相对应。当然映射文件本身就属于类内容所以第二部就是书写<class> </class>
其中class包含两个属性:
<class name="Users" table="t_user">
name是pojo类名,table是所对应的数据库表名。
3、除此之外,数据库表中都有个主键,这里也需要指定,就建立一个<id></id>包含内容有指明数据库表和对应类中的主键,还有主键的生成策略在<class></class>内包含。
<id name="id" column="id" type="int" length="11">
这个就是配置主键的,其中name是类中的,column对应的是数据库表中的。此外还写了id的类型,和长度。
然后就是主键生成策略的配置了
<generator class="increment"></generator>
主键生成策略有uuid,assgiend,sequence,和increment里面的区别可以在网上查查。
此时的情况是这样的
<hibernate-mapping>
<class>
<id>
</id>
</class>
</hibernate-mapping>
4、在<class>包含中还有一个<property></property>
大家这样想,表有对应的了,主键有对应的了,但是表中的各个字段还没对应啊。
<property name="username" column="username" type="java.lang.String"
length="20"></property>
<property >包含两个属性,name表示类中的成员变量column表示对应的数据库表中的相对应的字段名。剩下的就是hibernate对应的type类型,和字段长度
5、然后就是一对多和多对一的映射配置。
这是hibernate的关系映射包含一对多,多对一,多对多
一个老师可以教多个学生这是一对多
多个学生可以被一个老师教这是多对一
一个项目可以由多个开发人员参与完成,一个开发人员可以参与多个项目。这是多对多。
下面是一个客户有多个联系人一对多的配置方法
那么首先看一对多的写法,当然在<class></class>包含内
这是一对多的写法
此外还要在一方配置set属性,
总结一下就是:首先在一方中配置set属性
然后在映射文件中配置相应的set配置。
6、下面是多对一的写法(多个联系人对应一个客户)
首先在联系人的类中配置相应的属性。
其次在多方的映射文件中配置set配置(联系人)
一、一固定,添加多的
配置cascade=”save-update”
删除客户时有外键约束怎么办,采用hibernate的级联删除方法。
配置cascade=”delete”
由此可见:
1、配置多对一和一对多,这个是相互的,既然有一对多就有多对一,两边都要配置。
2、先写pojo层,的成员变量配置。
3、在到相对应的映射文件里书写set配置。
6、多对多的配置:
一个用户拥有多个角色
一个角色下边有多个用户
用户和角色多对多关系,单独创建一个关系表记录用户拥有什么角色。
创建sys_user、sys_role、sys_user_role三张表
配置多对多在类中用户方需要配置:
Hbm.xml配置
然后就是角色方类的配置:
Hbm.xml配置:
就这些吧初次总结,第一次总结hibernate映射配置。希望不要乱喷,谢谢大家。
最后总结一下整个hbm.xml的大致样子
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name=”” table=””>
<id>
<gererator />
</id>
<property></property>
<set>
<key></key>
<one-to-many/>
</set>
<many-to-one></many-to-one>
</class>
</hibernate-mapping>