NHibernate中主键生成策略详解.

最近一直在看NHibernate其中关于主键生成策略这块总是不太清楚,关于属性的定义过于模糊,出现一定异常发现处理方法很有限,下午利用一定时间在网上看了一定资料,决定来整理关于主键生成策略的完整的详细资料。因为学习NHibernate时间还不是太长,难免其中也许有一定纰漏,请大家谅解并指出。

看看格式:

NHibernate中主键生成策略详解. -- 在id字节中关于Generator中配置
NHibernate中主键生成策略详解.
< id                                              
NHibernate中主键生成策略详解.        name
= " PropertyName "                       
NHibernate中主键生成策略详解.        type
= " typename "                           
NHibernate中主键生成策略详解.        column
= " column_name "                      
NHibernate中主键生成策略详解.        unsaved
- value = " any|none|null|id_value "    
NHibernate中主键生成策略详解.        access
= " field|property|nosetter|ClassName " >
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.        
< generator  class = " generatorClass " />
NHibernate中主键生成策略详解.
</ id >

其实在<id>配置节点中,<generator>子节点是可选的,属性class的是一个.NET类名称,用来为该持久化类生成一个唯一的标识,这个Class赋值有两种—

A:系统内置生成器的名称(很常用)  B:自定义的类名称(这个自定义类实现了唯一标示)

B方法说明:

NHibernate中主键生成策略详解. B:方法一般很少用,系统内置生成器就够用了,如果定义的自定义类中,需要传入使用的参数
NHibernate中主键生成策略详解.可用Param来传递参数  具体实现如下:
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.
< id name = " Id "  type = " Int64 "  column = " uid "  unsaved - value = " 0 " >
NHibernate中主键生成策略详解.        
< generator  class = " NHibernate.Id.TableHiLoGenerator " >
NHibernate中主键生成策略详解.                
< param name = " table " > uid_table </ param >
NHibernate中主键生成策略详解.                
< param name = " column " > next_hi_value_column </ param >
NHibernate中主键生成策略详解.        
</ generator >
NHibernate中主键生成策略详解.
</ id >
NHibernate中主键生成策略详解.

A方法说明:

A方法使用中,关于内置的生成器需要熟练掌握每个参数所执行动作,用来备查,具体的详细列表如下:

NHibernate中主键生成策略详解. -- 具体每个参数具体说明如下:可根据个人情况来使用
NHibernate中主键生成策略详解.increment
NHibernate中主键生成策略详解.用于为int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.identity
NHibernate中主键生成策略详解.对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。数据库返回的主键值 返回的标识符是int类型的。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.sequence
NHibernate中主键生成策略详解.在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是int类型的。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.hilo
NHibernate中主键生成策略详解.使用一个高
/ 低位算法来高效的生成int类型的标识符。给定一个表和字段(默认分别是是hibernate_unique_key 和next_hi)作为高位值得来源。 高 / 低位算法生成的标识符只在一个特定的数据库中是唯一的。在用户自行提供的连接中,不要使用这种生成器。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.你可以使用where参数来指定表里面用了多少列数据, You can use the 
" where "  parameter to specify the row to use  in  a table. This  is  useful  if  you want to use a single tabel  for  your identifiers, with different rows  for  each table. 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.seqhilo
NHibernate中主键生成策略详解.使用一个高
/ 低位算法来高效的生成int类型的标识符,给定一个数据库序列(sequence)的名字。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.uuid.hex
NHibernate中主键生成策略详解.用一个System.Guid的ToString()方法法生成字符串类型的标识符, 字符串的长度由format参数定义。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.uuid.
string
NHibernate中主键生成策略详解.用一个新的System.Guid实例的byte[]转化为字符串作为标示符。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.guid
NHibernate中主键生成策略详解.使用新的System.Guid实例作为标示符。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.guid.comb
NHibernate中主键生成策略详解.使用Jimmy Nilsson的算法(请参阅http:
// www.informit.com/articles/article.asp?p=25862)生成一个新的System.Guid标示符。 
NHibernate中主键生成策略详解.

NHibernate中主键生成策略详解.native
NHibernate中主键生成策略详解.根据底层数据库的能力选择identity, sequence 或者hilo中的一个。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.assigned
NHibernate中主键生成策略详解.让应用程序在 Save()之前为对象分配一个标示符。 
NHibernate中主键生成策略详解.
NHibernate中主键生成策略详解.foreign
NHibernate中主键生成策略详解.使用另外一个相关联的对象的标识符。通常和
< one - to - one > 联合起来使用。
NHibernate中主键生成策略详解.

 

你可能感兴趣的:(Hibernate)