*************************Hibernate基本映射

hibernate通过映射文件知道如何加载(load)和存储(store)持久化类的对象,映射文件告诉hibernate应该访问数据库(database)里面的哪张表(table)及应该使用表里面的哪些字段(column).

实体类-----表 ,采用<class>标签映射;

实体类中的普通属性(不包括集合、自定义类和数组)---表字段,采用<property>标签映射

注意:如果实体类的名称或实体类中属性名称与数据库关键字重复,将会出现问题

可以考虑采用table属性和column属性对其进行得新命名

实体类的设计原则:

*实现无参的默认的构造函数

*提供一个标识

*建议不要用fianl修饰实体类

*建议为实体类生成getter和setter方法

映射文件重要标签:

1.<DOCTYPE>

2.<hibernate-mapping>

3.<class>

4.<id>

5.<Generator>

可选的<generator>子元素是一个Java类的名,用来为该持久类的实例生成唯一的标识.如果这个生成器实例需要某些配置值或者初始化参数,用<param>元素.

所有的生成器都实现org.hibernate.id.IdentifierGenerator接口,某些应用程序可以选择提供他们自己特定的实现.当然,Hibernate提供了很多内置的实现.下面是一些内置生成器的快捷名字:

主要了解以下生成策略:

*identity

*sequence

*uuid

*native

*assigned

*foreign

6.<composite_id>

7.<discriminator>

8.<property>

************************************关联映射

01.多对一单向映射(User<--Group)
02.多对多双向映射(User<-- Role)
03.多对多单向映射(User<--Role)

04.一对一主键双向(Person--> IdCard)
05.一对一主键单向(Person--> IdCard)

06.一对一外键单向(Person--> IdCard)
07.一对一外键双向(Person<--> IdCard)
08.一对多单向(Group--> User)
09.一对多双向(Group<—> User)

10.继承映射(Pig和Bird 继承Animal)
    --一棵继承树映射成一张表

11.继承映射(Pig和Bird 继承Animal)

--一每个具体类映射成一张表joined-classs

12.继承映射(Pig和Bird 继承Animal)

--一每个子类类映射成一张表union-subclass

13. component映射

14. Set,Map,Arrary[],List映射

************************************

1.多对一单向映射(User- ->Group)
【Group.hbm.xml文件如下:】
<hibernate-mapping>
          <class name="com.dragon.hibernate.Group" table="t_group">
                   <id name="id">
                        <generator class="native"/>
                  </id>
                  <property name="name"/>
           </class>
</hibernate-mapping>
【User.hbm.xml文件如下:】
<hibernate-mapping>
         <class name="com.dragon.hibernate.User" table="t_user">
                 <id name="id">
                     <generator class="native"/>
                 </id>
                 <property name="name"/>
                 <many-to-one name="group" column="groupid"/>
          </class>
</hibernate-mapping>
---------------------------------------------------------
2.多对多双向映射(User<- -Role)
【User.hbm.xml文件如下】
<hibernate-mapping>
<class name="com.dragon.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="roles" table="t_user_role">
<key column="userid"/>
<many-to-many class="com.dragon.hibernate.Role" column="roleid"/>
</set>
</class>
</hibernate-mapping>
【Role.hbm.xml文件如下】
<hibernate-mapping>
<class name="com.dragon.hibernate.Role" table="t_role">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="users" table="t_user_role">
<key column="roleid"/>
<many-to-many class="com.dragon.hibernate.User" column="userid"/>
</set>
</class>
</hibernate-mapping>
---------------------------------------------------------
3.多对多单向映射(User<--Role)
在User端使用set 引用role 维持关系,则User.hbm.xml文件同上面的双向一样,只有Role.hbm.xml文件稍微有所小小的不同,比双向更简单。
【Role.hbm.xml文件如下】
<hibernate-mapping>
<class name="com.dragon.hibernate.Role" table="t_role">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>
【User.hbm.xml文件如下】
<hibernate-mapping>
<class name="com.dragon.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="roles" table="t_user_role">
<key column="userid"/>
<many-to-many class="com.dragon.hibernate.Role" column="roleid"/>
</set>
</class>
</hibernate-mapping>
---------------------------------------------------------
4.一对一主键双向(Person--> IdCard)
【Person.hbm.xml文件如下】
<hibernate-mapping>
<class name="com.dragon.hibernate.Person" table="t_person">
<id name="id">
<generator class="foreign">
<param name="property"> idcard</param>
</generator>
</id>
<property name="name"/>
<one-to-one name="idcard" constrained="true"/>
</class>
</hibernate-mapping>
【Idcard.hbm.xml文件如下】
<hibernate-mapping>
<class name="com.dragon.hibernate.IdCard" table="t_idcard">
<id name="id">
<generator class="native"/>
</id>
<property name="idno"/>
<one-to-one name="person"></one-to-one>
</class>
</hibernate-mapping>
One-to-one标签指示hibernate如何加载关联对象,默认是根据主键加载;
constrained="true"表示当前主键存在一个约束,person的主键作为外键参照idcard。
---------------------------------------------------------
5.一对一主键单向(Person--> IdCard)
Person.hbm.xml文件如下相同
Idcard.hbm.xml文件如下:
<hibernate-mapping>
<class name="com.dragon.hibernate.IdCard" table="t_idcard">
<id name="id">
<generator class="native"/>
</id>
<property name="idno"/>
</class>
</hibernate-mapping>
与双向的只是少了这句<one-to-one name="person"> </one-to-one> ---------------------------------------------------------

