对象关系的映射是用一个XML文档来说明的。映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等。下面从一个映射的例子开始讲解映射元素,映射文件的代码如下:

<?xml version="1.0"?>

<!--

所有的XML映射文件都需要定义如下所示的DOCTYPE。

Hibernate会先在它的类路径(classptah)中搜索DTD文件。

-->

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--

hibernate-mapping有几个可选的属性:

schema属性指明了这个映射的表所在的schema名称。

default-cascade属性指定了默认的级联风格 可取值有 none、save、update。

auto-import属性默认让我们在查询语言中可以使用非全限定名的类名 可取值有 true、false。

package属性指定一个包前缀。

-->

<hibernate-mapping schema="schemaName" default-cascade="none" 

auto-import="true" package="test">

<!--用class元素来定义一个持久化类 -->

<class name="People" table="person">

<!-- id元素定义了属性到数据库表主键字段的映射。-->

<id name="id">

<!-- 用来为该持久化类的实例生成唯一的标识 -->

<generator class="native"/>

</id>

<!-- discriminator识别器 是一种定义继承关系的映射方法-->

<discriminator column="subclass" type="character"/>

<!-- property元素为类声明了一个持久化的,JavaBean风格的属性-->

<property name="name" type="string">

<column name="name" length="64" not-null="true" />

</property>

<property name="sex"

not-null="true" 

update="false"/>

<!--多对一映射关系-->

<many-to-one name="friend"

column="friend_id"

update="false"/>

<!--设置关联关系-->

<set name="friends" inverse="true" order-by="id">

<key column="friend_id"/>

<!—一对多映射-->

<one-to-many class="Cat"/>

</set>

</class>

</hibernate-mapping>

组件应用的方法

  组件有两种类型,即组件(component)和动态组件(dynamic-component)。在配置文件中,component元素为子对象的元素与父类对应表的字段建立起映射关系。然后组件可以声明它们自己的属性、组件或者集合。component元素的定义如下所示:

<component name="propertyName" class="className" insert="true|false" 

upate="true|false" access="field|property|ClassName"> 

<property ...../>

<many-to-one .... />

........

</component> 

在这段代码中,name是指属性名,class是类的名字,insert指的是被映射的字段是否出现在SQL的INSERT语句中,upate指出被映射的字段是否出现在SQL的UPDATE语句中,access指出访问属性的策略。

  Hiebernate的基本配置

  Hibernate的数据库连接信息是从配置文件中加载的。Hibernate的配置文件有两种形式:一种是XML格式的文件,一种是properties属性文件。properties形式的配置文件默认文件名是hibernate.properties,一个properties形式的配置文件内容如下所示:

#指定数据库使用的驱动类

hibernate.connection.driver_class = com.mysql.jdbc.Driver r

#指定数据库连接串

hibernate.connection.url = jdbc:mysql://localhost:3306/db

#指定数据库连接的用户名

hibernate.connection.username = user

#指定数据库连接的密码

hibernate.connection.password = password

#指定数据库使用的方言

hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect

#指定是否打印SQL语句

hibernate.show_sql=true 

在配置文件中包含了一系列属性的配置,Hibernate将根据这些属性来连接数据库。

  在XML格式的配置文件中,除了基本的Hibernate配置信息,还可以指定具体的持久化类的映射文件,这可以避免将持久化类的配置文件硬编码在程序中。XML格式的配置文件的默认文件名为hibernate.cfg.xml,一个XML配置文件的示例如下所示:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<!--显示执行的SQL语句-->

<property name="show_sql">true</property>

<!--连接字符串-->

<property name="connection.url">jdbc:mysql://localhost:3306/STU</property>

<!--连接数据库的用户名-->

<property name="connection.username">root</property>

<!--数据库用户密码-->

<property name="connection.password">root</property>

<!--数据库驱动-->

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<!--选择使用的方言-->

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!--映射文件 -->

<mapping resource="com/stuman/domain/Admin.hbm.xml" />

<!--映射文件-->

