1):什么是 Hibernate? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行, 使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的…
Hibernate各种查询操作(一) 测试数据库如下: t_sort表:                                   t_good表: 一.对象导航方式查询 查询所有食品类下面的食品 代码: //对象导航查询 @Test public void Test1(){ SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory…
关联关系映射--概念: 关联关系是使用最多的一种关系,非常重要.在内存中反映为实体关系,映射到DB中为主外键关系. 实体间的关联,即对外键的维护.关联关系的发生,即对外键数据的改变. 外键:外面的主键,即,使用其它表的主键值作为自已的某字段的取值. 1) 基本概念: 关联属性:Java代码的实体类定义中,声明的另一个实例类类型或其集合类型的属性,称为关联属性. 关联关系维护:关联关系的维护,也称为外键维护,即为外键字段赋值.Hibernate默认情况下,关联的双方都具有维护权.即在代码中均可通过…
概要: Hibernate 支持三种查询方式: HQL查询.Criteria查询及原声 SQL (Native SQL)查询. HQL(Hibernate Query Language,Hibernate 查询语言)是一种面向对象的查询语言,其中没有表和字段的概念,只有类.对象和属性的概念,大家在学习中要注意. Criteria 查询采用面向对象的方式构造查询.原生 SQL 查询就是直接执行 SQL 语句的查询,可以在 SQL 中利用不同数据库所特有的一些特性进行查询,例如,数据库是 Oracl…
1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条件封装为一个Criteria对象. 在实际应用中,使用Session的createCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体的查询条件通过Criteria的add()方法加入到Cr…
图解: 1):瞬时状态(Transient) 对象与session没有关联,数据库中没有对应的数据. 一般new出来的对象便是瞬时对象. 对瞬时对象使用save()方法便使之成为持久对象. 由于数据库中没有对应的数据,所以对瞬时对象使用update()方法无效. 2):持久状态(Persistent) 对象与session有关联,且数据库中有对应id的数据. 使用get().load()等方法获得的是持久对象. 对瞬时对象使用save()方法便使之成为持久对象. 对游离对象使用update()方…
1):Configuration配置对象 Configuration用于加载配置文件. 1): 调用configure()方法,加载src下的hibernate.cfg.xml文件 Configuration conf = new Configuration().configure(); 2):如果配置文件不符合默认的加载规则,我们可以用: new Configuration().configure(file);  //通过file加载 new Configuration().configure…
1):Hibernate 中 get()  和 load() 有什么不同之处? 1)Hibernate的 get方法,会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在缓存中查找,还没有就查询数据库,数据库中没有就返回null. 2)Hibernate的 load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true): ①  若为true,则首先在Session缓存中查找,看看该id对应的对象是否存在,不存在则使用延迟加载,返回实体的代理类对象…
区别如下: quert.list() : 1):每次都是通过一条语句直接操作数据库取出所有的数据返回(并且将对象存入hibernate缓存中): 2):不会从一二级缓存中查询数据: 3):之执行一条SQL语句,查询所有. quert.iterate(): 1):iterator首先通过一条语句取出所有数据的id,然后通过id在hibernate的一级缓存中查找是否存在该对象, 2):如果存在则直接取出,如果没有则再次发出一条sql语句通过id取得对象(并且加入到缓存中), 3):这样如果所有的i…
ORM概念 在学习 Hibernate 之前,我们先来了解ORM   对象关系映射 O, Object  对象 R,Realtion 关系  (关系型数据库: MySQL, Oracle…) M,Mapping  映射 ORM, 解决什么问题? 存储:   能否把对象的数据直接保存到数据库? 获取:   能否直接从数据库拿到一个对象? 想做到上面2点,必须要有映射!   总结:          Hibernate与ORM的关系?             Hibernate是ORM的实现,简化对…
Hibernate缓存 缓存: 是计算机领域的概念,它介于应用程序和永久性数据存储源之间. 缓存: 一般人的理解是在内存中的一块空间,可以将二级缓存配置到硬盘.用白话来说,就是一个存储数据的容器.我们关注的是,哪些数据需要被放入二级缓存. 缓存作用: 降低应用程序直接读写数据库的频率,从而提高程序的运行性能.缓存中的数据是数据存储源中数据的拷贝.缓存的物理介质通常是[内存]. Hibernate缓存分类: 1):Session缓存(又称作事务缓存):Hibernate内置的,不能卸除. 缓存范围…
在命名空间(,)中找到多个表 - SchemaExtractionException? 问题: 尝试在Java应用程序中使用Hibernate将一些值保存到表中时,我一直面临着这个奇怪的异常. 但是,只有一个特定的表/实体才会出现此异常,因为其余的表我可以通过Hibernate执行crud操作. 请在下面找到Stacktrace并告诉我这是否与java代码相关或者是数据库设计错误. 2016-04-28 11:52:34 ERROR XXXXXDao:44 - Failed to create…
1):struts2 的基本概念: 1-1):Struts2 是什么? 1.Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. 2.Struts 2是Struts的下一代产品,是在 struts 1 和 WebWork 的技术基础上进行了合并的全新的Struts 2框架. 3.其全新的 Struts 2 的体系结构与 Struts 1 的体系结构差别巨大.Str…
使用 Hibernate 完成持久化操作 七大 步骤: 1.读取并解析配置文件及映射文件: Configuration configuration=new Configuration().configure(); 根据默认位置的 Hibernate 配置文件中的信息,构建 Configuration  对象. Configuration  负责管理 Hibernate  的配置信息. 2.依据配置文件和映射文件中的信息,创建 SessionFactory 对象: SessionFactory s…
Hibernate概述 Hibernate是一个ORM(对象关系映射)映射框架,它的核心思想就是在底层对JDBC进行了一次封装. 什么是框架 IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构.在此结构上可以根据具体问题扩展.安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案. ————补充解释———— 也就是说: 1)框架本身一般不完整到可以解决特定问题: 2)框架天生就是为扩展而设计的: 3)框架里面可以为后续扩展的组件提供很多辅助性.支撑性的方便易用的实…
生活就像一杯咖啡,让你我慢慢的品尝,品尝它的苦涩和甘甜...... 一.什么是Hibernate缓存. 解析:白话来说就是缓存数据的容器 官方标准点缓存:是计算机领域的概念,它介于应用程序和永久性数据存储源之间. 作用:降低应用程序直接读写数据库的频率,从而提高程序的运行性能.缓存中的数据是数据存储源中数据的拷贝.缓存的物理介质通常是内存. 二.缓存一般分为三个类 一级缓存 二级缓存 查看缓存 三.一级缓存 场景一:使用同一个session连续查询两次同一个对象 /查询学生信息 public s…
//针对myEclipse2014版本 怎样新建一个工程实现这些东西的导入. 打开myeclipse. 2.点击右上角的open perspective 找到这个 MyEclipse Database Explorer.点击ok. 3.右键新建数据库驱动器 4.新建这样一个用以链接的数据库: 5.然后完成第三部的那个创建目录: 6. 选择要展示的视图, 1)展示所有视图 2)展示默认视图 3)展示选中视图 3)a.当前这个 链接里面可以对应到的数据库 b.下图为对应 c.选择我们新建立的数据库:…
这篇博客是hibernate学习的第一篇,主要简介hibernate框架,之后简单说一下hibernate的文件夹结构,最后写一个简单的hibernate实例.通过这三步来简单的认识一下hibernate. 废话不多说,步入正题.首先简介一下hibernate框架,它是一种基于JDBC的主流持久化框架,是一个优秀的orm实现:它对JDBC进行了轻量级的封装,大大简化了数据訪问层繁杂的反复代码:并且它利用了java反射机制来实现程序的透明性:它的本意是从对象出发而非关系数据库出发,这一点也就是说明…
     相信所有做后端的程序员同行们,没有不知道Hibernate大名的.这是一个经典的轻量级Java EE持久层的解决方案,它使得我们程序员能以面向对象的思维操作传统的关系型数据库,这也是其存在的最大意义所在.当然也有很多人说Hibernate不就是封装了我们的JDBC实现对数据库的增删改查吗?,但其实Hibernate所做的事情远远不止于此,它是一个非常优秀的框架,甚至在目前依然占有很大一部分市场.下面我们就详细的学习下该框架的最基本的一些概念和配置,主要涉及内容有如下几点: Hibern…
