![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hibernate
亦阿克温
这个作者很懒,什么都没留下…
展开
-
Hibernate的延迟加载机制&&在实际应用中,延迟加载与Session关闭的矛盾是如何处理的?
关于如何理解Hibernate的延迟加载机制?在实际应用中,延迟加载与Session关闭的矛盾是如何处理的?延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。Hibernate使用了虚拟代理机制实现延迟加载,我们使用Session的load()方法加载数据或者一对多关联映射在使用延迟加载的情况下从一的一方加载多的一方,得到的都是虚拟代理,简单的说返回给用户的并不是实体本身,而...原创 2018-10-13 18:37:36 · 145 阅读 · 0 评论 -
Hibernate常见优化策略
① 制定合理的缓存策略(二级缓存、查询缓存)。② 采用合理的Session管理机制。③ 尽量使用延迟加载特性。④ 设定合理的批处理参数。⑤ 如果可以,选用UUID作为主键生成器。⑥ 如果可以,选用基于版本号的乐观锁替代悲观锁。⑦ 在开发过程中, 开启hibernate.show_sql选项查看生成的SQL,从而了解底层的状况;开发完成后关闭此选项。⑧ 考虑数据库本身的优化,合理的索引...原创 2018-10-13 18:38:50 · 122 阅读 · 0 评论 -
Hibernate的一级缓存、二级缓存和查询缓存
Hibernate的Session提供了一级缓存的功能,默认总是有效的,当应用程序保存持久化实体、修改持久化实体时,Session并不会立即把这种改变提交到数据库,而是缓存在当前的Session中,除非显示调用了Session的flush()方法或通过close()方法关闭Session。通过一级缓存,可以减少程序与数据库的交互,从而提高数据库访问性能。SessionFactory级别的二级缓存...原创 2018-10-13 18:39:38 · 689 阅读 · 0 评论 -
hibernate笔记之阐述实体对象的三种状态以及转换关系
① 瞬时态:当new一个实体对象后,这个对象处于瞬时态,即这个对象只是一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被JVM的垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过Session的save()、saveOrUpdate()、persist()、merge()方法把瞬时态对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久态对象。② 持久态...原创 2018-10-13 18:44:16 · 360 阅读 · 0 评论 -
hibernate锁机制有什么用?Hibernate的悲观锁和乐观锁机制
有些业务逻辑在执行过程中要求对数据进行排他性的访问,于是需要通过一些机制保证在此过程中数据被锁住不会被外界修改,这就是所谓的锁机制。Hibernate支持悲观锁和乐观锁两种锁机制。悲观锁,顾名思义悲观的认为在数据处理过程中极有可能存在修改数据的并发事务(包括本系统的其他事务或来自外部系统的事务),于是将处理的数据设置为锁定状态。悲观锁必须依赖数据库本身的锁机制才能真正保证数据访问的排他性,关于数...原创 2018-10-13 18:48:58 · 153 阅读 · 0 评论 -
Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?
Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。对于应用程序,最好将SessionFactory通过单例模式进行封装以便于访问。Sessi...原创 2018-10-26 09:22:33 · 1695 阅读 · 1 评论 -
持久层设计要考虑的问题有哪些
持久层设计要考虑的问题有哪些所谓"持久"就是将数据保存到可掉电式存储设备中以便今后使用,简单的说,就是将内存中的数据保存到关系型数据库、文件系统、消息队列等提供持久化支持的设备中。持久层就是系统中专注于实现数据持久化的相对独立的层面。持久层设计的目标包括:数据存储逻辑的分离,提供抽象化的数据访问接口。数据访问底层实现的分离,可以在不修改代码的情况下切换底层实现。资源管理和调度的分离...原创 2018-10-26 09:25:00 · 1499 阅读 · 0 评论 -
Session加载实体对象的过程
Session加载实体对象的过程① Session在调用数据库查询功能之前,首先会在一级缓存中通过实体类型和主键进行查找,如果一级缓存查找命中且数据状态合法,则直接返回;② 如果一级缓存没有命中,接下来Session会在当前NonExists记录(相当于一个查询黑名单,如果出现重复的无效查询可以迅速做出判断,从而提升性能)中进行查找,如果NonExists中存在同样的查询条件,则返回null...原创 2018-10-26 09:28:48 · 463 阅读 · 0 评论