<mapping resource="com/stuman/domain/Student.hbm.xml" />

</session-factory>

</hibernate-configuration> 

properties形式的配置文件和XML格式的配置文件可以同时使用。当同时使用两种类型的配置文件时,XML配置文件中的设置会覆盖properties配置文件的相同的属性。

Hibernate的映射文件配置的更多相关文章

  1. Hibernate之深入Hibernate的映射文件

    这周周末 要把hibernate的映射文件搞定 .. 1.映射文件的主结构 主要结构  :根元素为<hibernate-mapping ></hibernate-mapping> ...

  2. 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap

    上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...

  3. 咱就入个门之NHibernate映射文件配置(二)

    上一篇主要介绍了NHibernate映射文件的基础配置,这篇我们介绍下NHibernate的一对多及多对一配置(文中我直接使用双向关联,即一和多两端都配置,开发中可以只使用一端),同时略带介绍下NHi ...

  4. 咱就入个门之NHibernate映射文件配置(一)

    之前写了数据库连接配置,这次说说映射文件的配置,即表映射[ORM的核心就是此啦!]. 下面我们使用最原始的手动配置hbm.xml文件. 步骤: 1.添加People类 namespace NHiber ...

  5. 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap good

    上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...

  6. 使用oracle数据库和MySQL数据库时hibernate的映射文件.hbm.xml的不同

    假设是使用oracle数据库.那么hibernate的映射文件.hbm.xml例如以下: <id name="xuehao" column="xuehao" ...

  7. 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap[转]

    上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...

  8. 深入浅出Mybatis系列八-mapper映射文件配置之select、resultMap

    注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之inse ...

  9. Hibernate的映射文件

    映射文件的结构和属性 一个映射文件(mapping file)由一个根节点<hibernate-mapping>和多个<class>节点组成, 首先看看根节点<hiber ...

随机推荐

  1. CSS补充之--页面布局、js补充,dom补充

    CSS补充之--页面布局 主站一:(下面是一个大致的模板) <div class="pg-header"> <div style="width: 120 ...

  2. [Android Tips] 21. Regex Named Groups in Android

    Android SDK 并没有包含 Java 7 新增加的命名捕获组功能,需要使用第三方库 https://github.com/tony19/named-regexp import com.goog ...

  3. vulcan测试记录

    感觉这个游戏很赞,是六个里面最喜欢的一个了 1.有时候挖坑对于位置要求比较大? 2.感觉难度比较大,尤其是玩到第三关很考验啊(不过从另一个方面来说也是优点?) 3.玩到现在对于怪物吃金子的原理没有很懂 ...

  4. EBS报表参数间的关联性的设置

    如果想在提交报表请求时根据参数一的值来设置参数二对应的值集,则在参数二的值集设定中的where clause加入:FEFX.参数二的值集名称.例如:参数一名称为inventory_item_id,参数 ...

  5. Delphi 调用C# DLL(包含委托)

    例子 C# Dll: using System; using System.Collections.Generic; using System.Text; using System.Diagnosti ...

  6. 二十三、Java基础--------网络编程

    Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...

  7. zmap在阿里云主机上的编译

    环境: cat /etc/issueUbuntu 14.04.2 LTS \n \l cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu ...

  8. hadoop的自定义数据类型和与关系型数据库交互

    最近有一个需求就是在建模的时候,有少部分数据是postgres的,只能读取postgres里面的数据到hadoop里面进行建模测试,而不能导出数据到hdfs上去. 读取postgres里面的数据库有两 ...

  9. phpcms V9 栏目管理

    关于phpcms V9框架系统后台管理之栏目管理,请参见下文的源码分析(添加栏目和修改栏目): 参照添加栏目的界面图示,便于对源代码的理解: <?php // 文件路径:phpcms/modul ...

  10. angular-笔记

    ng-model 指令ng-model 指令 绑定 HTML 元素 到应用程序数据.ng-model 指令也可以:为应用程序数据提供类型验证(number.email.required).为应用程序数 ...