
Hibernate
春风化作秋雨
学而思,思而学
展开
-
Mybatis与JPA的优缺点
1、JPA java持久层API可理解为一种规范,Hibernate就是其具体一个实现。它的实现应用是Spring DataJpa,Spring提供了一套简化开发框架,按照约定好的方法命名规则,编写dao层接口,即可在不编写实现情况下执行数据库操作,还提供了除CRUD以外的功能,比如分页、排序、复杂查询等。SpringDataJpa可以理解为对JPA的再次封装,底层仍旧是Hibernate。2、JPA优势1、JPA可移植性好,支持Hibernate方言。2、提供单表CRUD方法,减少sql.原创 2021-12-25 18:22:17 · 2901 阅读 · 0 评论 -
hibernate 中 getCurrentSession 和 openSession区别
1、getCurrentSession()会绑定当前线程;openSession() 不会绑定当前线程。2、getCurrentSession()事务由Spring 控制的,且不需要手动关闭;openSession() 需开发者手动开启和提交事务。原创 2021-12-20 23:08:05 · 441 阅读 · 0 评论 -
Hibernate实体对象四大状态
首先声明,在Hibernate中,实体对象存在四种状态,而不是三种(见org.hibernate.event.def.AbstractSaveEventListener)。网上流传的hibernate对象三大状态,大概是因为hibernate官方文档没有更新,一个人写了之后,一个接着一个的copy吧,你懂的。状态常量/*** 持久态*/protected static final int PERSISTENT = 0;/*** 瞬时态*/protected static ...转载 2021-12-20 22:53:43 · 1176 阅读 · 0 评论 -
hibernate 缓存机制
hibernate 常用的缓存有一级缓存和二级缓存:1、一级缓存一级也称Session 缓存,只在 session 范围内有效,无需开发者干涉,由 hibernate 自身维护,可以通过:session.evict(object)清除 object 的缓存;session.clear()清除一级缓存中的所有缓存;session.flush()刷出缓存,让一级缓存与数据库同步。一级缓存目的:是为了减少对数据库的访问次数,从而提升hibernate的执行效率。查询机制:当执行一次查询操作的时候,执.原创 2021-12-20 22:46:21 · 738 阅读 · 0 评论 -
Hibernate 中get()与load()方法的区别
一、get()和load()方法都是根据id去获得对应数据的,但是获得机制不同 使用get()方法,hibernate会去确认该id对应的数据是否存在,它首先会去session中去查询(session缓存其实就hibernate的一级缓存),如果没有,再去二级缓存中去查询,如果再没有,就去数据库中查询,仍然没有找到的话,就返回null。 使用load()方法的话,hibernate会认定该id对应的数据一定存在,它也会先去session缓存中去查找,如果没有找到,hibernate会...转载 2021-12-20 22:29:51 · 180 阅读 · 0 评论 -
hibernate 查询 get()和 load()的区别
1、hibernate查询,没查询到结果,get() 返回 null;load() 返回一个代理对象,当没有查询倒结果时,load方法会抛出一个ObjectNotFoundException异常。2、get() 不支持延迟加载;load()支持延迟加载。原创 2021-12-20 22:23:27 · 126 阅读 · 0 评论 -
hibernate工作流程
读取并解析配置文件。 读取并解析映射文件,创建 SessionFactory。 打开 Session。 创建事务。 进行持久化操作。 提交事务。 关闭 Session。 关闭 SessionFactory。--添加学生package com.test;import org.hibernate.Session;import org.hibernate.Transaction;import com.pojo.Student;import com.pojo.Student;.原创 2021-12-20 22:16:53 · 312 阅读 · 0 评论 -
hibernate 实体属性定义为 Integer 和 int 区别
1、Integer 类型为对象,它的值允许为 null。2、int 属于基础数据类型,值不能为 null。总结:推荐使用Integer类型,避免因为数据问题导致的空指针;但是如果属性映射的库表字段为必填项,则定义为int类型更合适。...原创 2021-12-20 22:07:36 · 584 阅读 · 0 评论 -
hibernate 实体类可否被定义为 final类型
回答:实体类可以定义为 final 类。由于Hibernate会使用代理模式在延迟关联的状况下提升性能。如果把实体类定义成final类,该类则无法进行扩展,因此Hibernate就没法再使用代理,如此一来就限制了使用能够提高性能的手段。解决方案:持久化类实现一个接口,并在接口中声明了全部定义于实体类中的全部public的方法的,那么可避免出现上面所所提到的不利后果。...原创 2021-12-20 22:03:21 · 435 阅读 · 0 评论 -
hibernate 查询方式
1、OID检索Session session=HibernateUtil.getSession();Student student = (Student) session.get(Student.class,1);Student student = (Student) session.load(Student.class,1);2、hqlQuery query = session.createQuery("from com.mp.Student order by createTime原创 2021-12-20 21:53:29 · 141 阅读 · 0 评论 -
hibernate在控制台打印 SQL 语句
在 Config 里面把 hibernate. show_SQL 设置为 true 即可。不建议开启,开启后会降低程序的运行效率。1、spring boot 之ymlspring: jpa: properties: hibernate: format_sql: true //格式化sql语句 show_sql: true //控制台是否打印 use_sql_comments: true /原创 2021-12-20 21:41:50 · 3715 阅读 · 0 评论 -
Hibernate
1、什么是HibernateHibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象。2、为什么要使用 Hibernate1、Hibernate 是对 jdbc 的封装,简化了数据访问层的繁琐的重复性代码。2、Hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。3、方便进行数据库的移植工作。4、提供三级缓存机制,使程序执行更加原创 2021-12-19 15:29:17 · 466 阅读 · 0 评论 -
使用Hibernate的SessionFactory自封装统一的DAO实现_经过测试_可以直接参考使用
使用Hibernate的SessionFactory自封装统一的DAO实现,使用泛型,减少重复代码,提升开发效率。1、dao实现类:BaseDaoImplimport java.io.Serializable;import java.lang.reflect.Constructor;import java.lang.reflect.ParameterizedType...原创 2019-07-17 09:55:43 · 486 阅读 · 1 评论 -
Spring对Hibernate事务管理
Hibernate实现事务管理,Spring只是管理hibernate的事务,二者是管理者与被管理者的关系。 Spring通过Aop实现了对Hibernate的事务管理,Spring没有单独实现事务的管理。 在谈Spring事务管理之前,我们想一下在我们不用Spring的时候,在Hibernate中我们是怎么进行数据操作的。在Hibernate中我们每次进行一个...转载 2019-07-11 17:31:58 · 393 阅读 · 0 评论 -
Hibernate基本原理及概念详解
1、Hibernate是什么 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM(Object-Relative Database-Mapping)框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibern...转载 2019-07-11 17:04:46 · 2393 阅读 · 0 评论