`
badboy_blue
  • 浏览: 48492 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

深入浅出hibernate笔记

    博客分类:
  • java
阅读更多

实体的3种状态:Transient自由 Persistent持久 Detached游离
1、处于Persistent状态的对象将自动被固化到数据库中。
2、Detached和Transient区别:
Detached对象可以再次与某个session实例相关联而成为Persistent对象。
Transient状态的实体对象无主键信息,而Detached状态的实体对象包含其对你更数据库记录的主键值。

 

VO和PO
1、处于Transient和Detached状态的对象称为值对象(VO即Value Object)
处于Persistent状态的对象称为持久对象(PO即Persistence Object)
2、MVC架构中,位于Model层的PO时候允许被传递到其他层面,犹豫PO的更新最终将被映射到实际数据库中,
如果PO再其他层面比如view层发生变动,可能会对Model层造成意想不到的破坏。
3、BeanUtils.copyProperties();

 

equals和hashcode
1、colection在判断两个对象时候相等的时候,会先调用对象的hashCode方法,如果hashCode相同
的话,随即调用其equals方法,如果两次判断都为真,则认为对比的两个对象相等。
2、不覆盖equals和hashcode时候有个问题:实体对象的跨session识别。

 

数据缓存
1、缓存位于数据库和数据访问层之间。
2、ORM读取数据时,根据其缓存管理策略,首先在缓存中查询,如果缓存命中,则直接以此数据作为查询结果,
避免了数据库调用的性能开销。
3、ORM数据缓存包括:
事务级缓存(随session创建销毁)、
应用级缓存(同SessionFactory创建的session实例共享此缓存)、
分布式缓存(多个JVM之间共享)

 

Hibernate数据缓存
1、分为:内部缓存(session level一级缓存);二级缓存(sessionfactory level二级缓存)
2、引入二级缓存时需要考虑:
 a、数据库是否与其他应用共享(放弃二级缓存使用)
 b、应用是否需要部署在集群环境中(分布式缓存机制)
3、hibernate中启用二级缓存需要配置hibernate.cfg.xml和ehcache.xml,然后再映射文件中指定各个映射
实体的缓存同步策略。

 

缓存同步策略
1、缓存同步策略可以应用于实体类和集合属性。
2、hibernate的四种缓存同步策略:read-only、nonstrict-read-write、read-write、transactional。

 

hiberante事物管理
1、基于JDBC的事务管理  默认 使用commit实现
2、基于JTA的事务管理
3、JTA提供了跨session的事务管理能力,这是与JDBC事务最大的区别。
4、JDBC事务由connection管理,事务周期限于session的周期。JTA事务管理则由JTA容器实现,JTA事务横跨多个session。
5、嵌套事务会导致运行期错误。
6、业务逻辑的实现过程中,往往需要保证数据访问的排他性,保证数据在某个操作中不会被外界修改,所谓的“锁”。
包括悲观锁和乐观锁。
7、悲观锁的实现,依靠数据库提供的锁机制。for update
8、乐观锁大多是基于数据版本记录机制实现。optimistic-lock="version"

 

延迟加载lazy loading
1、实体对象的延迟加载
load方法可以指定可以返回目标实体对象的代理,hibernate引入CGLib作为代理机制实现的基础。
2、集合类型的延迟加载
3、属性延迟加载

 

数据批量导入
1、hibernate
2、JDBC preparedStatement.excuteBatch();

 

hibernate回调和拦截机制
1、hibernate通过lifecycle、validatable接口制定了实体对象CRUD过程中的回调方式。
实体必须实现lifecycle、validatable接口。
2、Interceptor接口定义了hibernate中的通用拦截机制。session创建时即可指定加载相应的Interceptor,
之后session的持久化操作动作都将首先经由此拦截器捕获处理。
3、Interceptor典型应用:数据稽核。

 

Session管理
ThreadLocal是java中一种较为特殊的线程绑定机制。通过ThreadLocal存取的数据,总是与当前线程相关。

 

hibernate性能优化 常见的优化策略
1、允许的情况下选用最新版本的hibernate
2、制定合理的缓存策略
3、采用合理的Session管理机制
4、尽量使用延迟加载特性
5、设定合理的批处理参数
6、如果可能,选用UUID作为主键生成器
7、如果可能,选用基于version的乐观锁策略替代悲观锁
8、开发过程中,打开show_sql,通过观察hibernate生成的sql语句进一步了解实现原理,指定更好的实现策略。

 

 

分享到:
评论

相关推荐

    《深入浅出Hibernate》读书笔记

    总之,《深入浅出Hibernate》读书笔记涵盖了实体对象生命周期的转换、实体对象的识别机制以及Hibernate的多级缓存策略,这些都是理解并有效使用Hibernate的关键点。通过深入学习这些概念,开发者能够更好地掌握...

    深入浅出Hibernate学习笔记

    在深入理解Hibernate的过程中,Criteria Query是一个重要的概念,它是Hibernate提供的一种面向对象的查询方式,使得开发者可以避免直接编写SQL语句,从而更加专注于业务逻辑。Criteria API允许我们将查询条件封装成...

    马士兵hibernate学习笔记(原版)

    《马士兵Hibernate学习笔记》是一份深入浅出的教程,旨在帮助初学者掌握Hibernate这一流行的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而减少了传统...

    Hibernate笔记

    【Hibernate笔记】是一份...这份笔记通过详细的实例和代码示例,深入浅出地讲解了Hibernate的核心特性,无论是初学者还是有经验的开发者,都能从中获益,进一步提升在J2EE环境下使用Hibernate进行数据库操作的能力。

    Hibernate 学习笔记&代码.zip

    本学习笔记和代码资源是基于黑马程序员在 B 站上的《Hibernate框架》课程,该课程深入浅出地讲解了 Hibernate 的核心概念和实际应用。 **第一天:Hibernate 概述与环境搭建** 1. **Hibernate 概念**:Hibernate 是...

    2023年Java相关课程系列笔记之十四Hibernate学习笔记.doc

    在本篇“2023年Java相关课程系列笔记之...总结,这门课程深入浅出地讲解了Hibernate的核心概念、使用方法以及其在Java开发中的优势。通过学习,开发者能够熟练掌握如何利用Hibernate进行高效的数据操作,提升开发效率。

    Hibernate入门笔记

    本笔记将深入浅出地介绍Hibernate的核心概念、配置、实体类的创建以及如何进行CRUD操作。 ### 一、Hibernate概述 Hibernate 是一个开源的ORM框架,它通过映射Java类到数据库表,将对象模型与关系模型关联起来,...

    hibernate-3.4.0资料集锦

    1. 尚学堂 Hibernate 学习笔记:尚学堂是一家知名的在线教育机构,其Hibernate教程深入浅出,适合初学者入门。笔记内容包括Hibernate的基本概念、配置、实体类、映射文件、Session接口的使用、事务管理等。 2. 达内 ...

    hibernate学习超强知识点荟萃

    这是超强的学习笔记,包学包会,里面涵盖了hibernate的所有知识点,深入浅出

    李兴华SSH课堂笔记

    李兴华老师的SSH课堂笔记深入浅出地讲解了这三大框架的核心概念、工作原理以及实际应用。 **Struts框架** Struts是Apache组织提供的一个开源MVC框架,它主要负责应用程序的控制流程。在Struts中,Action类是业务...

    hibernate入门必看

    本篇将深入浅出地介绍Hibernate的基础知识,帮助初学者快速入门。 ### 1. Hibernate概述 Hibernate 是一个开源的ORM框架,它的主要作用是将Java对象与数据库表进行映射,实现了对象的持久化。通过使用Hibernate,...

    java并发编程实践笔记资料.pdf

    16. 使用ThreadLocal变量可以确保线程封闭性,例如hibernate openSessionInView机制和jdbc的connection机制。 17. 单一不可变对象往往是线程安全的,但是复杂不可变对象需要保证其内部成员变量也是不可变的。 18. ...

    尚硅谷springboot核心技术笔记

    这份笔记深入浅出地解析了Spring Boot的各个关键组成部分,旨在帮助开发者从底层理解并熟练掌握Spring Boot的使用。 首先,Spring Boot的基础部分包括了自动配置、起步依赖和嵌入式Web服务器的概念。自动配置是...

    Android&Java; 技术笔记 等五本

    技术笔记 等五本"的压缩包内容涵盖了多个关键知识点,包括Animation动画详解、iOS 9人机交互指南、Java面试笔记以及深入浅出Java Web。下面将对这些主题进行详细阐述。 首先,我们来看Android的Animation动画详解...

    良格葛的java学习笔记

    这份笔记以其独特的视角和深入浅出的讲解方式,深受学习者喜爱,尤其适合初学者及有一定基础的开发者进行进阶学习。笔记可能包含了从基础语法到高级特性的全面覆盖,旨在帮助读者掌握Java的核心概念和技术。 在Java...

    hibernate学习资料

    这份学习笔记不仅适合初学者,也适用于有一定经验的开发者,因为它深入浅出地阐述了Hibernate的关键特性,并提供了丰富的实例来帮助理解。通过系统学习和实践,开发者可以更好地掌握Hibernate,从而在实际项目中灵活...

    JSF+Spring+Hibernate相关技术文档

    JSF+Spring+Hibernate的实例讲解.doc则可能通过具体的案例,深入浅出地解释了这三个技术如何协同工作,帮助开发者理解它们在实际项目中的应用。例如,它可能会涉及如何使用JSF的Managed Beans来处理用户输入,通过...

    深入浅出Struts2

    《深入浅出Struts2》课程是一门针对Java Web开发者设计的专业教程,旨在教授如何高效地使用Struts2框架构建动态、复杂的Web应用程序。Struts2作为一款强大的MVC(Model-View-Controller)框架,它极大地简化了Java ...

    良格葛的hibernate教程之CHM版

    该教程由良格葛编写,他在Java社区中有较高的知名度,尤其以其深入浅出的讲解风格而闻名。这个CHM(Compiled HTML Help)版本将所有教程内容整合在一个可搜索的离线文档中,方便开发者随时查阅。 【描述】:“良格...

Global site tag (gtag.js) - Google Analytics