
Hibernate
life is wonderful
pay for life, pay for yourself
展开
-
【HIbernate框架学习】:Hibernate对象关系映射之单向多对一关联映射
单向多对一关联映射 我们先来假设一个场景,从学生的角度看,学生和班级的关系就是多对一的关系,也就是多个学生属于一个班级。多对一关联映射原理就是在多的一端加入一个外键,指向一的一端;在多的一端采用标签映射,也就是在Students.hbm.xml对象关系映射配置文件中采用,单向多对一关联映射是在多的一端来维护关联字段,在我们这个例子中也就是在学生一端来维护关系字段。原创 2016-12-10 20:59:13 · 805 阅读 · 0 评论 -
【Hibernate框架学习】:Hibernate进阶之持久化对象状态
我们都知道,Java对象的生命周期,是从通过new语句创建开始,到不再被任何引用变量引用结束,结束后它占用的内存将被JVM垃圾回收机制收回。在Hibernate持久化对象可以划分为三种状态,瞬时对象(Transient Objects)、持久化对象(Persistent Objects)和离线对象(Detached Objects也叫做脱管对象)。 瞬时对象(Transie原创 2016-12-08 18:35:50 · 669 阅读 · 0 评论 -
【Hibernate框架学习】:Hibernate进阶之单表操作
单一主键 这里只是简单介绍有关MySQL的主键生成策略,包括连个常用的: assingned:由Java应用程序负责生成(手工赋值) native:由底层数据库自动生成标示符,如果是MySQL就是increment,如果是Oracle就是sequence,等等。 我们来看例子: 对象关系映射配置文件中配置:原创 2016-12-07 23:23:18 · 714 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象关系映射之一对一关联映射(一)
一对一关联映射在实际生活中是比较常见的,如人与身份证的关系,通过人这个对象可以找到身份证相关的信息,也可以通过身份证这个对象找到人相关的信息。 有两种策略可以实现一对一的关联映射: 主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联; 唯一外键关联:外键关原创 2016-12-08 21:33:27 · 1963 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象关系映射之一对一关联映射(二)
接着上一篇接着说一对一关联映射。 单向一对一唯一外键关联映射 我们先来假设一个场景,从Person中能看到IdCard,也就是在person数据表加上一个外键字段idCard,限制idCard的唯一性就是一对一外键关联因素;一对一单向唯一外键关联,也就是多对一关联的特例,把多的一端限制为一,就是一对一唯一外键关联。同多对一关联映射关系一样,在一端加入另一端的原创 2016-12-08 22:09:29 · 801 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate组件映射
假设我们设计的User实体类和Employee实体类,两个实体类包含的一些信息是相同的,我们可以抽取出来单独组成一个Component类,达到复用的目的,而且原来的类不再那么臃肿,看起来比较简单清晰明了。 我们来看简单的演示图例: 在Hibernate中Component映射采用标签,元素包含的子元素是元素,这里面放的就是组件类的字段。原创 2016-12-17 22:19:43 · 977 阅读 · 3 评论 -
【HIbernate框架学习】:Hibernate复合主键映射
我们在学数据库原理与设计的时候,设计表的时候肯定遇到过复合主键的数据表,也就是两个字段或者两个以上的字段作为数据表的主键。那么Hibernate框架的通常做法是将主键相关字段放到一个单独的类中,这样的类是有要求的,首先四必须实现序列化接口,然后覆盖equals()和hashCode()方法。 在Hibernate中复合主键映射使用标签,元素包含的子元素是元素,这里面放的原创 2016-12-17 21:57:32 · 806 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate集合映射
在HIbernate映射中还有一类映射就是集合映射,出现的几率比较小,那么就简单来对Set集合、List集合、Map集合的映射做一个简单的了解和演示,Array可以看成一个List集合特例,那么也是属于集合映射的一种。 简单实例: CollectionMapping实体类代码:package com.demo.domain;import java.uti原创 2016-12-17 22:39:19 · 1177 阅读 · 0 评论 -
【HIbernate框架学习】:HQL(一)
HQL概述 数据查询与检索是Hibernate框架中的一个亮点,相对其他ORM框架实现而言,Hibernate框架提供了灵活多样的查询机制。 标准化对象查询(Criteria Query)是以对象的方式进行查询,将查询语句封装为对象操作。它的优点就是可读性好,符合Java 程序员的编码习惯。缺点就是不够成熟,不支持投影(projection)或统计函数(ag原创 2016-12-20 14:01:56 · 2125 阅读 · 1 评论 -
【HIbernate框架学习】:HQL(二)
限制子句——where子句 where子句是一个逻辑表达式,设置查询条件,限制返回的查询结果。 比较运算 比较运算也就是持久化类的属性和给定的查询条件做比较。比较运算包括:=、、>=、 其中比较运算也包含null值判断,也就是is [not] null。 (x = null) HIbernate框架会解析为:原创 2016-12-20 14:43:45 · 1111 阅读 · 0 评论 -
object references an unsaved transient instance【异常】
【异常提示】TransientObjectException: object references an unsaved transient instance -save the transient instance before flushing: com.jspxcms.core.domain.ScTeam 【网上参考资料】 【参考资料转载 2017-06-29 00:15:21 · 6239 阅读 · 0 评论 -
【Hibernate框架学习】:Hibernate进阶之Hibernate核心接口和类(二)
Query接口(初步) Query(查询)接口允许你在数据库上执行查询并控制查询如何执行。查询语句使用HQL或者本地数据库的SQL方言编写。 Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。 Query接口是Hi原创 2016-12-07 22:38:48 · 708 阅读 · 0 评论 -
【Hibernate框架学习】:Hibernate进阶之Hibernate核心接口和类(一)
我们来看一下Hibernate的执行流程: 由此我们可以大概知道Hibernate的核心接口和类,Hibernate的核心类和接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心类和接口在任何开发中都会用到。通过这些接口,不仅可原创 2016-12-06 22:38:47 · 2507 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象关系映射之单向一对多关联映射
单向一对对关联映射 我们先来假设一个场景,从班级的角度看,班级和学生的关系就是一对多的关系,也就是一个班级有多个学生,学生属于某个班级。在数据库中,可以通过添加主外键的关联,表现单向一对多的关系,在学生表添加一个外键,指向班级表;HIbernate框架中通过在一方持有多方的集合的实现,即在一的一端使用set元素表示持有多的一端的对象。 如下图所示(一个组原创 2016-12-10 21:30:21 · 912 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象关系映射之双向一对多关联映射
双向一对多对关联映射 我们先来假设一个场景,从班级的角度看,班级和学生的关系就是一对多的关系,也就是一个班级有多个学生,学生属于某个班级;从学生的角度看,学生和班级的关系就是多对一的关系。也就是多个学生属于一个班级。学生和班级之间的关系是双向多对一关联关系,也称为双向一对多关联关系。为了解决一对多单向可能存在的问题,我们采用向一对多,每一方都能维护对方。双向一对多关联原创 2016-12-10 22:22:17 · 1020 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象关系映射之单向多对多关联映射
单向多对多关联映射 我们假设这样一个场景,一个员工可能有多个角色,一个角色可能有多个员工,从员工或角色的角度看,这就是多对多的关系。多对多关联映射关系一般采用中间表的形式来实现,即新增一种包含关联双方主键的表。多对多关联映射可以使用元素和元素进行配置,Hibernate会自动生成中间表。 如下图所示: Role实体类:p原创 2016-12-10 23:08:57 · 891 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象关系映射之双向多对多关联映射
双向多对多关联映射 我们假设这样一个场景,一个员工可能有多个角色,一个角色可能有多个员工,从员工或角色的角度看,这就是多对多的关系,不管从哪一个角度看,都是多对多的联系。多对多关联映射关系一般采用中间表的形式来实现,即新增一种包含关联双方主键的表。实现多对多关联关系,在数据库底层通过添加中间表指定关联关系,而在HIbernate框架在双方的实体中添加一个保存对方的集合,原创 2016-12-10 23:33:59 · 1216 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象继承关系映射(一)
继承关系映射实现的三种策略: 单表继承:每棵类继承树使用一个表(table per class hierarchy) ,也就是一棵继承树映射一张表。 具体表继承:每个子类一个表(table per subclass),也就是每个子类各自映射表。 类表继承:每个具体类一个表(table per concrete class)(有一些限制),也就是继承树原创 2016-12-12 21:06:34 · 1075 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象继承关系映射(三)
每个类一张表 子类和父类,除非将父类定义成抽象的,否则父类也是一张表、 这种策略是使用joined-subclass标签来定义子类的。父类、子类,每个类都对应一张数据库表。在父类对应的数据库表中,实际上会存储所有的记录,包括父类和子类的记录;在子类对应的数据库表中,这个表只定义了子类中所特有的属性映射的字段。子类与父类,通过相同的主键值来关联。原创 2016-12-12 21:51:51 · 565 阅读 · 0 评论 -
【HIbernate框架学习】:Hibernate对象继承关系映射(二)
每个具体子类一张表 这种策略是使用union-subclass标签来定义子类的。每个子类对应一张表,而且这个表的信息是完备的,即包含了所有从父类继承下来的属性映射的字段(这就是它跟joined-subclass的不同之处,joined-subclass定义的子类的表,只包含子类特有属性映射的字段)。 实现这种策略的时候,有如下步骤: 父类用普原创 2016-12-12 21:39:28 · 640 阅读 · 0 评论 -
【Hibernate框架学习】:Hibernate框架概述
场景再现 假设我们需要开发一个学生信息管理系统,那么难免需要编写和数据库交互的代码,也就是我们经常所说的数据持久层,在此之前我们已经编写过大量的持久层代码,也就是JavaBean和Dao。 下面就设计一个学生实体类:package com.demo.domain;import java.util.Date;/** * 学生实体类 * @au原创 2016-12-06 12:59:10 · 1673 阅读 · 0 评论 -
【Hibernate框架学习】:Hibernate初识
在编写第一个Hibernate例子之前先来准备Hibernate开发环境。在Eclipse中进行Hibernate开发我们可以添加一个Hibernate Tools for Eclipse Plugins。Hibernate Tools是由JBoss推出的一个Eclipse综合开发工具插件,该插件可以简化ORM框架Hibernate,以及JBoss Seam,EJB3等的开发。那么接下来就原创 2016-12-06 14:07:49 · 928 阅读 · 0 评论 -
【Hibernate框架学习】:Hibernate进阶之详解Hibernate配置文件和对象关系映射配置文件
Hibernate核心配置文件 我们先来看一个比较常见的hibernate.cfg.xml配置文件:<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hiber原创 2016-12-06 19:16:42 · 2723 阅读 · 0 评论 -
Hibernate数据库方言选择问题
今天准备使用Hibernate配置Oracle数据库进行分页查询,在配置数据库方言的过程中遇到了问题,我本机安装的Oracle数据库版本是11.2.0.1.0,也就是11g版本,但是选择对应的版本数据库方言时,很郁闷,竟然没有对应的方言,如下所示:可以清楚的看到Hibernate提供的Oracle数据库方言,就是没有对应的11g版本,想了想配置MySQL数据库的时候配置的是MySQLD原创 2017-07-04 15:59:31 · 7090 阅读 · 0 评论