- 浏览: 501848 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (437)
- Windows设置 (2)
- oracle数据库 (39)
- bug--jsp (4)
- j2se (13)
- js (40)
- bug-tomcat不能启动程序 (1)
- Hibernate (29)
- eclipse (20)
- java (65)
- 设计模式 (6)
- bug (18)
- PL/SQL (11)
- 前台 (5)
- 杂谈 (25)
- UML (1)
- jdbc编程 (2)
- 技术调研 (1)
- 数据通信 (2)
- ios (1)
- servlet自学笔记 (10)
- tomcat (9)
- SQL学习笔记 (6)
- java工具 (1)
- 数据库设计 (4)
- javascript (10)
- jsp (11)
- struts (17)
- ajax (7)
- linix/Unix (6)
- 资源 (3)
- spring (14)
- 算法 (5)
- 计算机网络 (2)
- http (5)
- c++ (2)
- web应用 (3)
- jvm (5)
- java中的字符编码 (14)
- java代码库 (2)
- classloader (1)
- 读书笔记 (1)
- c (1)
- 开源软件 (1)
- svn (1)
- AOP (1)
- java序列化 (1)
- 多线程 (4)
- The legendary programmers (1)
- Apache http Server (1)
- html tag (3)
- struts1.X学习笔记 (5)
- buffalo (1)
- 自己收藏 (0)
- TOEFL(IBT) (1)
- 网络翻墙 (0)
- 编译原理 (1)
- 书籍推荐 (1)
- css (10)
- javaee环境搭建资料 (1)
- 开源工具 (1)
- 美国生活 (1)
- spring自学 (3)
- log4j (3)
- 算法与数据结构 (5)
- 病毒,插件处理大全 (1)
- flex (2)
- webservice (1)
- git (7)
- cs (1)
- html (4)
- javaee (6)
- 开车 (0)
- springmvc (3)
- 互联网架构 (2)
- intellij idea (18)
- maven (15)
- mongodb (2)
- nginx (1)
- react (3)
- java基础例子 (2)
- springboot (2)
- 培训 (5)
- mysql (3)
- 数据库 (3)
- 生活 (2)
- intellij (3)
- linux (2)
- os (3)
最新评论
-
潇洒天涯:
[color=blue][color=cyan] ...
oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 -
hekai1990:
受教了..
oracle中的varchar2
Hibernate中,<id>标签下的可选<generator>子元素是一个Java类的名字,用来为该持久化类的实例生成惟一标示,所有的生成器都实现net.sf.hibernate.id.IdentifierGenerator接口这是一个非常简单的接口,某些应用程序可以选择提供它们自己的特定实现当然,Hibernate提供了很多内置的实现下面是一些内置主键生成器(Key Generator)的意义 1) assigned 2) hilo 3) seqhilo 6) sequence 7) native 8) uuid.hex 10)guid 11)select 12)foreign
主键由外部程序负责生成,无需Hibernate参与。 让应用程序在save()之前为对象分配一个标示符。这是 <generator>元素没有指定时的默认生成策略。
通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。 使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和字段(默认分别是是 hibernate_unique_key 和next_hi)作为高位值的来源。 高/低位算法生成的标识符只在一个特定的数据库中是唯一的。
与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。 使用一个高/低位算法来高效的生成long, short 或者 int类型的标识符,给定一个数据库序列(sequence)的名字。
4) increment
主键按数值顺序递增此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常因此,如果同一数据库有多个实例访问,此方式必须避免使用。
用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。
5) identity
采用数据库提供的主键生成机制如DB2 SQL Server MySQL中的主键生成机制。 对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。
采用数据库提供的sequence 机制生成主键如Oralce 中的Sequence。在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。
由Hibernate根据底层数据库自行判断采用identity hilo sequence其中一种作为主键生成方式
用一个128-bit的UUID算法生成字符串类型的标识符,这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。 由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键例如:5abefd3890cat33llsica3ee43bk222
9) uuid.string
与uuid.hex 类似,只是生成的主键未进行编码(长度16)在某些数据库中可能出现问题(如PostgreSQL)
在MS SQL Server 和 MySQL 中使用数据库生成的GUID字符串。
通过数据库触发器选择一些唯一主键的行并返回主键值来分配一个主键。
使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。
一般而言,利用uuid.hex方式生成主键将提供最好的性能和数据库平台适应性另外由于常用的数据库,如 OracleDB2SQLServerMySql 等,都提供了易用的主键生成机制(Auto-Increase 字段或者Sequence)我们可以在数据库提供的主键生成机制上,采用generator-class=native的主键生成方式不过值得注意的是,一些数据库提供的主键生成机制在效率上未必最佳,大量并发insert数据时可能会引起表之间的互锁数据库提供的主键生成机制,往往是通过在一个内部表中保存当前主键状态(如对于自增型主键而言,此内部表中就维护着当前的最大值和递增量),之后每次插入数据会读取这个最大值,然后加上递增量作为新记录的主键,之后再把这个新的最大值更新回内部表中,这样,一次Insert操作可能导致数据库内部多次表读写操作,同时伴随的还有数据的加锁解锁操作,这对性能产生了较大影响因此,对于并发Insert要求较高的系统,推荐采用uuid.hex 作为主键生成机制。
发表评论
-
Hibernate:Envers 审计
2018-09-17 23:57 529https://blog.csdn.net/Silen ... -
【转】Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
2016-12-13 15:07 699http://www.cnblogs.com/hoojo ... -
【转】Spring3 整合Hibernate3.5 动态切换SessionFactory (切换数据库方言)
2016-12-13 15:05 767http://www.cnblogs.com/hoojo ... -
Hibernate中的三种对象状态:
2015-11-15 18:33 415Hibernate中的三种对象状态: 1.瞬时(tr ... -
【转】Hibernate过滤器使用窍门
2015-09-08 17:13 551Hibernate过滤器(filter)是全局有效的 ... -
【转】Hibernate left join(左连接)
2015-08-26 17:27 1993如果是内连接的多表查询可以不用join关键字,在where ... -
【转】Hibernate 所有缓存机制详解
2015-08-26 14:50 653hibernate提供的一级缓存 hibernate是一个 ... -
【转】Hibernate中session的clear(),flush(),evict()方法详解
2015-08-26 14:22 10431.Clear 方法 无论是Load 还是 Get ... -
object references an unsaved transient instance - save the transient instance be
2015-04-15 10:17 910在做hibernate保存时出现异常object refer ... -
【转】An association from the table * refers to an unmapped class: *
2015-04-08 10:13 960解决方法:class路径没写正确。有三个地方需要注意1、< ... -
hibernate映射文件one-to-one 元素属性(转)
2013-01-07 19:13 834one-to-one 元素 属性: name:映射类 ... -
【转】Hibernate中重要对象的详解
2012-12-13 14:18 672★→→SessionFactory (org.hibernat ... -
【转】很详细的spirng+struts+hibernate实例
2012-12-13 14:17 2378本文并不想介绍Struts,Spring,Hiber ... -
【转】hibernate动态创建表,修改表字段
2012-10-22 18:50 1050我们知道,hibernate的tool工具中有个包hbm2dd ... -
【转】hibernate many-to-one(多对一)及 cascade(级联)
2012-09-19 16:18 802Model public class User { // ... -
报错:使用hibernate字符串超长
2012-09-13 17:47 1576在使用varchar2类型时必须指定其长度(最小1字节 ... -
包名不同的同名类的hibernate冲突
2012-09-13 14:38 1214在实际开发中,在有类a.b.c.POClass和a.b.c ... -
【转】hibernate自定义类型部分接口详解--用户自定义类型
2012-08-31 16:48 0UserType public interface Us ... -
ORA-00904: "THIS_"."C_UNIT": 标识符无效
2012-08-02 13:40 1576hibernate could not resolve pro ... -
oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值
2012-08-02 11:10 3443函数声明:nvl(col,val) 说明:当col为空时取va ...
相关推荐
在Hibernate中,标签(Annotations)是用于定义对象与数据库表之间的映射关系的一种方式,它们直接在类或属性上进行注解,使得代码更简洁、易读。本文将详细介绍Hibernate中的主要标签及其用法。 1. **@Entity** ...
使用<composite-id> 标签(并且内嵌元素)代替通常的<id>标签。比如,OrderLine类具有一个主键,这个主键依赖于Order的(联合)主键。 <composite-id name="id" class="OrderLineId"> </composite-id> ...
在Hibernate的XML映射文件中,`<map>`标签用于定义`phones`属性与数据库表`PHONES`的映射关系,`<key>`标签指定`Person`的`id`作为外键,`<index>`标签用于映射电话名称,而`<element>`标签则映射电话号码。...
在Java Web开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互。Struts是MVC(模型-视图-控制器)框架,用于处理HTTP请求,而JSP(JavaServer Pages)则用于创建动态网页。...
`<id>`标签定义主键,`<property>`标签则对应于类中的普通属性。 - `<id>`标签下的`<generator>`子标签定义了主键的生成策略,`class="native"`表示使用数据库默认的主键生成策略。 - `<property>`标签的`name`...
Hibernate通过`<class>`标签(XML映射)或@Entity注解(注解映射)定义实体类,`<id>`表示主键,`<property>`或@Basic对应字段,`<many-to-one>`或@ManyToOne处理一对多关系,`<one-to-many>`或@OneToMany处理多对...
在Hibernate中,可以通过`<many-to-one>`标签来实现。 ```xml <id name="id" column="articleid"> </id> <id name="id" column="authorid"> </id> ``` ##### 3.3 多对多关系映射 多对多关系是...
以上便是对Hibernate基础的概览,实际开发中,还需要深入了解实体关系映射、集合映射、级联操作、缓存机制、事务管理、性能优化等方面的知识,才能更好地利用Hibernate提升开发效率并保证应用程序的稳定运行。...
这个属性可以配置在 `hibernate.hbm.xml` 文件中的 `<id>` 标签内,它允许你选择不同的策略来生成 ID。 1. **identity**:这个生成器适用于像 MySQL 这样的数据库,它依赖于数据库自身的自动递增功能。例如,在 ...
- **自然ID(Natural-ID)**:自然ID的概念及其在Hibernate中的应用。 - **Any**:特殊映射类型,用于处理非标准数据类型。 - **属性(Properties)**:实体类中属性的具体映射规则。 以上内容覆盖了Hibernate中文...
`<id>`标签定义了主键,`<property>`标签则对应类中的其他属性。`<generator class="native">`表示主键生成策略,这里的`native`策略会根据数据库的特性自动选择合适的主键生成方式。 了解了这些基础概念后,开发者...
例如,`<id>`标签表示主键,`<property>`标签映射一般字段,如名称、电子邮件等。 二、Hibernate API与数据库交互 1. Session接口:是与数据库交互的主要接口,提供了保存、更新、删除对象以及执行查询等方法。 2...
### 方法一:在 XML 中设置 property 标签 update = "false" 在 Hibernate 的 XML 配置文件中,我们可以设置某些属性的 update 属性为 false,这样 Hibernate 就不会更新这些属性。例如,我们可以设置 age 属性的 ...
【标签】"hibernate"强调了这个项目的核心内容,即围绕Hibernate框架展开。在Hibernate项目中,通常会涉及以下几个核心知识点: 1. **配置文件**:`hibernate.cfg.xml`是Hibernate的主配置文件,其中包含了数据库...
### 在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架 #### 一、概述 在当今的企业级应用程序开发中,采用MVC(Model-View-Controller)架构模式的框架组合变得越来越普遍。其中,Struts2、Spring与Hibernate...
至于“工具”标签,这可能指的是使用特定的工具或插件来辅助理解和调试Hibernate的懒加载行为,比如日志工具(如Log4j)可以跟踪SQL语句,帮助开发者查看是否成功实现了懒加载。另外,IDE如IntelliJ IDEA或Eclipse的...
在这个例子中,`<id>`标签定义了主键,`<generator>`指定自动增长的策略。`<property>`定义了对象属性。`<loader>`标签用于定义命名查询,这在获取或加载Person对象时会被调用。最后,`<sql-insert>`, `<sql-update>...
在Hibernate中,我们可以使用`<list>`标签来映射,通过`index column`定义索引列,`inverse`属性控制关联的维护权。例如,一个学生可以有多个课程,那么课程可以被映射为List。 2. **Set映射**:Set不允许元素重复...