我们把User.hbm.xml加了一些扩展来说说常用的属性的含义:

<?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>
<class name="com.pojo.Users">
<id name="id" type="java.lang.Integer">
<generator class="native"></generator>
</id>

<property name="name" length="20" not-null="true" unique="true" update="false" insert="true"/>

     <property name="email"/>
</class>
</hibernate-mapping>

这里没有指定column属性表示与name值相同

length="20" 如果前台提交过来的值长度超过20的话Hibernate会抛出异常

not-null="true" 如果前台提交过来的值是空的Hibernate会抛出异常

unique="true" 如果前台提交过来的值已经在数据中存在Hibernate会抛出异常(Hibernate会自动去判断是否在数据库是有重复数据)

update="false" 表示该字段不参与更新操作(Hibernate不会产生该字段的SQL语句)

insert="true" 表示该字段参与插入操作。

<hibernate-mapping>

<class name="com.pojo.Users">

可以修改成如下表示方法

<hibernate-mapping package="com.pojo">

<class name="Users">

<generator class="native"></generator>是主键生成策略,是Hibernate自动生成的。

这里讲解下代理主键和业务主键的概念

代理主键是指与业务无关且能唯一标识数据库中记录,一般是数据库自动生成的,比如mysql可以使用auto_increment,Sql2000可以使用identity生成方式,oracle可以使用sequence生成方式

业务主键指业务相关,由用户指定,且能唯一标识数据库中的任意一条记录,也叫自然主键

Hibernate可以帮助生成业务主键

<generator class="native"></generator>就是一种生成方式,下面我说详细说下hibernate中业务主键的生成方式:

increment:以递增方式生成OID,每次加1
identiry:由底层数据库生成OID,条件是数据库支持自动增加的字段
sequence: hibernate根据底层数据库的序列来生成OID,条件是数据库支持序列
hilo:根据high/low算法生成OID,Hibernate根据待定表的字段作为high值,默认采用hibernate_unique_key表的next_hi值
seqhilo:hibernate3.0出现,根据高氏位算法生成主键,需要给顶一个序列。
native:根据数据库的情况自动选择OID生成的方式
uuid.hex:采用128位的uuid算法生成OID,占用空间大
assigned:由JAVA应用程序负责生成主键,适用于自然主键

        

转载于:https://www.cnblogs.com/liugang/articles/1859485.html

Hibernate讲解(三)-类映射文件中常用属性的了解相关推荐

  1. Git之(三)Git中常用命令——分支管理

    三.Git中常用命令--分支管理 为什么要使用分支管理? 分支就是科幻电影里面的平行宇宙,也就是当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干 ...

  2. 在/tmp目录下,新建项目director新建3个TXT文件,分别命名file1 、fie2、fie3,用 vi编辑器分别在三个文件中输入内容

    1.在/tmp目录下,新建项目director新建3个TXT文件,分别命名file1.2.3 用vi编辑器分别在三个文件中输入内容 2 将三个file文件中的内容合并到一个文件中命名为 filetes ...

  3. 在/tmp目录下,新建目录director新建三个txt文件,分别为file1.txt,file2.txt,file3.txt,用vi编辑器分别在三个文件中输入内容。

    用vi空格加文件名 按回车之后让你编辑 然后按i 输入内容 esc退出编辑模式 :wq 保存并退出 2.将file1.file2,file3三个文件中内容合并到一个文件中命名为filetest.txt ...

  4. c语言两程序合并,C语言将两个文件的内容合并到第三个文件中

    原标题:C语言将两个文件的内容合并到第三个文件中 让给定的两个文件是file1.txt和file2.txt.以下是合并的步骤. 1)在读取模式下打开file1.txt和file2.txt. 2)在写入 ...

  5. .在/tmp目录下,新建项目director新建3个TXT文件,分别命名file1 、fie2、fie3,用 vi编辑器分别在三个文件中输入内容

    1.在/tmp目录下,新建项目director新建3个TXT文件,分别命名file1.2.3 用vi编辑器分别在三个文件中输入内容 2 将三个file文件中的内容合并到一个文件中命名为 filetes ...

  6. Eclipse的使用(三)Eclipse中常用的插件汇总

    工欲善其事,必先利其器 .对于Java开发来说,Eclipse是我们最常用的IDE.而Eclipse相对其他IDE(如NetBeans)来说,最强大的就在于插件,因此,如果不好好的选择插件,那Ecli ...

  7. maven项目的pom文件中常用的简单的标签理解

    maven的pom文件一些标签的理解 在本篇文章中,我只是将pom文件中的一些常用的并且比较简单的标签理解标记注释了.还有很多并常用但是也很重要的这里并没有列出.因为本人水平也有限的,所以请谅解. & ...

  8. AndroidManifest.xml中常用属性及含义

    一. 关于AndroidManifest.xml         AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件 ...

  9. 【Android】安卓布局文件中xmlns属性

    定义及使用 xmlns是XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间 自定义View的时候有时候会在布局文件中使用到 命名规则如下: xmlns:前缀=htt ...

最新文章

  1. mseloss pytorch_PyTorch 卷积与BatchNorm的融合
  2. 科普:TLS、SSL、HTTPS以及证书(转)
  3. bootice添加linux_如何使用老毛桃winpe的Bootice新建SYSLINUX引导程序?
  4. 用jekyll制作高大上的网站(二)——实际应用
  5. 如何通过父类引用“调用”子类所独有的方法
  6. 毕业设计第二次本周目标
  7. zabbix api 批量添加主机(python3 requests)
  8. win10ltsc安装后重启提示bitlocker有问题怎么办_重装系统过程中电脑意外重启?这几步彻底摆脱安装失败的尴尬!...
  9. VirualBox安装XP_64bit+中文语言包
  10. 将AD原理图文件和PCB文件转换为KiCad格式的方法
  11. Ubuntu扩展磁盘内存
  12. Qt绘制出思岚雷达扫描到的轮廓
  13. 人脸识别“火”了!网友:胖了、整容了怎么办?
  14. 今天看了了一下手册,先弄清楚芯片脚功能
  15. iOS-微信朋友圈图片压缩算法
  16. 实验三 面向对象(二)
  17. pycharm库的下载和常见错误
  18. linux如何修改用户的密码
  19. MySQL远程访问权限的设置
  20. 程序员小灰灰专栏收集

热门文章

  1. VIM 下工程的管理工具
  2. vue去掉#——History模式
  3. Android 多线程之阻塞队列
  4. HTTP/2之服务器推送(Server Push)最佳实践
  5. uva 12253 - Simple Encryption(dfs)
  6. Visio的UML模板
  7. 2.SpringBoot的入门例子
  8. 20.第一个Netcat的实现
  9. 【写作技巧】毕业论文格式要求
  10. android与ndk交互,NDK-JNI与Java的交互 hello-world