NHibernate 的 ID 标识选择器

在 Hibernate 中,每个对象需要一个标识 ID,通过这个标识 ID 建立对象与数据库中记录的对应关系。

Nhibernate 提供了多种方式来建立这个 POID。基于不同的生成策略,可以选择更佳的方式。

首先是赋值方式:assigned,这种方式需要应用程序赋予对象一个标识 ID, 这种情况典型地用在自然主键的时候。

第二种方式是非插入方式的生成器,对于新的应用程序来说,这是最佳的方式,NHibernate 赋予持久化对象一个标识,而不需要写入数据库后才能生成。这允许 NHibernate 在事务完成的时候,才需要写入数据库,减少了访问数据库的往返次数,下面的方式都属于这种策略。

  • hilo,使用 Hi/Lo 算法生成一个整数。
  • guid,通过调用 System.Guid.NewGuid() 生成一个 GUID,在基于共享的数据库中是安全的。
  • guid.comb,10 个字节的随机 GUID,其中 6 个字节来自当前的日期和时间。
  • guid.native,从数据库获取 GUID,每生成一个需要一次数据库的往返。
  • uuid.hex,生成的 GUID 使用人易读的 32 字节串。
  • uuid.string,生成的 GUID 使用 16 个字节的二进制等效字符表示,结果是 16 个字符的串,不是人易读的。
  • counter,简单地递增的整数,从系统的时钟进行初始化,然后递增。不适合共享的数据库中。
  • increment,也是一个简单的整数,在开始的时候,从数据库获取最大的主键值,然后递增,也不适合共享的数据库。
  • sequence,从数据库获取新的 ID,支持象 Oracle,DB2 和 PostgreSQL 这样的有序列支持的数据库。
  • seqhilo,组合 Hi/Lo 算法和序列,以提供比序列更好的性能。
  • foreign,在一对一的关系中,简单地复制主键。

第三种策略是插入之后的 POID 生成器,需要数据持久化到数据库之后,由数据库生成,一般用在现有的数据库中。

  • identity,返回数据库生成的 ID
  • select,执行一个 select 查询来获取插入行的 ID
  • sequence-identity,对于使用命名序列的数据库,返回数据库生成的 Id.
  • trigger-identity,返回数据库触发器生成的 Id

最后,native 返回数据库生成的 ID,对于 Microsoft SQL Server,DB2, Informix, MySQL, PostgreSQL, SQLite 和 Sybase 等效于 identity,对于 Oracle 和 Firebird,等效于 sequence,对于 Ingres,则是 hilo.

转载于:https://www.cnblogs.com/haogj/archive/2011/10/04/2199125.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三、规则组织的衍生组织——经山形组织数学模型的建立

基础概念公式推到可参考该专栏下的前几篇博文。 经山形组织图: 左半部分:,3上2下1上2下,右斜,飞数为1 右半部分:,3上2下1上2下,左斜,飞数为-1 左右两部分只有飞数是相…

c语言 函数的参数传递示例_scalbln()函数以及C ++中的示例

c语言 函数的参数传递示例C scalbln()函数 (C scalbln() function) scalbln() function is a library function of cmath header. It scales the significand using floating-point base exponent (long int) i.e. it is used to calculate the product of the given signific…

上周热点回顾(7.8-7.14)

