风故故,也依依

Stand still in the wind.

导航

2009年7月19日 #

Hibernate如何提升数据库查询的性能

摘要: 数据库查询性能的提升也是涉及到开发中的各个阶段,在开发中选用正确的查询方法无疑是最基础也最简单的。SQL语句的优化 使用正确的SQL语句可以在很大程度上提高系统的查询性能。获得同样数据而采用不同方式的SQL语句在性能上的差距可能是十分巨大的。 由于Hibernate是对JDBC的封装,SQL语句的产生都是动态由Hibernate自动完成的。Hibernate产... 阅读全文

posted @ 2009-07-19 21:36 jadmin 阅读(196) 评论(0) 推荐(0) 编辑

Hibernate的性能优化

摘要: Hibernate是对JDBC的轻量级封装,因此在很多情况下Hibernate的性能比直接使用JDBC存取数据库要低。然而,通过正确的方法和策略,在使用Hibernate的时候还是可以非常接近直接使用JDBC时的效率的,并且,在有些情况下还有可能高于使用JDBC时的执行效率。 在进行Hibernate性能优化时,需要从以下几个方面进行考虑:● 数据库设计调整。● ... 阅读全文

posted @ 2009-07-19 21:30 jadmin 阅读(456) 评论(0) 推荐(0) 编辑

Hibernate查询方法与缓存的关系

摘要: 在前面介绍了Hibernate的缓存技术以及基本的用法,在这里就具体的Hibernate所提供的查询方法与Hibernate缓存之间的关系做一个简单的总结。 在开发中,通常是通过两种方式来执行对数据库的查询操作的。一种方式是通过ID来获得单独的Java对象,另一种方式是通过HQL语句来执行对数据库的查询操作。下面就分别结合这两种查询方式来说明一下缓存的作用。 ... 阅读全文

posted @ 2009-07-19 21:29 jadmin 阅读(731) 评论(0) 推荐(0) 编辑

Hibernate查询缓存

摘要: 查询缓存 查询缓存是专门针对各种查询操作进行缓存。查询缓存会在整个SessionFactory的生命周期中起作用,存储的方式也是采用key-value的形式来进行存储的。 查询缓存中的key是根据查询的语句、查询的条件、查询的参数和查询的页数等信息组成的。而数据的存储则会使用两种方式,使用SELECT语句只查询实体对象的某些列或者某些实体对象列的组合时,会直接缓存整个结果集... 阅读全文

posted @ 2009-07-19 21:25 jadmin 阅读(480) 评论(0) 推荐(0) 编辑

Hibernate二级缓存

摘要: 二级缓存 与Session相对的是,SessionFactory也提供了相应的缓存机制。SessionFactory缓存可以依据功能和目的的不同而划分为内置缓存和外置缓存。 SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的副本,而预定义SQL语句是在Hibernate初始化阶段根据映射元数据推导出来的。SessionF... 阅读全文

posted @ 2009-07-19 21:23 jadmin 阅读(769) 评论(0) 推荐(0) 编辑

Hibernate一级缓存

摘要: 大家都知道,Hibernate是以JDBC为基础实现的持久层组件,因而其性能肯定会低于直接使用JDBC来访问数据库。因此,为了提高Hibernate的性能,在Hibernate组件中提供了完善的缓存机制来提高数据库访问的性能。 什么是缓存 缓存是介于应用程序和物理数据之间的,其作用是为了降低应用程序对物理数据访问的频次从而提高应用系统的性能。缓存思想的提出主要... 阅读全文

posted @ 2009-07-19 21:18 jadmin 阅读(1952) 评论(1) 推荐(0) 编辑

并发控制、悲观锁、乐观锁

摘要: 并发控制 当数据库系统采用Read Committed隔离级别时,会导致不可重复读取和两次更新丢失的并发问题,可以在应用程序中采用锁机制来避免这类问题的产生。 从应用程序的角度上看,锁可以分为乐观锁和悲观锁两大类。悲观锁 在多个客户端可能读取同一笔数据或同时更新一笔数据的情况下,必须要有访问控制的手段,防止同一个数据被修改而造成混乱,最简单的手段就是对数据进行锁... 阅读全文

posted @ 2009-07-19 21:11 jadmin 阅读(554) 评论(0) 推荐(0) 编辑

Hibernate中的事务处理

摘要: 在现在的B/S体系结构的软件开发中,对于数据库事务处理中最常使用的方式是每个用户请求一个事务。也就是说,当服务器端接收到一个用户请求后,会开始一个新的事务,直到对用户请求的所有处理都进行完毕并且完成了响应用户请求的所有输出之后才会关闭这个事务。 对于使用Hibernate实现持久化功能的系统来说,事务的处理是这样的:服务器端在接收到用户的请求后,会创建一个新的Hibern... 阅读全文

posted @ 2009-07-19 21:07 jadmin 阅读(816) 评论(0) 推荐(0) 编辑

事务的隔离级别

