
Hibernate
Hibernate
绣花针
心有猛虎,细嗅蔷薇
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Hibernate之查询方式
目录一、OID查询(根据对象的OID(主键)进行检索)1.get(立即加载)2.load(延迟加载)二、对象导航检索(根据一个已经查询到的对象,获得其关联的对象)三、HQL查询(多表查询,但不复杂时使用)1.Query接口接收HQL语句2.完整查询3.基本查询4.条件查询(无参数绑定)where5.条件查询(参数绑定)6.投影查询(获取实体部分属性)...原创 2018-08-09 10:37:48 · 439 阅读 · 0 评论 -
Spring之Hibernate延迟加载解决方案
一、问题描述由于事务管理在service层,开启事务及关闭事务都在service层。而Hibernate的延迟加载,会在对象真正使用的时候才会向数据发送SQL语句操作数据库。但是可能我们在Service层中并没有真正使用需要操作的对象,而是在Web层真正使用对象。由于在Web层Session已经关闭了,所以会报一个no session的错误,也就是延迟加载的问题。二、问题解决在we...原创 2019-01-06 17:05:53 · 583 阅读 · 0 评论 -
Spring之整合Hibernate
一、在Spring的配置文件中,引入Hibernate的配置文件1.引入Hibernate的配置信息(为其创建sessionFactory) <!-- 引入Hibernate的配置的信息 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactory...原创 2019-01-06 16:14:33 · 169 阅读 · 0 评论 -
Hibernate之关系延迟加载(json死循环问题的解决方法)
一、问题在SSH框架对一些一对多,多对多关联关系的数据做分页查询的时候,出现了死循环的状态二、原因(你中有我,我中有你)原因在于你要转化的对象里配置了对另外一个对象的关联,而那个对象里又配置了对你这个对象的关联。比如我的两个类叫Shop(商店)和Staff(员工),一个商店可以有多个员工,我给这两个对象配置了双向的一对多和多对一的关联关系。这时候问题出现了,JSON lib在把shop...原创 2018-11-12 15:48:03 · 681 阅读 · 0 评论 -
Hibernate之连接MySQL8报错Unknown system variable 'query_cache_size'
Hibernate之连接MySQL8报错前天重新装了系统,作死把MySQL装到了最新版,MySQL8,然后配置Hibernate的时候一直报错,一直报错!!Unknown system variable 'query_cache_size'或者Sorry,can`t find the Driver! java.lang.ClassNotFoundException: com.mysql.cj....原创 2018-08-20 16:13:50 · 2081 阅读 · 3 评论 -
Hibernate之事务控制
一、设置事务隔离级别(在主配置文件中配置)<property name="hibernate.connection.isolation">4</property> //设置事务的隔离级别二、确保同一个Session对象(ThreadLocal)在Service中开启事务时使用Session对象和DAO层中多个事务操作需要使用同一个Session对象,我们可以...原创 2018-08-08 20:04:31 · 1255 阅读 · 0 评论 -
Hibernate之一级缓存
一、缓存缓存是计算机领域非常通用的概念,它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。缓存中的数据是数据存储源中数据的拷贝。缓存的物理介质通常是内存。Hibernate的缓存分为一级缓存和二级缓存,Hibernate的这两级缓存都位于持久化层,存储的都是数据库数据的备份。其中第一级缓存为Hibe...原创 2018-08-08 16:42:14 · 749 阅读 · 0 评论 -
Hibernate之持久化对象三种状态概述
一、持久化对象三种状态Hibernate为了更好的管理持久化类,特将持久化类分成了三种状态。在Hibernate中持久化的对象可以划分为三种状态 1.瞬时态(transient不存在持久化标识OID,尚未与Session关联)瞬时态也称为临时态或者自由态,瞬时态的实例是由new命令创建、开辟内存空间的对象,不存在持久化标识OID(相当于主键值),尚未与Hibernate Session...原创 2018-08-08 15:27:10 · 626 阅读 · 0 评论 -
Hibernate之主键生成策略
一、主键类型1.自然主键(主键本身就是表中的一个字段,实体中一个具体的属性)表中已经具有某字段,并且该字段具有业务含义作为主键,称之为自然主键。例如:在person表中的身份证号,既是唯一的,又可以单独标识一个person又如:在customer表中,如果把name作为主键,其前提条件必须是,每一个客户的姓名不允许为null,不允许客户重名,并且不允许修改客户姓名。尽管这也是...原创 2018-08-08 14:26:51 · 2578 阅读 · 4 评论 -
Hibernate之核心API
一、Configuration(配置对象)Configuration类的作用是对Hibernate进行配置,已经对他进行启动。在Hibernate的启动过程中,Configuration类的实例首先定位映射文件的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration类在整个Hibernate项目中只扮演着一个很小的角色,但它启动Hibernate时所遇...原创 2018-08-08 13:44:04 · 237 阅读 · 0 评论 -
Hibernate之映射文件和主配置文件详解
一、映射配置文件(xxx.hbm.xml)<hibernate-mapping> <!-- 配置表与实体映射关系 --> <class name="com.mark.domain.Customer" table="cst_customer"> <!-- 建立类中的属性与表中的主键映射 --> <i原创 2018-08-07 15:28:00 · 578 阅读 · 0 评论 -
Hibernate之配置流程
一、POJO类public class Customer { private Long custId; private String custName; //.....后面自动生成的Get|Set省略}二、配置实体映射文件(xxx.hbm.xml)<hibernate-mapping> <!-- 配置表与实体映射关系 --&g...原创 2018-08-07 14:49:02 · 229 阅读 · 0 评论 -
Hibernate之概述(ORM)
一、简述Hibernate框架是当今主流的Java持久层框架之一,由于它具有简单易学、灵活性强、扩展性强等特点,能够大大地简化程序的代码量,提高工作效率,因此受到广大开发人员的喜爱。Hibernate是一个开放源代码的ORM(Object Relational Mapping,对象关系映射)框架,它对JDBC进行了轻量级的对象封装,使得Java开发人员可以使用面向对象的编程思想来操作数...原创 2018-08-07 09:22:56 · 688 阅读 · 0 评论 -
Hibernate之抓取策略(关联查询优化)
一、延迟加载(真正使用这个对象的属性的时候才会发送SQL语句查询)延迟加载(lazy又称懒加载)是Hibernate关联关系对象的默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来。所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。通常,将延迟加载分为两类:一类叫做类级别延迟,一类叫做关联级别延迟。1.类级别查询类级别延迟指的是,在查询某个对象的时候,是...原创 2018-08-10 16:38:21 · 678 阅读 · 0 评论 -
Hibernate之一对多与多对多关联映射
一、一对多关联映射1.POJO类public class Customer { private Long cust_id; private String cust_name; //set集合存放多个Linkman对象 private Set<Linkman> linkmans = new HashSet<Linkman>(); ...原创 2018-08-10 11:05:09 · 127 阅读 · 0 评论 -
Hibernate之表关系分析
表关系分析Hibernate框架实现了ORM的思想,将关系数据库中表的数据映射成对象,使开发人员把对数据库的操作转化成对对象的操作,Hibernate的关联映射主要包括多表的映射配置、数据的增加、删除等。数据库中多表之间存在着三种关系,也就是系统设计中的三种实体,在数据库中,实体表之间的关系映射是采用外键来描述的。1.数据库中表关系(1)一对多(在多的一方创建外键,指向一的一...原创 2018-08-09 16:13:55 · 222 阅读 · 0 评论 -
Hibernate之利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
一、DynamicInsert@DynamicInsert属性设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中,默认false。比如希望数据库插入日期或时间戳字段时,在对象字段为空的情况下,表字段能自动填写当前的sysdate。二、DynamicUpdate@DynamicUpdate属性设置...原创 2019-02-21 11:19:08 · 661 阅读 · 1 评论