上篇文章我们对持久化对象进行的学习,了解了它的三种不同的状态并通过它完成对数据库的映射操作.但这都是基于单张表的操作,如果两张或者两张以上的表之间存在某种关联,我们又该如何利用持久化对象进行操作呢?本篇主要介绍的关联映射就是针对有着某种关联的多张表的各种操作,主要涉及内容如下: 组合主键的映射 组件的映射 单向多对一的映射 单向一对多的映射 双向一对多的映射 级联映射 一.组合主键的映射操作      根据我们的上篇文章,对于单一主键,在对象映射配置文件中使用 id标签即可完成配置.但是,往往有…
概述 Hibernate是一个开源代码的对象关系映射(ORM)框架,是基于Java的持久化中间件,它对JDBC进行轻量级的对象封装. 它不仅提供了从Java类到数据表之间的映射,也提供了查询和事务机制. 相对于使用JDBC和SQL操作数据库,Hibernate大大减少了操作数据库的工作量. 作用 作为持久化的中间件,Hibernate采用ORM映射机制,实现Java对象和关系数据库之间的映射,把SQL语句传给数据库,并且把数据库返回的结果封装成对象. 内部封装了JDBC访问数据库的操作,向上层应…
Hibernate的优势 l 优秀的Java 持久化层解决方案  (DAO) l 主流的对象—关系映射工具产品 l 简化了JDBC 繁琐的编码 l 将数据库的连接信息都存放在配置文件 l 自己的ORM框架 l 一定要手动实现Hibernate(模拟Hibernate实现) 一:创建一个java project项目 如下图 2:创建一个大配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hib…
使用hibernate前需要导入相关JAR包. 1.它可以接受词文法语言描述,并能产生识别这些语言的语句的程序 2.是一个Java的XML API,类似于jdom,用来读写XML文件的 3.支持注解配置 4.核心配置 5.jpa注解是hibernate的核心 6.编辑和创建Java字节码的类库 7.使用一个注解处理器来实现你的带注释的接口的具体类 8. 解释不清.. 9.单元测试 10.mysql驱动jar 1.src下创建hibernate.cfg.xml文件,提供数据库信息 <?xml ve…
一.对象的持久化 狭义的理解: 持久化仅仅指把对象永久的保存到数据库中. 广义的理解: 持久化包括和数据库相关的各种操作.         保存: 把对象永久保存到数据库中.         更新: 更新数据库中对象的状态.         删除: 从数据库中删除一个对象.         查询: 根据特定的查询条件,把符合查询条件的一个或者多个对象加载到内存中.   二.ORM      ORM(Object-Relation-Mapping),对象关系映射.      ORM的思想: 将关系…
     上一篇文章我们简单介绍了Hibernate相关的一些最基本的文件及其作用,并在最后完整的搭建了Hibernate的运行环境,成功的完成了与数据库的映射.但是至于其中的一些更加细节的地方并没有很详尽的解释,本篇则主要介绍Hibernate中的一个关键元素,持久化类.主要涉及以下一些内容: 定义用作持久化类的基本要求 持久化对象的几种不同状态及其相互之间的转换 使用Hibernate完成对数据库的crud操作 一.定义用作持久化类的基本要求      所谓的持久化类其实本质上也就是一个普通…
