一、Hibernate控制的事务
ACID
atomicity consistency isolation durability
事务保证原子操作的不可分,也就是操作的同时成功或同时失败。
Transaction tran=session.beginTranaction();
tran.commit();
tran.rollback();
以上是事务对象的方法,来实现对事务的支持。
二、hibernate的事务隔离级别
hibernate的事务隔离级别和JDBC中大致相同。
设置时要在hibernate.cfg.xml配置
<property name="hibernate.connection.isolation">4</property>
1,读未提交的数据(Read uncommitted isolation)
2,读已提交的数据(Read committed isolation)
4,可重复读级别(Repeatable read isolation)
8,可串行化级别(Serializable isolation)
三、hibernate的锁(悲观锁,乐观锁)
session.get(User.class , userid , LockMode.UPGRADE);
悲观锁是由数据库本身所实现的,会对数据库中的数据进行锁定,也就是锁行。
LockMode.UPGRADE,修改锁,在get()方法中加上这个设置作为第三个参数。
LockMode.NONE 无锁机制
LockMode.READ 读取锁
LockMode.WRITE 写入锁,不能在程序中直接使用
还可以使用Session.lock() Query.setLockMode() Criteria.setLockMode()方法来设置锁
乐观锁,也就是通过对记录加上某些信息来解决并发访问的问题。
版本检查<version>标签
要在其表中多加上一列表示版本信息,会在读取时读到这个版本号,并在修改之后更新这个版本号,并且只有版本号相同才会予以更新,如果版本号低,就会抛出例外。
<version name="version" column="version" type="integer" />
时间戳
使用时间戳,是通过最后修改时间来判断是否来做更新操作,也就是只有在最后更新时间之后才会做更新。
<timestamp name="updateTime" column="updatetime"/>
四、类继承关系映射
建表策略
(1)所有类建一个表 (2)只为具体类建表 (3)每个类建一个表。
只为具体类建表,使用于不使用多态的情况下,具体类之间没有继承关系时适用
需要针对每个类写映射配置文件,就和普通的单表映射的xml文件相同。
也可以使用一个xml文件来进行映射,可以通过写union-subclass标签来表现其关系
这里不能使用id生成策略中的native,而是要指定特定的生成策略。
例:
<union-subclass name="notpad" table="tpcc_notpad">
<property name="wight" column="wight" type="integer"/>
</union-subclass>
<union-subclass name="desktop" table="tpcc_desktop">
<property name="LCD" column="isLCD" type="yes_no"/>
</union-subclass>
分享到:
相关推荐
本篇将基于“学习Hibernate第二天”的主题,结合“源码”和“工具”这两个标签,深入探讨Hibernate的一对一主键关联双向映射,以及如何在实际开发中利用这一特性。 在Java对象关系映射(ORM)框架中,数据模型通常...
在hibernate学习的过程中,第四天通常会深入探讨实体类、映射文件、配置文件以及查询语言等方面的内容。这些是hibernate框架的基础,也是开发者掌握持久化操作的关键。让我们逐一剖析这些知识点。 首先,实体类...
4. Session和Transaction:深入理解Hibernate的Session接口,包括保存、更新、删除、加载和检索对象,以及事务处理的原理和API使用。 5. HQL和 Criteria查询:介绍Hibernate特有的面向对象的查询语言HQL,以及...
在hibernate培训的第四天,我们深入探讨了这个强大的对象关系映射(ORM)框架,它是Java开发中处理数据库操作的重要工具。今天的学习重点主要包括以下几个方面: 1. **Hibernate核心概念**:Hibernate是一个开放源...
《Hibernate入门:初识与实践》 ...总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。通过实践,你可以逐步熟悉ORM思想,为后续的Java开发奠定坚实的基础。
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
在使用Hibernate时,除了核心的Hibernate库,我们通常还需要引入一些第三方类库来增强其功能或满足特定需求。这里提到了三个重要的第三方库:dom4j、log4j和antlr。 1. dom4j-1.6.1.jar: Dom4j是一个非常灵活的...
【hibernate第一个例子】 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要...
- 第四天可能讲解了HQL的使用,包括查询、更新、删除等操作。 - 第五天可能涉及了高级主题,如性能优化、缓存机制、Cascading和Lazy Loading等。 通过这五天的复习,读者将能够全面了解Hibernate的工作原理,熟练...
《精通Hibernate第四章》主要探讨的是对象-关系映射的基础知识以及在使用Hibernate进行数据库操作时的映射技巧。这一章节深入解析了如何在Java应用程序中有效地管理和持久化数据。 首先,我们回顾一下软件的体系...
**标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...
【hibernate培训第二天】——深入理解Hibernate框架 在软件开发中,ORM(Object-Relational Mapping)框架已经成为连接数据库与应用程序的重要桥梁,而Hibernate作为Java领域中的主流ORM框架,其强大而灵活的功能...
第四天的学习涵盖了高级特性,如事务管理、延迟加载和级联操作。在Java应用中,事务管理是确保数据一致性和完整性的基础,Hibernate通过Session提供了方便的事务处理API。延迟加载是一种优化策略,它允许我们在真正...
4. **缓存机制**:为了提高性能,Hibernate支持多种缓存策略,书中详细介绍了如何合理地使用这些缓存选项。 5. **查询语言**:Hibernate提供了强大的查询语言HQL(Hibernate Query Language),用于执行复杂的数据库...
**hibernate培训第三天** 在hibernate培训的第三天,我们深入探讨了这个强大的对象关系映射(ORM)框架的关键概念和技术。这天的学习主要涵盖了实体管理、持久化操作、事务处理以及查询语言等方面,旨在提升学员对...
### Hibernate4实战之第五部分:Hibernate的事务与并发 #### 一、事务基础概念 **事务(Transaction)** 是一组逻辑上紧密相连的操作集合。在数据库领域,事务具备ACID特性: - **原子性(Atomicity)**:事务内的所有...
9. **实体状态与生命周期**:阐述Hibernate4中实体的四种状态(瞬时态、持久态、托管态和游离态)及其转换。 10. **性能优化**:提供一些优化Hibernate4性能的建议,如批处理、预加载、二级缓存的合理使用等。 ...
6. **缓存策略**:Hibernate提供了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的)。合理利用缓存能提高性能,但需注意缓存一致性问题。 7. **性能优化**:包括延迟加载(Lazy Loading)、批处理...
接着,我们来到`chapter4`,这一章节主要涉及Hibernate的实体管理和持久化操作。实体管理主要包括EntityPersister、AbstractEntityPersister和IdentifierGenerator。EntityPersister是所有持久化类的抽象接口,定义...
4. **Session与Transaction**:深入理解Hibernate的Session接口,它是操作数据库的主要入口,涵盖增删改查(CRUD)操作,以及事务管理的原理和实践。 5. **查询语言HQL**:介绍Hibernate特有的面向对象的查询语言...