热点随笔: MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...(ZYM) 我的新书--《从员工到经理人》(Jimmy Zhang) MVC实用架构设计(三&#xff0…

储存过程生成器

/Files/qanholas/SPGen_ReleaseCandidate1_Binaries.zip ---- Dropping stored procedure sp_费用表_SelectAll : --IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id OBJECT_ID(N[sp_费用表_SelectAll]) AND OBJECTPROPERTY(id, NIsProcedure) 1)DROP PROCEDURE [dbo].[sp…

基于计算机控制的温度检测系统,基于专用温度传感的温度检测系统.doc

基于专用温度传感的温度检测系统摘 要 在现代工业领域温度检测系统是指用某种方式显示出当前的环境温度。传统使用PTC或NTC电阻作为温度传感器的方式在使用过程中存在着很多不足之处比如所采集温度的精度比较低、系统的可靠性差、设计难度较大、整体设计成本较高等缺点已…

LeetCode 121:买卖股票的最佳时机 思考分析

题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出…

四、规则组织的衍生组织——经向破斜组织数学模型的建立

基础概念公式推到可参考该专栏下的前几篇博文。 经向破斜组织图: 左半部分:,3上2下1上2下,右斜,飞数为1 右半部分:,2上1下2上3下。左斜,飞数为-1 左右两部分,经纬纱组织…

EASYUI+MVC4通用权限管理平台

通用权限案例平台在经过几年的实际项目使用,并取得了不错的用户好评。在平台开发完成后,特抽空总结一下平台知识,请各位在以后的时间里,关注博客的更新。 1.EASYUIMVC4通用权限管理平台--前言 2.通用权限管理平台--架构选型 3.通用…

int max+1小于0_INT_MAX常数,C ++中的示例

int max1小于0C INT_MAX宏常量 (C INT_MAX macro constant) INT_MAX constant is a macro constant which is defied in climits header, it is used to get the maximum value of a signed int object, it returns the maximum value that a signed int object can store, wh…

在计算机领域客观事物的属性表示为数据,数据与信息试题解析

一图看懂数据与信息1、在计算机领域,信息是经过转化而成为计算机能够处理的__________。A.数据B.符号C.图形D.数字答案:A。解析:本题考查有关信息基本概念的知识。信息是人们由客观事物得到的。…

Mysql Data 目录和 Binlog 目录 搬迁

Mysql5.1.38 Data 目录和 Binlog 目录 搬迁 [mysql-bin.index not found (Errcode: 2)]Leave a comment Go to comments刚开始安装时使用了默认目录,使用一段时间,数据慢慢变在,发现当前设置的目录空间不够时,就要搬迁数据到另一个…

【数据结构基础】【散列表】

散列表也叫做哈希表(hash table),这种数据结构提供了键(key)和值(value)的映射关系。只要给出一个key,就可以高效查找它匹配的value,时间复杂度接近O(1); 哈希函数 哈希函数通过某种方式,把key和数组下标进行转换。 在java中,每…

VisualStudio运行C++项目检测include<stdio.h>报错解决方案

一、项目—>属性 二、将SDL检查更改为否即可

事业单位计算机技术岗工资,事业单位新入职的人员在管理岗位和技术岗位工资待遇是否有区别?...

解答于: 2016-05-24 17:17工伤保险条例对工伤工资待遇有说明: 第三十一条职工因工作遭受事故伤害或者患职业病需要暂停工作接受工伤医疗的,在停工留薪期内,原工资福利待遇不变,由所在单位按月支付。  停工留薪期一般…

信息设计中的“父子关系”

交互设计工作核心在于信息架构和交互细节设计。信息架构包括信息分类以及信息展示逻辑设计;交互细节则多表现为控件的选择,交互效果的定义等。在信息设计中,遇到最棘手的问题就是信息量太多而显得设计结果不尽人意,那么在砍不掉需…

python 示例_带有示例的Python文件关闭属性

python 示例文件关闭属性 (File closed Property) closed Property is an inbuilt property of File object (IO object) in Python, it can be used to check whether a file object (i.e. a file) is closed or not, this is a read-only property and returns a Boolean val…

[Object-oriented] : 控制反转

前言 : 参加点部落的活动,关于IoC(控制反转)大家有很多的讨论。本文排除对象生成的部份,单纯解释IoC为甚么叫做控制反转。本篇文章以之前写的 [Object-oriented] : 重用内容来举例。 未IoC之前的对象图 : 很明显的左边的组件A,相依右边的组件…

二、规则组织数学模型的建立

一、规则组织数学模型的建立 规则组织满足两个不变:1,组织点运动规律不变、2,飞数不变的单系统组织 即:若知道组织点运动规律和飞数即可确定唯一一个组织。 3上2下,组织循环数为325,经纱循环数纬纱循环数…

LeetCode 3:无重复字符的最长子串 思考分析

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”&#x…

e-r模型教案高中计算机,《ER模型1》[数据库][计算机]教案.doc

《ER模型1》[数据库][计算机]教案一、复习旧知识点1、数据库概念设计的意义是什么?2、概念设计的基本步骤是什么?二、明确学习目标1、E-R模型的基本元素2、属性的分类三、重点、难点E-R模型的基本元素基本属性和复合性四、讲授知识点,指导自学…