上篇我们介绍了关联映射的几种形式,有单向多对一,单向一对多,还有双向一对多.本篇接着介绍有关关联映射的其他几种映射方式,主要有以下几种: 基于外键的单向一对一关联映射 基于主键的单向一对一关联映射 单向多对多关联映射 一.基于外键的单向一对一关联映射      具有一对一关联的表结构也是很常见的,比如:一个人对应于一张身份证.于是我们的person表会有一个外键关联到 idcard表的主键,只要这个外键列唯一即可保证person到idcard表的关系由多对一变为一对一,也就是说单向的一对一关联映…
     前面的两篇文章中,我们介绍了两张表之间的各种相互关联映射关系,但往往我们也会遇到两张表甚至多张表之间共有着多个相同的字段.例如: 如图,student表和teacher表共同具有id,name,age等字段,而我们的继承映射就是这样的一个思想,抽象出这些共有的字段为一张父表,让子表对其进行继承,这样就可以大大降低我们实体类代码的冗余性,增强其结构的完善. Hibernate支持以下三种数据表的生成策略: 每个类分层结构一张表 每个子类一张表 每个具体类一张表 一.每个类分层结构一张表…
Hibernate.cfg.xml 主配置 Hibernate.cfg.xml 主配置文件夹中主要配置:数据库链接配置,其他参数配置,映射信息等. 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties session-factory 节点: 一般来说一个数据库对应着一个session-factory节点. 1.数据库链接配置:(以mysql为例子)       hibernate.propert…
Hibernate的优势 优秀的Java 持久化层解决方案  (DAO) 主流的对象—关系映射工具产品 简化了JDBC 繁琐的编码 将数据库的连接信息都存放在配置文件 自己的ORM框架 一定要手动实现Hibernate(模拟Hibernate实现) 2:创建一个大配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//…
一  配置过程 1. 创建一个项目 2. 导包    required里的包 optional里的c3p0连接池的三个包 数据库驱动包 Junit 3.创建Hibernate的配置文件(hibernate.cfg.xml) 4.创建持久化的实体类对象User 5.创建对象与关系型数据库之间的映射(user.hbm.xml或使用注解) 6.通过Hibernate访问数据库 二  示例 配置文件实现: 1.创建项目hibernate-01 2.导入需要的包 3.创建Hibernate的配置文件(hi…