Hibernate内置对象标识符(OID)生成器
来源:互联网 发布:淘宝账号怎样手机申诉 编辑:程序博客网 时间:2024/06/01 15:56
1.increment标识符生成器:
<hibernate-mapping> <class name="包名+类名" table="表名"> <id name="id" type="long" column="ID"> <meta attribute="scope-set">private</meta> <generator class="incorement"> </id> </class></hibernate-mapping>
Hibernate持久化一个对象的时候,会以自增的方式自动生成标识符。事实上Hibernate会首先取得最大的主键值,然后自增1,insert到数据库中.
当有多个进程的hibernate同时 操作数据库时,读取的最大键值相同,这样导致一个进程插入失败。
使用范围:
- 不依赖底层的数据库系统,适合于所有的数据库系统。
- 适应于只有单个hibernate应用进程访问同一个数据库的场合,在集群环境下不推荐使用(发生主键冲突)。
- OID必须是long、int、short设置为byte时抛异常。
2.identity:
<hibernate-mapping> <class name="包名+类名" table="表名"> <id name="id" type="long" column="ID"> <meta attribute="scope-set">private</meta> <generator class="identity"> </id> </class></hibernate-mapping>
要求底层数据库把主键设为自动增长:
MySql: auto_increament
MS SQL Server: identity
优点:不会发生increament方式的并发操作问题。
使用范围:
- 依赖于底层数据库,要求底层数据库必须支持自动增长字段类型。
- OID必须是long、int、short设置为byte时抛异常。
3.sequence:
<hibernate-mapping> <class name="包名+类名" table="表名"> <id name="id" type="long" column="ID"> <meta attribute="scope-set">private</meta> <generator class="sequence"> </id> </class></hibernate-mapping>
hibernate持久化一个对象时,首先曾底层数据库系统的序列中获得一个唯一序列号,再把他设置成主键。
使用范围:
- 要求数据库系统必须支持序列
- OID必须是long、int、short设置为byte时抛异常。
4.native:
<hibernate-mapping> <class name="包名+类名" table="表名"> <id name="id" type="long" column="ID"> <meta attribute="scope-set">private</meta> <generator class="native"> </id> </class></hibernate-mapping>
使用范围:
-与底层数据库无关性。根据数据库的方言,自动生成不同的主键生成方式。
适合跨数据库平台开发,根据数据库类型自动选择合适的标识符生成器** 。
- OID必须是long、int、short设置为byte时抛异常。
0 0
- Hibernate内置对象标识符(OID)生成器
- Hibernate内置标识符生成器
- Hibernate内置标识符生成器
- Hibernate内置标识符生成器
- 【Hibernate学习笔记】对象标识符(OID)
- Hibernate提供的内置标识符生成器
- Hibernate内置的持久化标识符生成器
- Hibernate提供的几种内置标识符生成器
- 【Hibernate学习笔记】内置标识符生成器的用法
- 【物联网】OID对象标识符
- 映射对象标识符(OID,对应数据库主键)
- Hibernate标识符生成器
- hibernate映射文件XXX.hbm.xml配置映射元素详解--对象标识符(OID)
- 对象标识符(OID)及其生成策略
- hibernate内置生成器
- Hibernate的ID标识符生成器
- Hibernate的ID标识符生成器
- hibernate之标识符生成器用法
- HTML+CSS+python+qtwebkit打造跨平台桌面应用(三)
- HTML+CSS+python+qtwebkit打造跨平台桌面应用(二)
- HTML+CSS+python+qtwebkit打造跨平台桌面应用(一)
- 【JNA探索之路系列】之一:JNA开篇
- Ubuntu 14 配置eclipse
- Hibernate内置对象标识符(OID)生成器
- 1043. Is It a Binary Search Tree (25)
- C语言调试接口
- java异常分析(一)
- Xcode自动注释插件
- iOS,viewWithTag搜索机制
- 线程池
- CAXA2007、2011,2013二次开发
- BZOJ 4116 Wf2015 Tours Tarjan