本文为原创文章,转载请注明出处: http://www.pm-road.com/index.php/2014/11/14/193/

Hibernate是一个开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装, 也就是说之前操作数据库的表现在可以直接操作对应的对象类,而数据库的表和对象之间就应该有一定的映射关系,而这种映射关系大部分是采用了xml配置文件 的方式来进行一一匹配,接下来就详细讲解一下该配置文件。

一:hibernate配置文件和实体类一一对应

在生成一个配置文件的时候,一个配置文件对应一个实体类,而其中的属性也会一一对应,比如说:我有一个User.java实体类,那我就应该有一个 User.hbm.xml类,至于该配置文件的存储位置在哪,就要在hibernate的主配置文件中设置(在此不多讲,而User.hbm.xml这个 名称也不一定命名为User.hbm.xml,可以命名为Person.hbm.xml,这个接下来会讲)。

一个实体类对应一个配置文件类,同样,实体类中的属性也要和配置文件中的属性一一对应,比如说user.java的代码有如下属性:

public class User{
              private String userId;
              private String userName;
              private int userAge;
              private String userSex;
              //get  set 方法
              ……
   }


 

那么在配置文件User.hbm.xml中就应该把这些属性一一配置进去,如下:

<?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=”User” table=”T_User”>        <id name=”userId”>            <generator class=”assigned”/>        </id>        <property name=”userName”/>        <property name=”userAge“/>        <property name=”userSex“/>    </class></hibernate-mapping>


上面的配置只是hibernate实体映射的一部分,接下来详细讲解各属性。

二:hibernate 实体映射文件结构

hiberante 的实体映射文件其实就是一个xml文件,首先要在xml文件中引用<!DOCTYPE hibernate-mapping PUBLIC
 “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
 “http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd”> 这是固定写法。

然后写上根节点:<hibernate-mapping></hibernate-mapping>

此根节点下面总共有14个主体属性,每个主体属性下面又会有很多小的属性,分别如下:

    <!–主要用到的主体属性,表示和哪一个实体类进行匹配–>
    <class name=”” table=””></class> class标签详细介绍

    <!–使用该属性可以声明hibernate如何创建、生成数据库–>

    <database-object></database-object> database-object标签详细介绍

    <!–使用该属性是hibernate在进行sql语句join等时用到:联合抓取–>
    <fetch-profile name=””></fetch-profile>

    <!–hibernate过滤器–>
    <filter-def name=””></filter-def>filter-def标签详细介绍

    <!–允许自定义的id生成器实现的短命名–>
    <identifier-generator name=”” class=””/>

    <!–导入java包,class指向该配置文件所对应实体类的包名,与class属性中的name有关联–>
    <import class=””/>

    <!–定义一个连接子类–>
    <joined-subclass></joined-subclass>joined-subclass标签详细介绍

    <!–meta属性说明该配置文件对应实体类的一些属性–>
    <meta attribute=””></meta>meta标签详细介绍

    <!–query标签中可以直接写hql查询语句–>
    <query name=””></query>query标签详细介绍

    <!–resultset 定义了一个命名sql的返回结果-->
    <resultset name=””></resultset>

     <!–sql-query标签中可以直接写sql查询语句–>
    <sql-query name=””></sql-query>

    <!–子类–>
    <subclass></subclass>

     <!–定义新的Hibernate数据类型–>
    <typedef name=”” class=””></typedef>

    <!–定义一个联合子类–>
    <union-subclass></union-subclass>

上面的14个属性就是hibernate实体映射文件的大体结构,而其中主要用到了<class name=”” table=””></class>属性,其它属性视情况而定,不一定能用到。