6.一对一外键单向(Person--> IdCard)
IdCard.hbm.xml文件如下:
<hibernate-mapping>
<class name="com.dragon.hibernate.IdCard" table="t_idcard">
<id name="id">
<generator class="native"/>
</id>
<property name="idno"/>
</class>
</hibernate-mapping>
Person.hbm.xml文件如下:
<hibernate-mapping>
<class name="com.dragon.hibernate.Person" table="t_person">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="idcard" column="idcardid" unique="true"/>
</class>
</hibernate-mapping>
---------------------------------------------------------
7.一对一外键双向(Person<--> IdCard)
Person.hbm.xml文件与单向一样
IdCard.hbm.xml文件如下:
<hibernate-mapping>
<class name="com.dragon.hibernate.IdCard" table="t_idcard">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<one-to-one name="person" proper-ref=“idcard”/>
</class>
</hibernate-mapping>
---------------------------------------------------------
8.一对多单向(Group--> User)
注意,在key中的外键 <key column="groupid"/>要一致不然要生成中间表
【Group.hbm.xml文件如下】
<hibernate-mapping package="com.dragon.hibernate">
<class name="Group" table="t_group">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="users">
<key column="groupid"/>
<one-to-many class="User"/>
</set>
</class>
</hibernate-mapping>
【User.hbm.xml文件如下】
<hibernate-mapping>
<class name="com.dragon.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>
---------------------------------------------------------
9.一对多双向(Group<--> User)
【Group.hbm.xml文件如下】
<hibernate-mapping package="com.dragon.hibernate">
<class name="Group" table="t_group">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="users" cascade="all">
<key column="groupid"/>
<one-to-many class="User"/>
</set>
</class>
</hibernate-mapping>
【User.hbm.xml文件如下:】
<hibernate-mapping>
<class name="com.dragon.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="groups" column="groupid"/>
</class>
</hibernate-mapping>
---------------------------------------------------------
10.继承映射(Pig和Bird 继承Animal)
--一棵继承树映射成一张表--一
extends.hbm.xml文件如下:
<hibernate-mapping package="com.dragon.hibernate">
<class name="Animal" table="t_extends">
<id name="id">
<generator class="native"/>
</id>
<discriminator column="type" type="string"/>
<property name="name"/>
<property name="sex"/>
<subclass name="Pig" discriminator-value="P">
<property name="weight"/>
</subclass>
<subclass name="Bird" discriminator-value="B">
<property name="height"/>
</subclass>
</class>
</hibernate-mapping>
---------------------------------------------------------
11.继承映射(Pig和Bird 继承Animal)

--一每个具体类映射成一张表joined-classs--一
extends.hbm.xml文件如下:
<hibernate-mapping package="com.dragon.hibernate">
<class name="Animal" table="t_animal">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="sex"/>
<joined-subclass name="Pig" table="t_pig">
<key column="pid"/>
<property name="weight"> </property>
</joined-subclass>
<joined-subclass name="Bird" table="t_bird">
<key column="bid"/>
<property name="height"> </property>
</joined-subclass>
</class>
</hibernate-mapping>
---------------------------------------------------------
12.继承映射(Pig和Bird 继承Animal)

--每个子类类映射成一张表union-subclass--一
extends.hbm.xml文件如下:
<hibernate-mapping package="com.dragon.hibernate">
<class name="Animal" table="t_animal">
<id name="id">
<generator class="uuid"/>
</id>
<property name="name"/>
<property name="sex"/>
<union-subclass name="Pig" table="t_pig">
<property name="weight"/>
</union-subclass>
<union-subclass name="Bird" table="t_bird">
<property name="height"/>
</union-subclass>
</class>
</hibernate-mapping>
**注释在使用<id name="id">
<generator class="uuid"/>
</id> 是不能将<generator class="uuid"/> 改写成<generator class="native"/> ,不然会出错。相应的Animal类中的id字段类型也要该为String.
如果在<class name="Animal" table="t_animal"> 中添加Abstract="true"可以使hibernate不生成表t_animal
---------------------------------------------------------
13. component映射
component.hbm.xml文件如下:
<hibernate-mapping>
<class name="com.bjsxt.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<component name="contact">
<property name="email"/>
<property name="address"/>
<property name="zipCode"/>
<property name="contactTel"/>
</component>
</class>
</hibernate-mapping>
User类中有以下属性:
private int id;
private String name;
private Contact contact;它不再是一种引用了
---------------------------------------------------------

14. Set,Map,Arrary[],List映射