摘要: 为了避免上面出现的几种情况,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。● 未授权读取(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。● 授权读取(Read Committed):允许不可重复读取,... 阅读全文

posted @ 2009-07-19 21:04 jadmin 阅读(318) 评论(0) 推荐(0) 编辑

Hibernate事务

摘要: 数据库的事务处理是在进行数据库应用开发中必须进行处理的一个问题。那么对于选择Hibernate作为持久层组件,了解Hibernate的事务处理机制就显得尤为重要了。事务的基本概念 事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增... 阅读全文

posted @ 2009-07-19 21:04 jadmin 阅读(394) 评论(0) 推荐(0) 编辑

Spring整合Hibernate(2)

摘要: 6.5.4 使用HibernateCallBackHibernateTemplate还提供了一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。HibernateTemplate的灵活访问方式可通过如下两个方法完成: ● Object execute(HibernateCallback action)。 ● List execute(HibernateCa... 阅读全文

posted @ 2009-07-19 10:24 jadmin 阅读(356) 评论(0) 推荐(0) 编辑

Spring整合Hibernate(1)

摘要: 6.5 Spring整合Hibernate时至今日,可能极少有J2EE应用会直接以JDBC方式进行持久层访问。毕竟,用面向对象的程序设计语言来访问关系型数据库,是一件让人沮丧的事情。大部分时候,J2EE应用都会以ORM框架来进行持久层访问,在所有的ORM框架中,Hibernate以其灵巧、轻便的封装赢得了众多开发者的青睐。Spring具有良好的开放性,能与大部分ORM框架良好整合。下面将详细介绍S... 阅读全文

posted @ 2009-07-19 10:24 jadmin 阅读(724) 评论(0) 推荐(0) 编辑

Spring整合Struts(2)

摘要: Struts的plug-in配置部分明确指出,Spring的配置文件有两个:applicationContext.xml和action-servlet.xml。其实,完全可以使用一个配置文件。通常,习惯将Action Bean配置在控制器的context内。action-servlet.xml用于配置表现层上下文,其详细配置信息如下: 因为每次请求都应该启动新... 阅读全文

posted @ 2009-07-19 10:23 jadmin 阅读(377) 评论(0) 推荐(0) 编辑

Spring整合Struts(1)

摘要: 6.4 Spring整合Struts虽然Spring也提供了自己的MVC组件,但一来Spring的MVC组件过于繁琐,二 来Struts的拥护者实在太多。因此,很多项目都会选择使用Spring整合Struts框架。而且Spring确实可以无缝整合Struts框架,二者结合成一个更实际的J2EE开发平台。6.4.1 利用Struts的PlugIn来启动Spring容器使用Spring的Web... 阅读全文

posted @ 2009-07-19 10:22 jadmin 阅读(360) 评论(0) 推荐(0) 编辑

Spring的事务(2)

摘要: 6.3.2 Spring事务策略的优势虽然在上面的配置片段中,仅仅配置了JDBC局部事务管理器、Hibernate局部事务管理器、JDBC全局事务管理器等。但Spring支持大部分持久化策略的事务管理器。不论采用何种持久化策略,Spring都提供了一致的事务抽象,因此,应用开发者能在任何环境下,使用一致的编程模型。无须更改代码,应用就可在不同的事务管理策略中切换。Spring同时支持声明式事务管理... 阅读全文

posted @ 2009-07-19 10:18 jadmin 阅读(291) 评论(0) 推荐(0) 编辑

Spring的事务(1)

摘要: 6.3 Spring的事务Spring的事务管理不需与任何特定的事务API耦合。对不同的持久层访问技术,编程式事务提供一致的事务编程风格,通过模板化的操作一致性地管理事务。声明式事务基于Spring AOP实现,却并不需要程序开发者成为AOP专家,亦可轻易使用Spring的声明式事务管理。6.3.1 Spring支持的事务策略Spring事务策略是通过PlatformTransactionMana... 阅读全文

posted @ 2009-07-19 10:18 jadmin 阅读(244) 评论(0) 推荐(0) 编辑

Spring的AOP(2)

摘要: 6.2.4 代理接口当目标Bean的实现类实现了接口后,Spring AOP可以为其创建JDK动态代理,而无须使用CGLIB创建的代理,这种代理称为代理接口。创建AOP代理必须指定两个属性:目标Bean和处理。实际上,很多AOP框架都以拦截器作为处理。因为Spring AOP与IoC容器的良好整合,因此配置代理Bean时,完全可以利用依赖注入来管理目标Bean和拦截器Bean。下面的示例演示了基于... 阅读全文

posted @ 2009-07-19 10:16 jadmin 阅读(409) 评论(0) 推荐(0) 编辑

Spring的AOP(1)

摘要: 6.2 Spring的AOPAOP(Aspect Orient Programming),也就是面向切面编程,作为面向对象编程的一种补充。问世的时间并不太长,甚至在国内的翻译还不太统一(有些书翻译成面向方面编程),但它确实极好地补充了面向对象编程的方式。面向对象编程将程序分解成各个层次的对象,而面向切面编程将程序运行过程分解成各个切面。可以这样理解,面向对象编程是从静态角度考虑程序结构,面向切面编... 阅读全文

posted @ 2009-07-19 10:15 jadmin 阅读(288) 评论(0) 推荐(0) 编辑

Spring的两种后处理器

摘要: 6.1 两种后处理器Spring 框架提供了很好的扩展性,除了可以与各种第三方框架良好整合外,其IoC容器也允许开发者进行扩展。这种扩展并不是通过实现BeanFactory或ApplicationContext的子类,而是通过两个后处理器对IoC容器进行扩展。Spring提供了两种常用的后处理器: ● Bean后处理器,这种后处理器会对容器中特定的Bean进行定制,例如功能的 加强。... 阅读全文

posted @ 2009-07-19 10:12 jadmin 阅读(884) 评论(0) 推荐(0) 编辑

Struts与Hibernate的整合策略

摘要: 4.9 Struts与Hibernate的整合策略前面介绍了Hibernate的一些相关知识点,距离Hibernate进入实际开发还有一段路要走。Hibernate作为持久层解决方案,必须与其他表现层技术组合在一起才可形成一个J2EE开发框架。经常看到网上一些朋友给出的Hibernate入门示例,居然在JSP页面中访问Hibernate Configuratioin对象。甚至看到某些所谓的精通J2... 阅读全文

posted @ 2009-07-19 10:08 jadmin 阅读(482) 评论(0) 推荐(0) 编辑