java框架之Hibernate框架知识点整理。

ORM(Object Realtion Mapping)对应关系映射。通过映射关系,能够将对象的数据存储到数据中,并且能从数据库中获取数据存储到一个对象中。

HIbernate与ORM的关系:Hibernate 是ORM的实现。Hibernate是一个数据持久化层的ORM框架。

HIbernate的优点:简化了JDBC繁琐的编码;对面向对象特性支持良好。可以执行好。

Hibernate的缺点:不适合需要使用数据库特定优化机制的情况。不适合大规模的批量数据处理。

使用Hibernate的简单步骤:下载并部署jar文件-->编写Hibernate配置文件-->创建持久化类和映射文件-->使用Hibernate API。

  • hibernate运行流程图:

hibernate各个包作用。

配置文件和映射文件:配置文件中需要配置四本一言。映射文件是数据库表和javaBean的映射。

五大核心接口:Configuration、SessionFactory、Session、Transaction、Query。

HQL语句:hibernate为适应各种数据库,创建出自己的sql语句:hql。hql可适用于各种hibernate支持的数据库。

对象的三种状态:临时状态(Transient),持久化状态(Persistent),游离状态(Detached)。

临时状态:也称作瞬时状态,该对象既没有在session中,也没有在数据库中。如刚 new 出来的新对象 ,session执行了delete方法之后的对象。

扫描二维码关注公众号,回复: 2390668 查看本文章

持久化状态:对象在session中存在,在数据库表中也存在该数据。如临时状态被save,游离状态被update,get或者load的数据。

游离状态:该对象在数据库中有标识符(该对象的id在数据库中存在)在session中没有该对象。如session执行了close、clear、evict等方法,处于持久化的对象就变成了游离状态。刚new出来的对象,如果数据库中有它的主键,该对象也是游离状态。

一级缓存:session级别缓存,当我们使用了 get/load/find Query等查询出来的数据,默认在session中就会有一份缓存数据,缓存数据就是从数据库将一些数据拷贝一份当道对应的地方。每次获取数据时,会先从缓存中查找,如果没有再去数据库查询。这样的好处是提高了查询效率,减少了对数据库的直接操作。一级缓存不可卸载,只要使用了session肯定就用到了session的缓存,是hibernate控制的,我们不能手动配置。若不想使用一级缓存,则需要自己封装get方法,每次调用session,clear。

二级缓存:sessionFactory级别缓存,可以做到多个session共享此数据。sessionFactory缓存分类:内缓存,预制的sql语句。对象和数据库的映射信息。外缓存,存储的是我们允许使用的二级缓存对象。

二级缓存中存储的对象为大多为1.不经常进行改动的信息,多次查询的信息。2.对数据并发时候的安全没有要求的信息

实体之间的关系:一对多,多对一,一对一,多对多。

关系的配置:1.单向关联和双向关联。2.映射文件的配置。3cascade级联关系,inverse维护关系方设置,lazy懒加载。4增删改查代码。

事务的隔离级别:

8 Serializable 串行 事务不会产生并发,一个事务执行完成,下一个事务才能开始。

4 repeatable read 可重复读 当前事务进行读取数据时,其他事务对同一份数据做的更新操作提交之后,不会在当前事务生效

2 read committed 可读提交 当前事务进行读取数据,其他事务对同一份数据进行了修改,如果未提交,不会在当前事务生效

1 read uncommitted 可对未提交 当前事务进行读取数据,其他事务对同一份数据进行了修改,如果未提交,也会在当前事务生效

乐观锁:每次更新数据时候,根据主键和现有版本号查询当前数据,更新成功后,该条数据的版本号在原有基础上加1,如果在其他的并发事务中同时更新该数据,版本号比现有的版本号低,就无法进行更新。

悲观锁:每次取数据时都认为其他线程会修改,所以都会加锁(读锁、写锁、行锁等),当其他线程想要访问数据时,都需要阻塞挂起。可以依靠数据库实现,如行锁、读锁和写锁等,都是在操作之前加锁,在Java中,synchronized的思想也是悲观锁。

猜你喜欢

转载自blog.csdn.net/qq_42401622/article/details/81137738