本文为原创文章,转载请注明出处:

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中就应该把这些属性一一配置进去,如下:

    
        
            
                
        
        
    

上面的配置只是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> 

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

    <database-object></database-object>

    <!–使用该属性是hibernate在进行sql语句join等时用到:联合抓取–>

    <fetch-profile name=””></fetch-profile>

    <!–hibernate过滤器–>

    <filter-def name=””></filter-def>

    <!–允许自定义的id生成器实现的短命名–>

    <identifier-generator name=”” class=””/>

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

    <import class=””/>

    <!–定义一个连接子类–>

    <joined-subclass></joined-subclass>

    <!–meta属性说明该配置文件对应实体类的一些属性–>

    <meta attribute=””></meta>

    <!–query标签中可以直接写hql查询语句–>

    <query name=””></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>属性,其它属性视情况而定,不一定能用到。