码迷,mamicode.com
首页 > 其他好文 > 详细

映射对象标识符

时间:2016-09-01 23:09:14      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:

一.关系数据库按主键区分不同的记录

    在关系数据库表中,用主键来标识记录保证每条记录的唯一性, 作为主键的字段必须满足以下条件:

        .不允许为null

        .每条记录具有唯一的主键值,不允许主键值重复

        .每条记录的主键值永远不会改变

      在CUSTOMERS表中,如果把NAME字段作为主键,前提条件是:

        .每条记录的客户姓名不允许为null

        .不允许客户重名

        .不允许修改客户姓名

    NAME字段是具有业务含义的字段,把这种字段作为主键,成为自然主键。尽管也是可行的,但是不能满足不断变换的业务需求,一旦出现了允许客户重名的业务需求,就必须修改数据模型,重新定义表的主键,这给数据库的维护增加了难度。

    因此,更合理的方式是使用代理主键,既不具备业务的字段,该字段一般取名为"ID"。代理主键通常为整数类型,因为整数类型比字符串类型要节省更多的数据库空间。那么代理主键的值从何而来呢?许多数据库系统提供了自动生成代理主键值的机制。如下

     1.把主键定义为自动增长标识符类型

     2.从序列中获取自动增长的标识符

二.java语言按内存地址不同区分不同的对象

  在java语言中,判断两个对象变量是否相等,有以下两种比较方式

     1.比较两个变量所引用的对象的内存地址是否相同

     2.比较两个变量所引用的对象的值是否相同

三.Hibernate用对象标识符(OID)来区分对象

    从以上两节可以看出,java语言安内存地址来识别或区分同一个类的不同对象,而关系数据库安主键值来识别或区分同一个表的不同记录,Hibernate使用OID来统一两者之间的矛盾,OID是关系数据库中的主键,在java对象模型中的等价物。在运行时,Hibernate根据OID来维持数据库表中记录的对应关系。

技术分享

四. Hibernate的内置标识符生成器的用法

      定义了对象-关系映射文件,然后分别通过hbm2ddl和hbm2java工具,来生成数据库Schema和持久化类源代码。

     映射文件:

          1.IncrcmentTester.hbm.xml:演示increment标识符生成器的用法

          2.IdentitYTester.hbm.xml:演示identity标识符生成器的用法

          3.NativeTester.hbm.xml:演示native标识符生成器的用法

 五.映射自然主键

     1.映射单个自然主键

         技术分享

     2.映射复合自然主键(还在了解中)

 总结:

     技术分享

 

             

 

映射对象标识符

标签:

原文地址:http://www.cnblogs.com/yangronglin/p/5831543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!