
Hibernate
番薯(Koali)
没有目标的人只是在帮有目标的人完成目标
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Hibernate简介
1 hibernate概述Hibernate是冬眠的意思,它是指动物的冬眠,但是本文讨论的Hibernate却与冬眠毫无关系,而是接下来要讨论的SSH2框架中的一员。Hibernate是一个开源的项目,它是一个对象关系模型的框架,并且对JDBC进行了非常轻量级的封装,程序员在开发时可以使用对象编程思维进行开发。 Note:轻量级和重量级的区别,轻量级的框架包较小,原创 2016-09-11 18:47:59 · 291 阅读 · 0 评论 -
Hibernate的出现和Hinbernate的简单模拟实现
1 概念Hibernate是一种免费的开源的Java语言下的对象关系映射解决方案Hibernate 有个在.NET Framework 上的实现版本,称为 NHibernate1.1 为什么出现Hibernatel 阻抗不匹配l 如果有对象数据库,hibernate就没用了1.2 Hibernate在做什么l 存储l 查询、加载l 缓存原创 2016-09-11 19:16:28 · 376 阅读 · 0 评论 -
Hibernate--什么是持久化?
1.应用程序层次结构演变这里本来应该有张描述应用程序结构演变的图,可是优快云在这里上传不了,所以没有传上来.纵观几十年的计算机应用软件的演变过程,应用程序逐渐由单层体系结构发展为多层体系结构。最初应用软件只是在大型机上的单层应用程序,大都采用文件系统存储数据。20世纪70年代,随着数据库的普及,原来的单层结构发展为双层结构。在双层结构中,实现了数据存放与应用程序的分离。但是,负责用户界面原创 2016-09-11 19:18:32 · 363 阅读 · 0 评论 -
hql查询过滤器及相关聚合函数查询详解
一、参数查询 参数查询其实是使用等价代换的方法,使用设置的值替换字符串中指定位置的符号,或者通过使用参数名称,使用字符串来替换参数名称的值,这样能避免sql注入的问题,拼接字符串会出现sql注入的问题。hql提供了两种参数查询的方法,一种是通过使用符号“?”,然后使用setParameter方法设置替换的字符串;另外一种是使用参数名称,定义参数名称,并使用setP原创 2016-09-11 19:19:26 · 733 阅读 · 0 评论 -
继承映射详解
一、继承映射 继承是面向对象很重要的特性,它实现了代码的服用,在关系模型中同样也有继承关系,这种继承关系其实可以看做是一种枚举关系,一种类型中可以枚举出很多子类型,这些子类型和父对象形成了继承关系,能够对其进行枚举的大部分都可以看做是一种继承映射,所以这种枚举关系可以看做是继承映射,例如动物就是一种抽象类,它是其它动物猪、猫等的父类,它们之间就是一种继承关系,如下图原创 2016-09-11 19:20:58 · 714 阅读 · 0 评论 -
关联映射之多对一
一、关联映射之多对一 对于多对一关联映射其实很容易理解,在思考时可以把它看做人员和组之间的关系,在一个组中会有多个人员,所以这就出现了多对一的关系多个人会同属于一个组,那么在设计关系模型时就会有两种设计方法,一种是将组号作为外键添加到用户表中,另外一种是单独生成第三张表,将用户id号和组id号相关联。对于第一种设计方法它的关系模型可用下表表示:原创 2016-09-11 19:22:42 · 1386 阅读 · 0 评论 -
核心对象+持久对象全析(1)
一、Hibernate核心 1、核心解析图 一个非常简单的Hibernate体系结构图: 从上图可以看出,Hibernate使用数据库和配置信息来为应用程序提供持久化服务。应用程序创建的持久化对象收到Hibernate托管,然后将对象的修改同步到数据库中。这种功能有点类似于微软的ADO.NET,通过ADO.NET实现数据的更新原创 2016-09-11 19:23:38 · 388 阅读 · 0 评论 -
核心对象+持久对象全析(2)
一、状态解析 Hibernate的持久对象主要分为三个状态,Transient、Persistent、Detached,其中Transient称为瞬态,没有被数据库管理,Hibernate没有为对象分配id,在数据库中没有对应的行,一般在new出一个对象后转化为瞬态;Persistent称为持久化,此时已经被Session管理,Hibernate为对象分配了一个id(该id可原创 2016-09-11 19:24:34 · 511 阅读 · 0 评论 -
核心对象+持久对象全析(3)
二、状态转化方法 前面说到对象之间的转化过程是通过使用方法来实现的,这些方法是很重要的,先看张图 上面这张图在三篇文章中都有用到,它详细描述了持久对象三种状态的转换过程及具体的转化方法,另外还有垃圾回收器,对象在瞬态和脱管状态下如果长时间不适用将会在某一时刻被Java回收器回收,消亡。 1、对象直接进入Persistent状原创 2016-09-11 19:26:01 · 348 阅读 · 0 评论 -
EhCache缓存在web下的使用实例
以前对EhCache做过api的学习与测试,api就不多讲了,这次把在web下如何使用EhCache以及出现的问题说一下。同时这篇还写了EhCache的监听。在web下使用缓存,就是把常用的变动很少的数据放入缓存提高查询效率。如果需要查看实时的数据,需要把缓存清空再查询。比如有一张字典表,定义了整个工程使用到了配置信息,这个基本上是不变的,所以可以用缓存来提高查原创 2016-09-11 19:27:37 · 2657 阅读 · 0 评论 -
EhCache缓存学习
在看hibernate的官方文档时,看到关于缓存的介绍。hibernate在缓存管理上做的很好,具体使用,本章不做讲解,本篇主要研究EhCache的用法。其中hibernate使用到的缓存提供商列表如下:CacheProvider classTypeCluster SafeQuery Cache Supported原创 2016-09-11 19:29:42 · 1031 阅读 · 0 评论 -
hibernate连接mysql配置文件
[html] view plaincopyxml version="1.0" encoding="GBK"?> "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> hibernate-co原创 2016-09-11 19:30:58 · 1189 阅读 · 0 评论 -
hibernate 乐观锁与悲观锁使用
Hibernate支持两种锁机制: 即通常所说的“悲观锁(Pessimistic Locking)”和 “乐观锁(OptimisticLocking)”。 悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。 Hibernate的加锁模式有: Ø LockMo原创 2016-09-11 19:31:41 · 366 阅读 · 0 评论 -
hibernate配置多数据源
[html] view plaincopyxml version="1.0" encoding="UTF-8"?> beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http原创 2016-09-11 19:32:18 · 791 阅读 · 0 评论 -
上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)(1)
最近做了个用户维护功能,涉及到照片的操作。照片是存到数据库oracle中的Blob字段中。难点有两个:1,图片的上传;2,Blob字段的读取。 先说图片的上传吧,我使用common-fileupload来实现的写个servlet,实现上传到服务器。 UpPhotoServlet.java [java] vi原创 2016-09-11 19:33:18 · 2869 阅读 · 0 评论 -
Hibernate缓存
hibernate: 缓存是存在范围的:hibernate的缓存通常可以分为三大类: 1.事务范围 1)缓存只能被当前事务访问。 2)缓存的声明周期依赖于事务的生命周期,当事务结束,缓存也就结束生命周期。 3)缓存的物理介质为内存。 4)这里的事务可以是数据库事务或者原创 2016-09-11 19:15:34 · 417 阅读 · 0 评论 -
深入了解hibernate之PO,VO,load,get
最开始理解的POVO,感觉就是通过SAVE()方法,将OBJ 持久化到数据库.如果要UPDATE,只要将oBJ 里属性SET一个新值,然后执行下UPDATE就好(这是种错误的概念),因为那时还没怎么接触POVO,一开始看到这个已经感到很强大了,马上就在脑子中记住了POVO. 本以为在项目中可以得心应手的利用这个好处,结果错误的理解让我出了很多异常: a diff原创 2016-09-11 19:15:01 · 581 阅读 · 0 评论 -
使用SQLQuery 在Hibernate中使用sql语句
对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。下面来描述如何使用这个API进行查询。1.标量查询(Scalar queries)最基本的SQL查询就是获得一个标量(数值)的列表。sess.createSQLQuery("SELECT * FROM CATS").list();sess原创 2016-09-11 19:13:44 · 2542 阅读 · 0 评论 -
基本映射详解
一、基本用法 Hibernate一个重要的功能就是映射,它能够在对象模型和关系模型之间转换,是面向对象编程思想提倡使用的,使用映射程序开发人员只需要关心对象模型中代码的编写。对象和关系数据库之间的映射通常是由XML文档来定义的。这个映射文档被设计为易读的,并且可以手动修改。这种映射关系我总结为下图: 映射是通过XML来定义的,原创 2016-09-11 18:52:54 · 1001 阅读 · 0 评论 -
一对多双向关联
一、一对多双向关联 这里继续采用上篇文章的学生和班级作为示例,班级和学生之间是一对多的关系,一个班级中拥有多名学生,和上篇文章不同的是这里的关系是双向的,也就是一的一端和多的一端同时维护关联关系,所以它的对象图如下: 对应的关系模型图没有太大的变化,因为它们之间的关系是双向的,所以在关系模型中两端同时维护关联关系,映射到关系模型中如下图所原创 2016-09-11 18:54:46 · 550 阅读 · 0 评论 -
双向关联一对一映射详解(2)
二、双向外键关联 双向的外键关联可以理解为外键关联的一种特殊情况,这种特殊主要是由于它是一种双向的对应关系,在前篇文章中提到如果想要在一张表中添加一个外键字段的话可以使用标签,它会关系模型中生成对应的外键列。这里想要实现双向的外键关联就必须使用该标签。 1、对象模型 先来看对象模型,人和身份证属于一对一的关系,一个人原创 2016-09-11 18:56:35 · 603 阅读 · 0 评论 -
双向关联一对一映射详解(1)
一、双向主键关联 双向的主键关联其实是单向一对一主键关联的一种特殊情况,只不过要在关联对象的两端的映射文件中都要进行的配置,另外还要在主映射的主键一端采用foreign外键关联属性。 这里同样使用Person和IdCard来讨论,一个人对应着一个唯一的身份证,而且一个身份证也唯一映射着一个人,所以这就产生了双向的关联关系,Person的主键同样也原创 2016-09-11 18:58:05 · 865 阅读 · 0 评论 -
单向一对一映射
一、唯一外键 唯一外键说的是数据库表中的每一行的外键唯一对应着另一张表中的主键,也就是说一个表的主键作为另一张表的外键,并且它们之间的关系是唯一的,这种反应到关系模型中如下图所示: 上图的两个实体表,分别为人和身份证,很明显的一个人对应着一个身份证。身份证作为一个单独的实体表它添加了标识列,而且此标识列是人实体表中的外键先关联。这种在实现上原创 2016-09-11 18:59:51 · 339 阅读 · 0 评论 -
多对多
一、单向多对多 仍然按照前几篇的文章格式来讨论,首先来看对象之间的关系,单向的多对多关系是两个对象之间发生的,比如在人和职位之间,一个人可以有多个职位,而且一个职位也可以由多人来负责,所以它们之间就形成了多对多的关系,另外这种单向性是指只能在一端来查询获取另一端的内容。另外因为是多对多之间的关系,所以在生成关系模型时会生成对象之间的关联表,实际它们之间的关系的是关原创 2016-09-11 19:01:19 · 348 阅读 · 0 评论 -
一对多
一、单向一对多 前篇文章中曾经对多对一的关系展开了讨论,其中主要使用的是的关系,在多的一端维护一的一端,那和今天要讨论的一对多的关系它们之间是否有关联呢?在关系和对象模型中存在了一对多关系所以理所当然就会有多对一的关系,Hibernate同样提供了一对多关系的标签。 一对多关系的对象模型在日常生活中也经常看到,就拿学生和班级来说,一个班级里有多个学生,所原创 2016-09-11 19:03:03 · 309 阅读 · 0 评论 -
复合主键
一、复合主键映射 复合主键映射需要在映射配置文件中使用标签,该标签是指将一个类指定为相应的复合主键,它的name属性需要指定类文件中定义的属性值,并在该标签中添加子标签。 Note:想要使用复合映射必须要将复合主键放到一个类中,也就是讲复合主键属性和其它属性分到两个类中,并将复合主键的类实现接口Serializable,该接口隶属于java.io原创 2016-09-11 19:04:16 · 1000 阅读 · 0 评论 -
集合映射详解
一、集合映射 1.1 集合小介 集合映射也是基本的映射,但在开发过程中不会经常用到,所以不需要深刻了解,只需要理解基本的使用方法即可,等在开发过程中遇到了这种问题时能够查询到解决方法就可以了。对应集合映射它其实是指将java中的集合映射到对应的表中,是一种集合对象的映射,在java中有四种类型的集合,分别是Set、Map、List还有普通的数组,它们之原创 2016-09-11 19:05:58 · 5075 阅读 · 0 评论 -
组合映射详解
一、组合映射 组合是关联关系的一种特殊情况,是关联关系耦合度最高的一种关系,组合的主对象和子对象拥有相同的生命周期,主对像消亡的话子对象也会消亡。这里使用雇主和用户作为示例,用户和雇主都拥有联系方式属性,如果这里站在对象角度思考的话,常常会把对象模型绘制成为组合的方式,抽象出来一个共同的联系方式类,然后两种人分别包含相应的联系方式对象即可,向应的对象模型时它的对象原创 2016-09-11 19:07:43 · 1436 阅读 · 0 评论 -
hql查询小结
一、Hibernate简介 HQL采用的是标准化对象查询,它是以对象的方式进行查询,将查询语句封装为对象操作。优点:可读性好,复合java程序员的编码习惯。缺点:不够成熟,不支持投影或统计函数。 例子:查询用户名以“J”开头的所有用户Criteria criteria=session.createCriteria(User.class);原创 2016-09-11 19:09:04 · 425 阅读 · 0 评论 -
hql查询之实体对象查询
一、实体对象查询 实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替。这种查询方法相对简单,只要有SQL功底,使用hql是很简单的,但是有一些问题需要注意,就是查询获取数据不是目的,需要考虑的是如何编写出高效的查询语句,这才是讨论的重点。 1.1 N+1问题原创 2016-09-11 19:10:36 · 2848 阅读 · 0 评论 -
hql连接查询及外置命名查询
一、连接查询 在sql中经常使用连接查询来获取多个对象的合集,其中经常用到的有inner join、left join、right join等,分别指代内连接查询、左外连接查询、右外连接查询,它们在查询时返回的内容分别是实体之间的笛卡尔积,查询的内容及左表的一些内容,查询内容及右表的一些内容,查询的功能强大。hql的连接查询方法和sql的连接查询在查询结果上是相同原创 2016-09-11 19:11:43 · 541 阅读 · 0 评论 -
Hibernate中的sql的所有的查询
Hibernate 中HQL语句本章介绍了Hibernate的几种主要检索方式:HQL检索方式、QBC检索方式、SQL检索方式。HQL是Hibernate Query Language的缩写,是官方推荐的查询语言。QBC是Query By Criteria的缩写,是Hibernate提供的一个查询接口。Hibernate是一个轻量级的框架,它允许使用原始SQL语句查询数据库。1.1 HQL原创 2016-09-11 19:13:11 · 2483 阅读 · 0 评论 -
上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)(2)
首先说写入oracle的Blob字段上一文章的实现方法没有贴出来,如下:TempUserService.java[html] view plaincopypackage org.hd.tempuser.service; import java.io.FileNotFoundException; import java.io.IOException; i原创 2016-09-11 19:34:04 · 1930 阅读 · 0 评论