前言
说一说Hibernate映射文件的作用并解析。
先说一下Hibernate映射文件与Hibernate配置文件的关系:
xxx.hbm.xml文件解析
映射文件的作用
映射文件(xxx.hbm.xml)用来把PO(也就是要持久化到数据库的类?)与数据库中的数据表、PO之间的关系与数据表之间的关系,以及PO的属性与表字段一一映射起来,它是Hibernate的核心文件。
PO
PO:Persistent Objects,即持久化对象,它可以是普通的JavaBean,惟一特殊的是它们与(仅一个)Session相关联。JavaBean在Hibernate中存在三种状态:临时状态(transient)、持久化状态(persistent)和脱管状态(detached)。当一个JavaBean对象在内存中孤立存在不与数据库中的数据有任何关联关系时,那么这个JavaBean对象就称为临时对象(TransientObject);当它与一个Session相关联时,就变成持久化对象(Persistent Object);在这个Session被关闭的同时,这个对象也会脱离持久化状态,变成脱管对象(Detached Object),可以被应用程序的任何层自由使用,例如,可用做与表示层打交道的数据传输对象(Data transfer Object)。
参考资料
http://blog.csdn.net/u010955843/article/details/47903881
具体解析
大体内容
映射文件大体包含了一下内容:
要映射(要持久化的)类的路径、要持久化到的表和数据库、数据表的字段信息(字段名、字段类型、字段长度)等,将它们即持久化类与数据库表建立一一映射,这说明映射文档是按照持久化类的定义来创建的,而不是表的定义。
解析
粘一段代码:
<?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">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
<hibernate-mapping>
<!--class name:持久化类的路径
table:对应数据库表名
schema:数据库schema的名称
-->
<class name="cn.edu.sdut.softlab.Person" table="person" schema="hibernate">
<!--column:数据库表的主键这段的名字
name:持久化类的标识属性的名字
type:标识Hibernate类型的名字
-->
<id name="id" type="java.lang.String">
<column name="ID" length="32" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="20" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="20" not-null="true" />
</property>
<property name="sex" type="java.lang.String">
<column name="SEX" length="20" />
</property>
<property name="email" type="java.lang.String">
<column name="EMAIL" length="30" />
</property>
</class>
</hibernate-mapping>
参考资料
http://blog.163.com/hzd_love/blog/static/13199988120108265317988/
总结
映射文件与配置文件的关系。