本文为原创文章,转载请注明出处: 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>属性,其它属性视情况而定,不一定能用到。