`
yangchongjiao
  • 浏览: 11445 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

*.hbm.xml映射文件的元素及属性

阅读更多

1、  每个持久化对象都需要提供一个以类名命名的映射文件,映射文件需要放在和po类同一目录下。
2、  如下是wefepo的映射文件:
<hibernate-mapping>
 <class name="com.lovo.po.WifePO" table="t_wife">
  <id name="id" column="w_id" type="int">
   <generator class="foreign">
    <param name="property">myMan</param>
   </generator>
  </id>
  <property name="name" column="w_name" type="string"></property>
  <property name="age" column="w_age" type="int"></property>
  <one-to-one name="myMan" class="com.lovo.po.HusbandPO"
   cascade="all">
  </one-to-one>
 </class>
</hibernate-mapping>
1)<class>元素用于指定需要映射的类和表,name属性指定类名,table属性指定表表名。
2)<id>元素用于设置持久化类的OID与表主键的映射关系,name属性指定持久化类的属性名,column属性用于指定数据库主键列名。
3)<generator>元素用来指定对象标识符生成器,为持久化类的实例生成唯一的主键值。
3、生成器的类型有:
1)Increment:用于为long,short或者int类型生成唯一标识符。只有在没有其他进程往同一张表中插入数据时才能使用。(这是由hibernate自动增长,所以数据库不能设置主键自动增长)。
2)Hilo:使用一个高/低位算法高效的生产long、short或者int类型。
3)Uuid.hex:用一个128-bit的UUID算法生成字符串类型的标识符,UUID被编码为一个32位16进制数字的字符串。
4)Identity:对于内部支持标识字段的数据库(DB2,MySQL,Sybase,MS SQL),才可以使用identity关键字生成。返回的标识符是long,short,或者int类型。(由数据库来自动增长);
5)Sequence:对于内部支持序列的数据库(DB2,Oracle,PostgreSQL,Interbase,SAP DB,McKoi)才可以使用sequence风格的关键字生成。返回标识符是long,short或者int类型。
6)Native:自动根据底层数据库(方言)的能力选择identity,sequence或者hilo中的一个。如果没有指定方言则选择hilo。
7)Assigned:让应用程序在保存之前为对象分配一个标识符。这是<generator>元素没有指定是的默认生成策略。(主键由外部程序员生成,无需hibernate参与)。
8)Select:通过数据库触发器选择一些唯一主键的行并返回主键的值来分配一个主键。
9)Foreign:使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。
4、<property>子元素用于设定持久化类与字段的映射关系。主要包括name,type,column,not-null等属性。
1)Name:持久化对象的属性名;
2)Column:数据库的字段名;
3)Type:通常用来指定hibernate映射数据类型,比如:integer,string,character,date,timestamp,float,object,blob等。它是java类属性的数据类型与数据库字段数据类型的桥梁,如果不进行类型设定,hibernate它会使用反射来得到这个名字的属性,以此来猜测正确的hibernate类型。
4)Not-null:属性中不能为空。
5)Length:属性的长度。
 


****************************************************************\
hibernate hbm.xml的完整示例

分类: java学习笔记 2011-11-24 09:49
    
完整实例
在本小节中举一些.hbm.xml映射文件的例子,让开发人员对其有一个感性的认识。接下来讲述一个用户表(tbl_user)、用户与角色关联表(tbl_user_role)、角色表(tbl_role)以及组织表(tbl_organization)的例子。
(1)tbl_user
<?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" >
<hibernate-mapping package="com.amigo.dao.pojo">
    <class name="User" table="tbl_user">
        <id name="loginname" column="loginName" type="java.lang.String">
            <generator class="assigned"/>
        </id>
 
        <property name="name" column="name" type="java.lang.String" not-null="true" />
        <property name="password" column="password" type="java.lang.String" not-null="true" />
        <property name="mobile" column="mobile" type="java.lang.String" />
        <property name="telephone" column="telephone" type="java.lang.String" />
        <property name="email" column="email" type="java.lang.String" />
        <property name="createtime" column="createTime" type="java.util.Date" not-null="true" />
        <property name="lastlogintime" column="lastLoginTime" type="java.util.Date" />
        <property name="logintimes" column="loginTimes" type="java.lang.Long" not-null="true" />
        <property name="state" column="state" type="java.lang.Byte" not-null="true" />
        <property name="description" column="description" type="java.lang.String" />
 
        <many-to-one name="organization" column="orgId" class="Organization" not-null="true" />
        <set name="userRoleSet" inverse="true" cascade="all-delete-orphan" lazy="true">
            <key column="loginName"/>
            <one-to-many class="UserRole"/>
        </set>
</hibernate-mapping>
(2)tbl_organization
<?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" >
<hibernate-mapping package="com.amigo.dao.pojo">
    <class name="Organization" table="tbl_organization">
        <id name="orgid" column="orgId" type="java.lang.Long">
            <generator class="native"/>
        </id>
 
        <property name="parentorgid" column="parentOrgId" type="java.lang.Long" not-null="true" />
        <property name="orgname" column="orgName" type="java.lang.String" not-null="true" />
        <property name="orgfullname" column="orgFullName" type="java.lang.String" />
        <property name="orglevel" column="orgLevel" type="java.lang.Integer" not-null="true" />
        <property name="state" column="state" type="java.lang.Byte" not-null="true" />
        <property name="description" column="description" type="java.lang.String" />
        <property name="creator" column="creator" type="java.lang.String" />
        <property name="createtime" column="createTime" type="java.util.Date" />
        <set name="userSet" inverse="true" lazy="true">
            <key column="orgId"/>
            <one-to-many class="User"/>
        </set>
    </class>
</hibernate-mapping>
(3)tbl_user_role
<?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" >
<hibernate-mapping package="com.cotel.netvote.dao.model">
    <class name="UserRole" table="tbl_user_role">
        <id name="urid" column="urId" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <many-to-one name="role" column="roleId" class="Role" not-null="true" />
        <many-to-one name="user" column="loginName" class="User" not-null="true" />
    </class>
</hibernate-mapping>
(4)tbl_ role
<?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" >
<hibernate-mapping package="com.cotel.netvote.dao.model">
    <class name="Role" table="tbl_role">
        <id name="roleid" column="roleId" type="java.lang.Integer">
            <generator class="native"/>
        </id>
 
        <property name="rolename" column="roleName" type="java.lang.String" not-null="true" />
        <property name="createdate" column="createDate" type="java.util.Date" not-null="true" />
        <property name="description" column="description" type="java.lang.String" />
 
        <set name="userRoleSet" inverse="true" lazy="true" cascade="all">
            <key column="roleId"/>
            <one-to-many class="UserRole"/>
        </set>
    </class>
</hibernate-mapping>

分享到:
评论

相关推荐

    Xdoclet生成*.hbm.xml映射文件

    《Xdoclet生成*.hbm.xml映射文件详解》 在Java开发中,尤其是在使用Hibernate作为持久层框架时,数据库模型与Java对象之间的映射文件*.hbm.xml是必不可少的。这种映射文件定义了数据库表与Java实体类之间的对应关系...

    xdoclet 用于生成*.hbm.xml

    总结来说,xdoclet是一个强大的工具,通过在Java源代码中添加注解,可以自动为Hibernate生成所需的.hbm.xml映射文件,从而减轻开发负担,提高开发效率。同时,理解如何下载和使用xdoclet,也是提升Java开发效率的...

    hibernate.hbm.xml详解

    在Java的持久化框架Hibernate中,`hibernate.hbm.xml`文件是至关重要的,它定义了Java对象与数据库表之间的映射关系,使得对象模型能够与关系型数据库无缝对接。这篇文章将深入解析`hibernate.hbm.xml`的结构和主要...

    CodeSmith对应的NHibernate的.hbm.xml映射文件的生成模板

    `NHibernate.hbm.cst`模板文件专注于生成.hbm.xml映射文件,内容可能包括: 1. XML根元素:`&lt;hibernate-mapping&gt;`,定义映射文件的版本和命名空间。 2. `&lt;class&gt;`元素:表示映射的类,包含类名、表名、表空间等信息...

    使用MyEclipse工具生成POJO类和映射文件.hbm.xml

    使用 MyEclipse 工具生成 POJO 类和映射文件 .hbm.xml MyEclipse 是一款功能强大且流行的集成开发环境(IDE),它提供了许多实用的功能来帮助开发者快速开发应用程序。在本篇文章中,我们将学习如何使用 MyEclipse ...

    hbm xml配置详解 ssh框架

    每个`.hbm.xml`文件通常对应于一个Java实体类,文件中的元素和属性详细描述了类的属性如何映射到数据库表的字段。 在`.hbm.xml`文件中,映射元素主要包括以下几部分: 1. ****:这是映射文件的根元素,表示一个...

    Hibernate的........htm.xml和hibernatecfg.xml配置

    `.hbm.xml`文件用于映射数据库表和Java类之间的关系,而`hibernate.cfg.xml`则是Hibernate的整体配置文件,包含了数据库连接、事务管理等核心设置。 ** Hibernate基础知识 ** Hibernate是一款流行的Java持久化框架...

    根据实体类自动生成hibernate的hbm.xml映射文件

    请输入包的名称和映射文件需要放到的文件夹之后运行CreateTableXml里的main方法,就可以自动生成映射文件了。记着刷新文件夹,要不然是看不到的。 当然只是一些基础的属性。对于一些比较复杂,还是需要自己来修改的...

    Oracle自动生成hibernate实体(.java 和.hbm.xml文件)存储过程

    关于`.hbm.xml`文件,它是Hibernate的XML映射文件,用于描述Java对象(实体类)与数据库表之间的关系。每个实体类对应一个`.hbm.xml`文件,其中包含了类名、属性名、字段类型、主键信息以及关联关系等配置。这些信息...

    使用Hibernate逆向生成实体类的方法(注解和hbm.xml映射文件)

    - 在指定的包下查看生成的实体类和对应的hbm.xml映射文件,其中hbm.xml文件定义了表结构和字段映射关系。 #### 三、配置Hibernate 1. **修改hibernate.cfg.xml**: - 打开项目的hibernate.cfg.xml文件,添加或...

    Hibernate 配置详解 (一)

    一个典型的`*.hbm.xml`文件可能包含以下元素: - `&lt;class&gt;`:表示一个实体类。 - `&lt;id&gt;`:定义实体类的主键。 - `&lt;property&gt;`:映射实体类的属性到数据库表的字段。 - `&lt;set&gt;`、`&lt;list&gt;`或`&lt;bag&gt;`:用于映射一对多...

    hibernate.cfg.xml文件

    6. **实体类映射**:通过`mapping resource`元素,可以指定每个实体类对应的`.hbm.xml`映射文件。 三、映射文件的使用 在`hibernate.cfg.xml`中,我们通常不会直接写入实体类的属性映射,而是引用外部的`.hbm.xml`...

    Spring.NET+NHibernate+NHibernate.Mapping.Attribute自动映射

    不喜欢NHibernate传统的*.hbm.xml来对数据库进行映射的朋友有福了,可以使用NHibernate.Mapping.Attribute.dll来实现自动映射。 减少不小的工作量。

    hibrenate hbm.xml 表映射

    hibrenate hbm.xml 表映射

    spring如何摒弃hibernate.cfg.xml

    这个属性用于指定类路径下具体的Hibernate映射文件(.hbm.xml)。例如,如果我们有一个名为`petclinic.hbm.xml`的映射文件,我们可以这样配置: ```xml &lt;value&gt;petclinic.hbm.xml ``` 这种方式只能处理单个...

    java根据实体类生成Hibernate映射文件

    通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml &lt;class name="com.example.entity.User" table=...

    利用hibernate自动生成hbm.xml文件和entity类.doc

    3. 将 hbm.xml 文件加入到 application.mappinginfo.xml 中:将 hbm.xml 文件加入到 application.mappinginfo.xml 中,以便于 Hibernate 可以正确地加载映射关系。 五、 小结 通过以上步骤,开发者可以使用 ...

    hibernate annotations3.4.0 GA.rar

    都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*.hbm.xml映射方式

    《Hibernate 各类映射文件与配置文件模板》HibernateMappingConfig.zip

    - `Student.hbm.xml`、`User.hbm.xml`、`Address.hbm.xml`等:这些都是特定实体类的映射文件,比如Student、User和Address类,它们定义了这些类的属性与数据库表列的对应关系,以及可能的关联和复合元素。...

    Hibernate Annotation jar

    这里面包涵了需要用...都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*.hbm.xml映射方式

Global site tag (gtag.js) - Google Analytics