一个对象/关系型映射一般定义在 XML 文件中。映射文件指示 Hibernate 如何将已经定义的类或类组与数据库中的表对应起来。

尽管有些 Hibernate 用户选择手写 XML 文件,但是有很多工具可以用来给先进的 Hibernate 用户生成映射文件。这样的工具包括 XDoclet, MiddlegenAndroMDA

让我们来考虑我们之前定义的 POJO 类,它的对象将延续到下一部分定义的表中。

public class Employee { private int id; private String firstName;  private String lastName;  private int salary;  public Employee() {} public Employee(String fname, String lname, int salary) { this.firstName = fname; this.lastName = lname; this.salary = salary; } public int getId() { return id; } public void setId( int id ) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName( String first_name ) { this.firstName = first_name; } public String getLastName() { return lastName; } public void setLastName( String last_name ) { this.lastName = last_name; } public int getSalary() { return salary; } public void setSalary( int salary ) { this.salary = salary; }}

对于每一个你想要提供持久性的对象都需要一个表与之保持一致。考虑上述对象需要存储和检索到下列 RDBMS 表中:

create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id));

基于这两个实体之上,我们可以定义下列映射文件来指示 Hibernate 如何将已定义的类或类组与数据库表匹配。

<?xml version="1.0" encoding="utf-8"?>  This class contains the employee detail.   

你需要以格式 .hbm.xml保存映射文件。我们保存映射文件在 Employee.hbm.xml 中。让我们来详细地看一下在映射文件中使用的一些标签:

  • 映射文件是一个以 为根元素的 XML 文件,里面包含所有标签。
  • 标签是用来定义从一个 Java 类到数据库表的特定映射。Java 的类名使用 name 属性来表示,数据库表明用 table 属性来表示。
  • 标签是一个可选元素,可以被用来修饰类。
  • 标签将类中独一无二的 ID 属性与数据库表中的主键关联起来。id 元素中的 name 属性引用类的性质,column 属性引用数据库表的列。type 属性保存 Hibernate 映射的类型,这个类型会将从 Java 转换成 SQL 数据类型。
  • 在 id 元素中的 标签用来自动生成主键值。设置 generator 标签中的 class 属性可以设置 native 使 Hibernate 可以使用 identity, sequencehilo 算法根据底层数据库的情况来创建主键。
  • 标签用来将 Java 类的属性与数据库表的列匹配。标签中 name 属性引用的是类的性质,column 属性引用的是数据库表的列。type 属性保存 Hibernate 映射的类型,这个类型会将从 Java 转换成 SQL 数据类型。

还有一些其它属性和元素可用在映射文件中,我会在其它讨论 Hibernate 相关的主题中尽可能得涉及更多。

映射文件_Hibernate 映射文件相关推荐

  1. java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

    http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果 ...

  2. mmap映射大于4g的文件_iOS文件内存映射——MMAP

    前言 最近一段项目上总是出现一些因为文件没有及时保存而产生的问题,因此小编就在网上寻找到了这个文件存储方法mmap,这里为大家进行下简单的介绍. 简介 首先我们需要对iOS中各App的运行环境进行了解 ...

  3. [原创]修改TFS本地文件映射路径,无法映射到相同文件夹问题。

    在本地路径:C:\Users\[用户]AppData\Local\Microsoft\Team Foundation\3.0\Cache\ 下有文件:VersionControl.config,该文件 ...

  4. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )

    文章目录 一.resources.arsc 资源映射表文件格式 二.头文件 数据格式 三.全局字符串池 数据格式 四.包数据 数据格式 1.包头 数据格式 2.资源类型字符串池 数据格式 3.资源名称 ...

  5. 淘宝文件系统文件映射原理及实现

    文章目录 1 文件系统映射原理 1.1 文件映射应用场景 1.2 文件映射相关函数介绍 2 文件映射实战 1 文件系统映射原理 1.1 文件映射应用场景 主要应用场景如下: 进程间共享信息. 实现文件 ...

  6. java 内存映射文件 主要应用_VC++中使用内存映射文件处理大文件(3)

    -- // 创建文件内核对象,其句柄保存于hFile HANDLE hFile = CreateFile("Recv1.zip", GENERIC_WRITE | GENERIC_ ...

  7. system文件_大文件拷贝,试试NIO的内存映射

    最近项目里有个需求需要实现文件拷贝,在java中文件拷贝流的读写,很容易就想到IO中的InputStream和OutputStream之类的,但是上网查了一下文件拷贝也是有很多种方法的,除了IO,还有 ...

  8. 内存映射文件进行写文件和读文件有啥不同_Linux中的mmap映射 [二]

    来看下上文介绍的mmap()的函数原型是怎样的: #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, ...

  9. 文件内存映射mmap解决大文件快速读写问题和进程间共享内存

    mmap函数主要用途有三个: 1.将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能: 2.将特殊文件进行匿名内存映射,可以为关联进程提供共 ...

最新文章

  1. ArcEngine开发中“错误类型****未定义构造函数”
  2. HDU 1245 Saving James Bond
  3. ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参【2种方法,ShuffleSplit+GridSearchCV、TimeSeriesSplitGSCV】、模型评估)
  4. 设计模式C++实现(8)——代理模式
  5. python基础教程:两个list之间移动元素
  6. HTML5 高级系列:web Storage 学前端开发要先看这个
  7. @order注解_别再用ifelse了,用注解去代替他吧
  8. Python爬虫:一些常用的爬虫技巧总结
  9. 计算机二级考试模拟表单答题,2016年计算机二级考试《VFP》模拟简答试题
  10. C#中泛型类型约束条件
  11. 漫谈 | “黎曼猜想”和区块链加密算法到底有什么关系?
  12. 埋点是什么意思_(一百二十二)埋点方案举例,如何做埋点方案
  13. [Java] 蓝桥杯ADV-188 算法提高 排列数
  14. win10设置Python程序定时运行(设置计划任务)
  15. 从1.5K到18K 一个程序员的5年成长之路
  16. 二级c语言试卷合集pdf,全国计算机二级C语言历年真题完整版.pdf
  17. Dos命令大全完整版
  18. 顶级 OEM 游戏整机到底行不行 — 惠普 OMEN 暗影精灵 6 游戏台式旗舰版评测
  19. win10连不上网,几种尝试
  20. diy nas配置推荐2020_NAS的DIY配置

热门文章

  1. 如何在 IDEA 使用Debug 图文教程
  2. 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
  3. 技巧:Go 结构体如何转换成 map[string]interface{}
  4. 未来,让我们一起想象— “Imagine”阿里云视频云全景创新峰会
  5. 一不小心,我们办了场全球最 _____ 的技术大会......
  6. 疫情伤了谁?反正不是这8大直播行业
  7. LiveVideoStack线上分享第三季(七):AVS3关键技术介绍、性能和复杂度分析
  8. LiveVideoStackCon讲师热身分享 ( 九 ) —— 51Talk音视频技术思考及非典型挑战
  9. FFmpeg 硬件加速方案概览 (下)
  10. Netflix:如何通过机器学习提高流媒体质量?