
hibernate
文章平均质量分 88
Java红桃峰峰日拱一卒
高级程序员,架构师
展开
-
Hibernate环境搭建和配置
hibernate是一个ORM(对象关系映射)框架,将实体类对象和数据库数据关系做了映射,使我们操作数据库时,方便简单。hibernate对JDBC重复的操作做了封装,而且使用hibernate开发的项目,不管数据库怎么改变,都不用修改代码,是需要将配置文件中的信息修改为对应的数据库信息即可。今天我们开始学习hibernate,下面介绍一下hibernate的环境搭建和配置:先看一原创 2017-07-12 16:02:29 · 782 阅读 · 0 评论 -
Hibernate基于主键的一对一关系----单向双向
hibernate基于主键的一对一关系,有两种,单向和双向。基于主键的一对一关系指的是,两张表使用的是同一个id。现在先说说单向新建一个java项目,名称是:15hibernate_single_one_to_one_primary结构如下:需要的jar包和如何从hibernate上获得jar包,请参见《Hibernate环境搭建和配置》原创 2017-07-18 12:42:34 · 578 阅读 · 0 评论 -
hibernate加载策略之lazy
hibernate的加载策略有两种:1)即时加载:get加载 使用get加载数据,会立即查找,先到缓存中找,找不到再去数据库中找。2)延迟加载(也叫懒加载lazy):laod加载 不会立即查找,当需要的时候才会查找。 容易造成异常:org.hibernate.LazyInitializationException: could not initia原创 2017-07-22 14:11:06 · 620 阅读 · 0 评论 -
HIbernate的多对多关系-----单向和多向
当数据库表结构是多对多关系时,对应的实体类和相应的配置文件也需要是多对多的,多对多关系分为单向和多向,一、单向新建java项目,结构为:需要的jar包及如何从hibernate官网获取jar包,请参见《Hibernate环境搭建和配置》实体类Function代码:package com.robert.pojo;public class Fun原创 2017-07-18 15:49:57 · 529 阅读 · 0 评论 -
hibernate抓取策略fetch
抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间经行导航的时候,hibernate如何获取关联对象的策略。1、select抓取:当查询关联对象时,通过select语句去查询。 select语句发出的时机,是根据lazy的值来决定的。 如果lazy=false,那么在获取对象时就会发出一条sele原创 2017-07-22 15:16:58 · 903 阅读 · 0 评论 -
hibernate的list映射和map映射
新建一个java项目结构如下;需要的jar包以及如何配置,请参见《Hibernate环境搭建和配置》实体类Grade代码:package com.robert.pojo;import java.util.ArrayList;import java.util.List;/** * 年级类 */public class Grade { pr原创 2017-07-19 11:30:53 · 502 阅读 · 0 评论 -
hibernate单表继承映射
实际开发中,有这么一种情况:有一个父类Person,它有两个子类:Teacher和Student都继承了Person ,如图:我们可以把这种关系的数据,设计到一张表中展示,如图:现在我们就来看一下,怎么样来写实体类和对应的映射关系来生成上面这张表,新建一个java项目,结构如下:jar和hibernate官网获取方法,请参见《Hibe原创 2017-07-19 16:00:01 · 372 阅读 · 0 评论 -
继承结构中每个子类单独一张表
在上一节《hibernate单表继承映射》中,我们讲了在继承结构中,我们把子类和父类放在同一张表中的写法,那种写法在实际开发中,也很多的不便,所以这节我们使用每个子类单独一张表的写法。类的继承关系和上一节一样,如图:新建一个java项目,项目结构如图:jar和hibernate官网获取方法,请参见《Hibernate环境搭建和配置》原创 2017-07-19 16:54:08 · 570 阅读 · 0 评论 -
hibernate继承结构中每个类一张表
上一节《继承结构中每个子类单独一张表》中,我们讲了在继承结构中每个子类一张单独的表,父类没有表的情况,今天我们讲一下,继承结构中,父类一张表,存放公共的数据,子类各一张表,存放子类各自独特的特性数据,就是说每个类都有一张表。新建一个java项目,结构如下:实体类和上一节一样《继承结构中每个子类单独一张表》,不同的是Person.hbm.xml代码:<!DOCTYP原创 2017-07-19 17:25:31 · 344 阅读 · 0 评论 -
Hibernate学习目录
这是一个关于hibernate学习的目录,有了这个目录的指引,我们可以有一个学习的方向。加油!!!没有什么东西在这个世界是完美的,也没有什么是永远最好的。 但我可以尝试去作得更好,希望本目录会在您学习Hibernate技术路上帮到您!原创 2017-06-12 15:31:20 · 302 阅读 · 0 评论 -
hibernate 缓存机制
hibernate缓存机制是hibernate中很重要的一个内容,因为有缓存的存在,使得效率得到了很大的提升,今天这个博客,我们就来学习一个hibernate中各种查询方式对应的缓存。缓存分为:一级缓存、二级缓存、查询缓存。1、一级缓存: 又称为session缓存,生命周期相同,周期较短。也称为事务级别的缓存。下面就用项目来演示一下,缓存问题,原创 2017-08-01 10:29:36 · 350 阅读 · 0 评论 -
悲观锁
为了避免读写数据不及时,导致脏数据产生的问题,hibernate引入了悲观锁和乐观锁。下面先介绍悲观锁悲观锁新建一个java项目,结构如图:实体类User代码:package com.robert.pojo;public class User { private int id ; private String nam原创 2017-08-02 10:29:24 · 919 阅读 · 0 评论 -
HIbernate级联操作cascade以及inverse管理关系
cascade叫级联,有了级联可以使我们在操作(增删改查)数据时,避免因为各种各样的原因,丢掉向关联的数据库,下面先把cascade的总结写一下总结:1、cascade时级联操作,使得在操作一端数据时,可以级联操作被关联的另外一端的数据。2、在多对一的关系中,多的一端不能操作级联为delete。一般在多的一端设为save-update;3、在一对多的关系中,如果一的一端设置为del原创 2017-07-17 11:03:26 · 539 阅读 · 0 评论 -
HQL查询-分页-条件-连接-过滤使用
HQL(Hibernate Query Language)是hibernate自带的查询语言,进行了面向对象的分装,今天就来学习一下,新建一个java项目,结构如下:jar包和hibernate官网使用,参见《Hibernate环境搭建和配置》实体类Book代码:package com.myeclipse.pojo;import java.uti原创 2017-07-21 16:58:16 · 4114 阅读 · 0 评论 -
hibernate使用myeclise简化开发----根据数据库及表反向生成代码信息
前面我们讲的都是新建一个java项目,然后写实体类,映射文件或注解,然后关联到hibernate.cfg.xml中,然后根据hbm文件生成数据库表,这节我们就反过来实现这个过程----也就是说,我们新建一个项目后,根据数据库和表来生成hibernate.cfg.xml文件、实体类和映射文件或注解,包括jar包都有myeclipse来替我们引入。具体步骤如下:myeclipse和数据库关原创 2017-07-21 12:00:54 · 423 阅读 · 0 评论 -
Hibernate4日志打印_log
日志记录对于java应用是很重要的,现在已经有很多记录日志的库,我们可以直接拿过来使用,省去了写一个日志系统以及维护的繁琐。 常见的日志库有java.util.logging,Apache的log4j以及logback,这几个日志库都是日志记录的实现,提供了具体的日志解决方案,是一个具体的日志记录系统,我们可以通过配置文件灵活的配置日志的记录格式、记录级别、输出格式等。 而slf4j(Simple Logging Facade for Java),简单日志门面,并没有实现日志记原创 2017-07-12 17:30:14 · 2924 阅读 · 0 评论 -
Hibernate.cfg.xml注解和*.hbm.xml配置文件
Hibernate.cfg.xml配置文件,是hibernate的主要配置文件,里面包含了,数据库连接信息配置,数据库方言配置,sql语句打印配置,sql语句格式化配置,数据库更新方式配置,加载实体类配置文件等等,hibernate的另一个很重要的配置文件就是实体类对应的配置文件*.hbm.xml配置文件,里面配置了实体类和数据库表对应的信息,包含实体类的类名、主键生成方式、属性、类型以及数据库的表名、列名、主键自增方式等等......原创 2017-07-13 11:42:33 · 1058 阅读 · 0 评论 -
Hibernate4生命周期和Session核心方法
hibernate4生命周期一共有三个:分别是瞬时状态、持久化状态和游离状态,下面介绍一下这三种状态:1、瞬时状态(Transient): 使用new操作符初始化的对象就是瞬时状态,他们没有任何和数据库表相关联的行为,只要应用不在引用这些对象(不在被其他对象所引用),他们的状态将会丢失,并由垃圾回收机制回收。2、持久化状态(Persist): 1)持久化状态的对原创 2017-07-14 09:47:20 · 1871 阅读 · 0 评论 -
Hibernate联合主键
在实际开发中,数据库表之间关系有很多种情况,其中共有一个是联合主键,就是中由两个以上的属性同时担任主键,今天我们就来学习一下,联合主键怎么设计实体类,以及怎么写实体类对应的配置文件*.hbm.xml,新建一个项目名称为:06hibernate_composite_id,结构如下:项目以分数实体类为例,导入jar包,参见《Hibernate环境搭建和配置》原创 2017-07-14 17:27:24 · 1198 阅读 · 0 评论 -
hibernate中大对象的存储
有时候我们的实体类中某一个属性里面的放的数据量稍多的时候,使用String已经不能满足需要了,例如,简介或者是图片等,里面的值可能很大,这个时候,就需要使用大对象来存放数据,当然像图片之类的,大部分情况下,是将图片本身存放在图片服务器上,数据库中只放一个这个图片所在服务器的地址即可,但是免不了有一些情况,我们不会单独放大数据放入磁盘,而是直接存到数据库中,这个时候就用到了Blob和Clob这两个大原创 2017-07-14 18:32:32 · 285 阅读 · 0 评论 -
hibernate使用SchemaExport生成对应的数据库表
我们在项目中完成实体类和对应的*.hbm.xml配置文件后,可以使用junit4来生成对应的数据库表,具体如下:新建一个hibernate项目,具体步骤,可以参见《Hibernate环境搭建和配置》项目架构如图:Score实体类代码如下:package com.robert.pojo;public class Score { private int scor原创 2017-07-14 15:41:05 · 566 阅读 · 0 评论 -
hibernate组件映射
我们有时候有一张数据库表,但是这个数据库表中有几列的数据都是类似的,可以使用一个独立的实体类来表示,这个就叫做组件映射,即有个实体类或者多个实体类对应一张数据库表,遇到这个组件映射的情况我们该怎么配置hibernate的实体类配置文件呢?今天就来说说这个问题---组件映射。新建一个新的java项目,名称为:07hibernate_component结构如图:需要原创 2017-07-15 14:23:11 · 343 阅读 · 0 评论 -
hibernate单向多对一映射
在实际的开发中,数据库表之间的关系有很多都是多对一的关联关系,这种情况的业务,在hibernate中该怎么处理呢?今天我们就来学习一下hibernate的单向多对一映射关系。新建一个java项目,名称为:08hibernate_many_to_one项目结构如图:需要的jar包和如何从hibernate官网获得,请参见《Hibernate环境搭建和配置》原创 2017-07-15 15:23:35 · 492 阅读 · 0 评论 -
Hibernate单向一对多映射和双向一对多映射
上一篇博客讲的是Hibernate的单向多对一映射,其实就是hibernat的实体类配置从多的一端来考虑,比如以学成Student和年级Grade为例,一个年级包含多个学成,多个学生也可能在同一个年级,当我们从学生Student的一端来配置实体类的配置,就是多对一映射;如果从年级Grade一端来配置实体类配置,就是今天要将的一对多映射。新建一个java项目,取名为:09hibernat原创 2017-07-16 13:52:12 · 1063 阅读 · 0 评论 -
hibernate基于外键的一对一映射--单向和双向
hibernate基于外键的一对一映射和单向的多对一映射,很相似,不同的地方就是,在单向多对一映射中的实体类多的一端配置unique=“true”,就变为了外键的一对一映射。具体如下:新建一个java项目,名称为:13hibernate_single_one_to_one_foreign项目结构如图:需要的jar包以及如何从hibernate官网获得,可以参见《Hi原创 2017-07-17 15:06:49 · 683 阅读 · 1 评论 -
hibernate注解annotation入门了解
前面我们写了实体类之后,都会写一个对应的*.hbm.xml配置文件,然后把这个配置文件关联到hibernate.cfg.xml中,其实hibernate还有另一种写法,来映射对象关系,那就是注解annotation,今天就来简单的先看一下注解怎么使用。新建一个java项目,项目结构如下:导入jar包和从官网上获取hibernate压缩包,可以参见《Hibernate原创 2017-07-21 09:40:42 · 310 阅读 · 0 评论 -
hibernate的annotation用法之----单向/多向的多对一映射
上一节已经简单的讲了怎么样使用hibernate的annotation,这节就来说一下多对一映射(单向/多向)先说单向多对一新建一个java项目,结构如下:jar和hibernate官网获取方法,以及hibernate.cfg.xml配置,参见《Hibernate环境搭建和配置》实体类Book代码:package com.ghiberna原创 2017-07-21 10:13:25 · 303 阅读 · 0 评论 -
Hibernate的N+1条SQL查询问题-------Iterate
hibernate使用session.createQuery(hql)查询数据的时候,有两种查询方式:1、一种是只查询一次,将所有要查询的数据都查询出来,后面直接取数据就可以了; 获取方式:session.createQuery(hql).list()。 一次性加载的数据多,效率低,用于例如商品信息展示。适用于展示所有信息。2、另一种是先查询一次,将主键查询出来原创 2017-08-01 07:21:44 · 521 阅读 · 0 评论