具有业务含义的主键叫自然主键;随机生成,不具备业务含义的字段作为主键,叫代理主键。

在表与POJO类关系映射文件XXX.hbm.xml中,可通过配置id元素下generator节点的class属性指定数据表主键生成策略<generator class="生成策略"></generator>;所谓主键生成策略就是hibernate怎样管理表的主键

主键生成策略:1~4自动增长(1、2、3······),代理主键;5主键为字符串,代理主键;6一般用于自然主键,需要在程序里指定主键值,无法自动生成

  1、increment;代表主键是自动增长的,是由hibernate本身来管理。

          注意:数据库要支持自动增长,如MySQL,SQLserver;Oracle不可以;在多线程情况下,可能会产生主键冲突问题

  2、identity;由底层数据库生成,不由hibernate本身来管理

          注意:数据库支持自动增长,如MySQL,SQLserver;Oracle不可以;   

  3、sequence;标识符生成器利用底层数据库提供的序列来生成标识符

          注意:数据库支持序列,和hibernate程序无关,如Oracle支持,而MySQL就不可以;如Oracle数据库有序列customer_seq,则配置如:<generator class="sequence">customer_seq</generator>

  4、native;标识符依据底层数据库对自动生成标识符的支持能力,来选择使用identity,sequence,或hilo标识符生成器,如MySQL自动选择identity,Oracle自动选择sequence

  5、uuid;主键是字符串的可以用uuid来处理,随机产生32字符串

  6、assigned;一般用于自然主键,无法自动生成,需要程序指定值

  7、复合主键;需要在配置文件里指定复合主键id;如有Person类和Person表,Person表有复合主键firstName和secondName,和age字段

 <hibernate-mapping>
<!-- 类与表关系,name类全名称,table表名 -->
<class name="cn.hjp.domain.Person" table="Person">
<!-- 复合主键 -->
<composite-id>
<key-property name="firstName"></key-property>
<key-property name="secondName"></key-property>
</composite-id>
<property name="age" column="age" type="int"></property>
</class>
</hibernate-mapping>

    注意:Person类必须实现序列化接口Serializable

最新文章

  1. VR(虚拟现实)开发资源汇总
  2. 解决Spring的Component-scan和packagesToScan不支持Eclipse RCP问题
  3. Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
  4. 一、HTML和CSS基础--网页布局--网页简单布局之结构与表现原则
  5. (转)web网站架构演变
  6. 01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件
  7. STM32固件库
  8. gitosis使用笔记
  9. stagefright框架(五)-Video Rendering
  10. 一步一步学android之布局管理器——LinearLayout
  11. 【English】20190315
  12. 页面对象(Page Object)模式
  13. hdu 6049---Sdjpx Is Happy(区间DP+枚举)
  14. 简单ATM机功能实现及感想
  15. 更改html代码后网页不更新
  16. Windows一个文件夹下面最多可以放多少文件
  17. [script]判定dd是否成功
  18. 如何在VS2013创建WebService并在IIS中发布
  19. js左侧三级菜单导航实例代码
  20. capitalize()

热门文章

  1. android实现点击背景图片不同区域实现不同事件
  2. [转]World Wind Java开发之五——读取本地shp文件
  3. Asp.Net MVC 4 Web API 中的安全认证-使用OAuth
  4. ActionBar在Android2.x的实现,类似新版微信界面。
  5. SpringMVC 中HttpMessageConverter简介和Http请求415 Unsupported Media Type的问题
  6. Jenkins进阶系列之——16一个完整的JENKINS下的ANT BUILD.XML文件
  7. Ajax基础详解1
  8. 自己写了个H5版本的俄罗斯方块
  9. 20.C#LINQ基础和简单使用(十一章11.1-11.2)
  10. Web Service 小练习