http://blog.csdn.net/yerenyuan_pku/article/details/52760010 我们以部门和员工的关系为例讲解一对多关联关系映射时,删除部门时,如果部门有关联的员工且inverse属性为false,那么由于可以维护关联关系,它就会先把关联的员工的外键列设为null值,再删除自己.但是此刻希望删除部门时,就附带着把该部门下的所有员工都删掉,这时就需要引入cascade属性了. 级联(cascade) 当Hibernate持久化一个临时对象时,在默认情况下,它…
Hibernate框架基础 Hibernate框架 ORM概念 O, Object 对象 R, Realtion 关系 (关系型数据库: MySQL, Oracle…) M,Mapping 映射 ORM, 对象关系映射! ORM, 解决什么问题? 存储: 能否把对象的数据直接保存到数据库? 获取: 能否直接从数据库拿到一个对象? 想做到上面2点,必须要有映射! 总结: hibernate与ORM的关系? Hibernate是ORM的实现! Hibernate HelloWorld案例 搭建一个H…
http://blog.csdn.net/yerenyuan_pku/article/details/52746413 上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即集合元素是普通类型).现在从本文开始我们就要介绍实体类型的集合(即集合元素是另一个实体)了. 一对多关联关系映射 我们还是以一个活生生的例子来详解一对多关联关系映射吧!就以部门和员工的关系为例. 单向关联:仅仅建立从Employee到Department的多对一关联,即仅仅在Employee类中定义…
http://blog.csdn.net/yerenyuan_pku/article/details/52739871 持久化对象与OID 对持久化对象的要求 提供一个无参的构造器.使Hibernate可以使用Constructor.newInstance()来实例化持久化类. 提供一个标识属性(identifier property).通常映射为数据库表的主键字段.如果没有该属性,一些功能将不起作用,如:Session.saveOrUpdate(). 为类的持久化字段声明访问方法(get/se…
http://blog.csdn.net/yerenyuan_pku/article/details/52732990 Java对象持久化概述 应用程序的分层体系结构 基于B/S的典型三层架构  说明: 展现层:提供与用户交互的界面. 业务逻辑层:实现各种业务逻辑. 数据访问层:负责存放和管理应用程序的持久化业务数据. 更详细的三层架构如下图所示:  软件的层必须具备如下特征: 每个层由一组相关的类或组件构成,共同完成特定的功能. 层与层之间存在自上而下的依赖关系,即上层组件访问下层组件的 AP…
http://blog.csdn.net/yerenyuan_pku/article/details/52740744 本文我们学习映射文件中的主键属性,废话不多说,直接开干. 我们首先在cn.itcast.d_hbm_id包下创建一个持久化类——User.java. public class User { private Integer id; // 如果是数字,建议使用包装类型. private String name; public Integer getId() { return id;…
http://blog.csdn.net/yerenyuan_pku/article/details/52745486 集合映射 集合属性大致有两种: 单纯的集合属性,如像List.Set或数组等集合属性. Map结构的集合属性,每个属性值都有对应的Key映射. 集合映射的元素大致有如下几种: list:用于映射List集合属性. set:用于映射Set集合属性. map:用于映射Map集合性. array:用于映射数组集合属性. bag:用于映射无序集合. idbag:用于映射无序集合,但为集…
接着上一篇博文:Hibernate第一个程序(最基础的增删改查) --Hibernate本例是对Hibernate查询的扩展,使用HQL语句查询 /** * HQL添加预先需要保存的测试数据 */ @Test public void test_01() { Session session = HbnUtils.getSession(); try { session.beginTransaction(); Student student1 = new Student("貂蝉", 24,…
在hibernate中,他通过配置文件(hibernate,cfg.xml)和映射文件(...hbm.xml)把对象或PO(持久化对象)映射到数据库中表,然后通过操作持久化对象,对数据库进行CRUD.下面简单介绍hibernate中的一些核心组件. ORM: 对象-关系映射(简称ORM),是随着面向对象的软件开发方法发展而产生的.用来把对象模型(实体类)表示的对象映射到基于SQL的关系模型数据库结构中去.这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作实…
http://blog.csdn.net/yerenyuan_pku/article/details/52756536 多对多关联关系映射 多对多的实体关系模型也是很常见的,比如学生和课程的关系.一个学生可以选修多门课程,一个课程可以被多名学生选修.在关系型数据库中对于多对多关联关系的处理一般采用中间表的形式,将多对多的关系转化成两个一对多的关系. 为了详细介绍多对多关联关系映射,终究还是应以一个例子来说明比较印象深刻.我们以老师和学生的关系为例来说明这种多对多关联关系映射. 双向多对多 我们最…
http://blog.csdn.net/yerenyuan_pku/article/details/52761021 上一篇文章中我们学习了Hibernate中java对象的状态以及对象的状态之间如何转换.本文我们将详细讲解Session中的方法. save() Session的save()方法使一个临时对象转变为持久化对象. Session的save()方法完成以下操作: 把新new的对象加入到Session缓存中,使它进入持久化状态. 选用映射文件指定的标识符生成器,为持久化对象分配唯一的…
http://blog.csdn.net/yerenyuan_pku/article/details/52760627 在Hibernate中java对象的状态 Hibernate把对象分为4种状态: 临时状态 持久化状态 游离状态 删除状态 Session的特定方法能使对象从一个状态转换到另一个状态. 临时对象(transient) 在使用代理主键的情况下,OID通常为null. 不处于Session的缓存中. Session里面是有一个集合的,这个集合我们称为Session的缓存,叫做一级缓…
@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(name="INFOM_TESTRESULT") public class TestResult extends IdEntity{} 1 @Entity(name="EntityName") 必须 name为可选,对应数据库中一的个表 @Table(name="&…
上篇博客<深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架>简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate.这篇博客将介绍JDBC的基本操作,说起这JDBC,大部分程序员是已经非常熟悉了,为了我的Hibernate学习的连载,所以在这篇要简单介绍一下JDBC的有关操作,因为这是Hibernate实现的基础,没有了JDBC也就没有了Hibernate框架,因为Hibernate框架是对JDBC做的高度封装.这篇博客主要介绍JDBC建立…
框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来操纵数据库.Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序中使用,也可以在Servlet或JSP的Web应用中. 总之,可以简单的理解为Hibernate是基于JDBC技术基础上衍生而来,并在此基础上使得由原来直接操纵数据库变成直接操作映射数据表后生成的Java类,…
Hibernate集合映射中,经常会使用到"inverse"和"cascade"这两个属性.对于我这样,Hibernate接触不深和语文水平够烂的种种因素,发现这两个属性实在是难以理解,无奈只好将这个两个属性解释工作交给了Google和Baidu,查看了许多牛人的解释,加上自己在Eclipse上的调试,对"inverse"和"cascade"这两个属性有了一定的见解. "inverse"属性探究 "…
回顾Hibernate: 1. hibernate开发环境搭建 ----> 引入jar: hibernate.jar + required + jpa + 驱动包 ---> hibernate.cfg.xml ---> javabean/*.hbm.xml ---> Application  测试 2.hibernate api ----> Configuration ----> SessionFactory ----> Session ---> Trans…
前言 上一篇博文已经讲解了一对多和多对一之间的关系了,一对多和多对一存在着关联关系(外键与主键的关系).本博文主要讲解Inverse属性.cascade属性.这两个属性对关联关系都有影响 Inverse属性 Inverse属性:表示控制权是否转移.. true:控制权已转移[当前一方没有控制权] false:控制权没有转移[当前一方有控制权] Inverse属性,是在维护关联关系的时候起作用的.只能在"一"的一方中使用该属性!Inverse属性的默认值为fasle,也就是当前一方是有控…
Inverse属性 Inverse属性:表示控制权是否转移.. true:控制权已转移[当前一方没有控制权] false:控制权没有转移[当前一方有控制权] Inverse属性,是在维护关联关系的时候起作用的.只能在"一"的一方中使用该属性!Inverse属性的默认值为fasle,也就是当前一方是有控制权的 从一下的几个方面看看Inverse在维护关联关系时是否起作用: 保存数据 获取数据 解除关联关系 删除数据对关联关系的影响 保存数据 将inverse属性设置为ture,使dept…
1.JPA中的CascadeType.ALL并不等于{CascadeType.PESIST,CascadeType.REMOVE,CascadeType.MERGE,CascadeType.REFRESH} 在hibernate中调用session.save() or session.update()并不能触发 {CascadeType.PESIST,CascadeType.REMOVE,CascadeType.MERGE,CascadeType.REFRESH} 的级联操作,而能触发Casca…
在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作时,会同时保存 与其关联的实体,当然这种额外操作的产生取决于你是否在当前实体的配置文件中对关联实体的元素配置了 Cascade属性. 而需要进行级联的操作可能涉及到增加,修改,删除等相应的数据库操作,具体Cascade的取值则 分为多种,如all,表示针对所有操作都会进行级联,如save-updat…
Hibernate中的inverse和cascade属性 inverse的值有两种,"true"和"false".inverse="false"是默认的值,如果设置为true 则表示对象的状态变化不会同步到数据库 ;设置成false则相反; inverse的作用:在hibernate中是通过inverse的设置来决定是有谁来维护表和表之间的关系的. 我们说inverse设立不当会导致性能低下,其实是说inverse设立不当,会产生多余重复的SQL…
1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati…
前言 从本节我们开始进入到对于Hibernate框架的学习,当前Hibernate框架还未正式发布6.0稳定版本,所以这里我们以5.4.12Final版本进行讲解. Hibernate框架 Hibernate是一个对象/关系映射(ORM)解决方案, 对象关系映射或对象关系管理是将应用程序域模型对象映射到关系数据库表的编程技术,它是基于Java的ORM框架,用于将应用程序域对象映射到关系数据库表,Hibernate提供了对Java Persistence API(JPA)的实现或提供程序以及自身所…
级联操作 cascadecascade的常用属性值 none 默认值 不做任何变动 save-update 保存或修改 delete 删除 all 包含save-update 和delete等行为 cascade 级联 操作级联到子实体,hibernate中一对多或者多对一中如果在一的一方 set中设置了cascade属性值为save-update 那么在操作一的一方同时也会更新或保存跟他联级的另一方,相对而言 如果属性值为delete 在执行一的一方删除操作时与当前相关的另一方也会被删掉, 如…
cascade属性是存在于set标签中,用来做级联删除和保存. 它的值有以下几种: 1)默认值是none,不做级联动作: 2)save-update:级联保存 3)delete:级联删除 4)all:级联保存和删除…
1.cascade属性 cascade属性的作用是描述关联对象进行操作时的级联特性,只有涉及关系的元素才有cascade属性.具有cascade属性的标记包括<many-to-one/>.<one-to-one/>.<any/>.<set/>.<bag/>.<idbag/>.<list/>和<array/>. 注意:<one-to-many/>和<many-to-many/>是用在集合标…
写好一篇博客,不是容易的事.原因是:你要给自己以后看的时候,还能看懂,最重要的是当别人看到你的博客文章的时候,也一样很清楚的明白你自己写的东西.其实这也是一种成就感!! 对于每一个知识点,要有必要的解释 语言及真实的代码. 今天呢,我就详细的写着 Hibernate框架的一种检索方式:Criteria查询.下面我写的这些案例,可能对于大牛没有什么好看的,但是对于初学者来说,却是一笔财富. 首先我们要知道的检索方式:  Hibernate框架提供了5种检索对象的方式      1.导航对象图检索方…
一.Hibernate:是一个开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,用于Java代码和数据库之间的交互. 1.核心:Java和数据库之间的映射关系. 2.hibernate的缓存: a).一级缓存:hibernate首次查询之后会将查询结果存放在一级缓存中,第二次查询的时候会直接从缓存中获取数据,如果缓存中没有采去查询数据库.hibernate自带一级缓…
一.JPA概述以及它和Hibernate之间的关系 1.1.Hibernate 概述 JPA Java Persistence API,是EJB3规范中负责对象持久化的应用程序编程接口(ORM接口),它定义一系列的注释.这些注释大体可分为:类级别注释.方法级别注释.字段级别注释.给实体类添加适当的注释可以在程序运行时告诉Hibernate如何将一个实体类保存到数据库中以及如何将数据以对象的形式从数据库中读取出来. 目前有两种注释方案可以确定对象与表格之间的对应关系:一种是注释实体类的属性字段(字…