![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hibernate笔记
nwpu_geeker
向大牛学习!
展开
-
Hibernate框架的优缺点
Hibernate的优点:1、对象化。hibernate可以让开发人员以面相对象的思想来操作数据库。jdbc只能通过SQL语句将元数据传送给数据库,进行数据操作。而hibernate可以在底层对元数据和对象进行转化,使得开发者只用面向对象的方式来存取数据即可。2、更好的移植性。hibernate使用xml或JPA的配置以及数据库方言等等的机制,使得hibernate具有更好的移植性,对于不原创 2018-01-10 23:45:28 · 3703 阅读 · 0 评论 -
解决Hibernate懒加载的4种方式
前言在项目开发中,如果设置集合映射中一方的懒加载(lazy=true),那么在加载jsp页面中,集合元素获取有时候会报错,session关闭的问题。而本文总结了我在学习hibernate过程中,解决hibernate懒加载问题的四种方式。懒加载当我们查询一个对象的时候,比如(user=(User)session.load(User.class,1); ),在默认情况下,返回的只是该对象的代理对象,当原创 2018-01-18 00:18:05 · 5202 阅读 · 1 评论 -
Hibernate之二级缓存详解
前言在前文中也讲到了缓存机制和Hibernate一级缓存。一级缓存主要是针对session的缓存。只在session中有效,它的缺点也很明显就是应用范围小,缓存的时间短。而Hibernate的二级缓存正好解决了应用范围小等问题。二级缓存Hibernate提供了基于应用程序级别的缓存, 可以跨多个session,即不同的session都可以访问缓存数据。 这个缓存也叫二级缓存。如果是新手,可以理解为类原创 2018-01-17 23:06:30 · 1639 阅读 · 0 评论 -
Hibernate对数据库连接池的支持
前言对于一个简单的数据库应用,由于数据库的访问不是很频繁,那么如果需要数据库操作,则创建一个连接,不需要则关闭连接。这很简单。但是,对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,以此连接池应运而生。本文主要介绍Hibernate最常用的连接池C3P0连接池。连接池基本原理数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库的连接原创 2018-01-17 21:10:25 · 2641 阅读 · 0 评论 -
Hibernate中对象的三种状态及相互转化
Hibernate中的对象有三种状态: 瞬时状态 (Transient),持久状态(Persistent),脱管状态(Detached)。 1.瞬时状态 (Transient)当我们通过Java的new关键字来生成一个实体对象时,这时这个实体对象就处于自由状态,如下: Customer customer=new Customer(“zx”,27,images);这时cus转载 2017-12-07 16:49:10 · 1036 阅读 · 0 评论 -
Hibernate之两种一对一关系映射方式
前言在前面的Hibernate学习中已经介绍了多对一、一对多、多对多的关系,本文主要介绍一对一关系。比如:一个用户有且仅有一个身份证,一个身份证也只能对应一个用户。而在学习Hibernate框架主要是学习映射关系如何配置。那么一对一关系映射主要有两种配置方式。一种是基于外键的映射关系。一种是基于主键的映射关系。本文将分别从具体案例出发,介绍两种不同的一对一映射配置。案例说明:需求 一个用户对应一个原创 2018-01-15 21:39:22 · 3354 阅读 · 2 评论 -
通过一道面试题来引入Hibernate之懒加载
前言先来看看面试题: Hibernate中get和load方法的区别? 答:相同点:都是通过主键查询的方法。session.get(User.class,1);session.load(User.class,1); 不同点: get: 及时加载,只要调用get方法立刻向数据库查询,,执行sql语句。 load:默认使用懒加载,当用到数据的时候才向数据库查询。 相当于做了一层优化。懒加载:(原创 2018-01-14 21:42:20 · 1969 阅读 · 0 评论 -
Hibernate之一级缓存案例探索
前言我们学过jdbc都知道,jdbc执行数据库操作的效率非常之快,而Hibernate相对来讲有那么多配置文件需要加载,并且通过代码封装了底层的sql查询语句,间接来进行访问数据库,所以相对来讲,会慢一点。那么Hibernate框架如何通过自身来进行优化数据库操作的呢,让我们先来看看一级缓存吧。缓存首先说,为什么要用缓存? 在实际开发中,将会频繁的进行数据库访问操作,那么如果在访问数据库之前,先从原创 2018-01-14 20:18:22 · 1476 阅读 · 0 评论 -
Hibernate中多对多关系映射案例详解
前言在项目开发中,在数据库中的设计中,一定会遇到多对多的关系。比如:老师与学生的关系,一个老师会有多个学生,一个学生也会有多个老师,这种关系称为多对对的关系,在之前的jdb中操作数据库,在满足三大范式的情况下,必须要保存三张表,而插入数据库的原生sql语句需要写很多条,Hibernate为我们封装了原生的sql语句,提供了对应的多对多映射关系的相关配置,我们只要会用它来进行实际的开发即可,大大原创 2018-01-14 13:50:51 · 2611 阅读 · 1 评论 -
Hibernate中cascade和inverse属性
引言inverse和cascade都是维护关系的属性。inverse是可以理解为控制反转的意思,而casc理解为级联操作。inverseinverse是在一方维护多方的映射文件中才会有,也就是set集合设置的时候,在多方的映射文件中不会出现。当一方的控制权为false的时候,说明控制权还在自己手中,也就是一方可以维护着关系,但当为true的时候,一方将把控制权交给了多方了,导致一方原创 2018-01-12 21:41:30 · 1353 阅读 · 0 评论 -
Hibernate多对一和一对多映射
前言在之前我们学到了集合映射,但是集合映射有一个明显的缺陷,就是不能满足多的一方保存多个字段多个属性的数据,这就需要我们学习集合中保存一个对象,然后在配置中采取多对一和一对多的映射关系,把对象和表之间的关系对应起来,满足我们的需要。在实际的开发中,多对一和一对多的映射应用非常广泛,也是每个学习Hibernate框架的同学必须掌握的内容。本文主要通过部门与员工的案例来展开。部门与员工案例首先要清楚部门原创 2018-01-12 01:25:28 · 1502 阅读 · 0 评论 -
Hibernate之集合映射
前言上节已经学会了Hibernate之CRUD操作了,那么有这么一个需求,当用户购买商品的时候会填写收货地址,有时候收货地址不止一个,那么数据库是如何来保存一个用户对应多个地址的呢,而使用Hibernate如何映射用户和地址的关系呢。我们来看看具体实现吧。数据库之表结构设计如果数据库还不是很好的同学,可能会这么设计数据库吧。 如果把用户信息和地址放在同一个表中,用户有的可能有三四个收货地址,有原创 2018-01-11 23:15:17 · 1408 阅读 · 1 评论 -
hibernate框架的第一个CRUD案例
前言在学习hibernate之前我们先回顾之前的数据库操作技术。之前是用原始的jdbc操作数据库,主要是通过Connection/Statement/ResultSet这三个类来对数据库进行操作的。还有一个DbUtils组件, 轻量级的组件其实也是封装了原生态的jdbc操作。这里就不在赘述之前的知识了。ORM概念O, Object 对象 R, Relation 关系 (关系原创 2018-01-10 21:32:45 · 1429 阅读 · 0 评论