CollectionMapping.hbm.xml文件如下:
<hibernate-mapping>
<class name="com.bjsxt.hibernate.CollectionMapping" table="t_CollectionMapping">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="setValue" table="t_set_value">
<key column="set_id"/>
<element type="string" column="set_value"/>
</set>
<list name="listValue" table="t_list_value">
<key column="list_id"/>
<list-index column="list_index"/>
<element type="string" column="list_value"/>
</list>
<array name="arrayValue" table="t_array_value">
<key column="array_id"/>
<list-index column="array_index"/>
<element type="string" column="array_value"/>
</array>
<map name="mapValue" table="t_map_value">
<key column="map_id"/>
<map-key type="string" column="map_key"/>
<element type="string" column="map_value"/>
</map>
</class>
</hibernate-mapping>

转载于:https://www.cnblogs.com/pyrmkj/p/3332460.html

Hibernate映射配置方法相关推荐

  1. 配置方法_CISCO防火墙端口映射配置方法

    今天朗联来为大家分享CISCO防火墙端口映射配置方法,首先先简单介绍一下什么是防火墙,Cisco防火墙是网络间的墙,主要为防止非法侵入,过滤信息等,从结构上讲,简单地说是一种PC式的电脑主机加上闪存( ...

  2. mysql filter_MySQL 过滤复制+复制映射 配置方法

    场景 node1 和 node2 为两台不同业务的MySQL服务器. 业务方有个需求,需要将node1上的 employees库的departments .dept_manager 这2张表同步到 n ...

  3. NAT技术与端口映射使用方法

    静态NAT: 本地地址与全局地址(公网)之间一对一映射,即一台主机对应一个公网IP. #ip nat inside source static 192.168.1.10  188.188.90.18 ...

  4. 华三路由器做端口映射配置

    华三路由器的端口映射配置方法如下: 打开浏览器,在地址栏中输入华三路由器的 IP 地址,然后按回车键登录路由器的管理界面. 在管理界面中,选择"高级设置",然后选择"端口 ...

  5. mysql hibernate id generator_Hibernate映射文件id的generator配置方法

    可选的子元素是 一个Java类的名称,用来生成该持久化类实例的唯一标识符.如果这个生成器实例需要某些配置值或者初始化参数,可以使用元素来传递这些参数. 所有的生成器都实现了org.hibernate. ...

  6. 怎样给oracle表设置序列,Oracle的sequence序列在hibernate中的配置方法

    Oracle自增序列在Hibernate中的配置方法 在很多情况下,我们使用Hibernate在已经建立好数据库的基础上.在oracle中,如果已经建立好的数据库中使用了sequence,则可以按照下 ...

  7. Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 说明

    1 主配置文件 Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final ...

  8. 操作篇 了解学习NAT实验(关于静态NAT、动态NAT、EasyIP、端口映射的配置方法))

    文章目录 前言 NAT工作原理 NAT分类 一:实验环境 1.1:实验原理 1.2实验目的 1.3华为NAT实验拓扑图 二:实验过程 配置SW1 配置AR1: 配置AR2: 前言 随着Internet ...

  9. Hibernate实体映射配置1(java@注解方式)

    实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...

最新文章

  1. Spring Boot Admin 2.5.5 发布,支持在线重启服务
  2. 遇到上亿(MySQL)大表的优化....
  3. Python:__slots__()方法和@property方法
  4. leetcode 227. Basic Calculator II | 227. 基本计算器 II(中缀表达式求值)
  5. nginx 上传 文件超时设置_Nginx在高并发下的性能优化点!有这篇就够了!
  6. linux 扫描开放的端口命令,在Linux系统中检查(扫描)开放端口的方法
  7. 简单实践GraphEmbedding图嵌入的几种方法
  8. 好程序员web前端培训分享JavaScript学习笔记ajax及ajax封装
  9. SPSS基本数据处理(二)
  10. 微信小程序中使用阿里ICON图标
  11. 基于FME实现地铁路径规划
  12. c语言编写坦克大战设计报告,c语言编写坦克大战源代码
  13. IPv6的DNS,设置DNS
  14. 苹果电脑基于Android File Transfer for mac连接Android设备
  15. 手机上的浏览器有几种内核
  16. windows 配置host
  17. 台风康妮超级计算机,台风康妮最新消息 2013年第15号台风康妮实时路径图
  18. 【运维心得】wps云文档被其他程序锁定了怎么办?
  19. 【读书笔记】万物原理——打开客观世界与主观情感的大门
  20. 日语900句(衣食住行)PDF下载地址|百度云盘免费分享

热门文章

  1. Spring IOC和MVC基础知识
  2. Linux下查看文件夹下文件个数
  3. Leetcode 138. 复制带随机指针的链表 解题思路及C++实现
  4. Scapy学习笔记二
  5. Python函数作为参数传递给函数
  6. currentThread的一个复杂案例
  7. Set Up a Mobile Worker
  8. is NULL , is NOT NULL 有时索引失效 || in 走索引, not in 索引失效 ||单列索引和复合索引 || 查看索引使用情况
  9. JUC里面的相关分类|| java并发编程中,关于锁的实现方式有两种synchronized ,Lock || Lock——ReentrantLock||AQS(抽象队列同步器)
  10. MyBatis-Plus 通用IService的使用