我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > 如何快速学好SSH三大框架做好web开发
总共48086条微博

动态微博

12
楼主: 汪星人

如何快速学好SSH三大框架做好web开发

[复制链接]

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

11#
发表于 2014-03-11 21:44:51 |只看该作者
evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象。
" I" T0 [  m, N/ P$ x' a二级缓存的管理
; M5 Q2 x: c  }  3.1. Hibernate的二级缓存策略的一般过程如下:   1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。   2) 把获得的所有数据对象根据ID放入到第二级缓存中。   3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。   4) 删除、更新、增加数据的时候,同时更新缓存。   Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。   3.2. 什么样的数据适合存放到第二级缓存中? 1 很少被修改的数据 2 不是很重要的数据,允许出现偶尔并发的数据 3 不会被并发访问的数据 4 参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。   3.3. 不适合存放到第二级缓存的数据? 1 经常被修改的数据 2 财务数据,绝对不允许出现并发 3 与其他应用共享的数据。   3.4. 常用的缓存插件 Hibernater 的二级缓存是一个插件,下面是几种常用的缓存插件:   l EhCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,对Hibernate的查询缓存提供了支持。   l OSCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,提供了丰富的缓存数据过期策略,对Hibernate的查询缓存提供了支持。   l SwarmCache:可作为群集范围内的缓存,但不支持Hibernate的查询缓存。   l JBossCache:可作为群集范围内的缓存,支持事务型并发访问策略,对Hibernate的查询缓存提供了支持。   上述4种缓存插件的对比情况列于表9-3中。   表9-3 4种缓存插件的对比情况   缓 存 插 件 支 持 只 读 支持非严格读写 支 持 读 写 支 持 事 务 & L/ |2 C+ [  L! k' W- @
EhCache 是 是 是 5 O9 p% d  u# e  V% q' S  W; a
7 ?: ~, F2 n; k' p# {& _
OSCache 是 是 是
2 `" Q& o( R/ r% K- {
# m$ }! [$ I! _1 w5 f. LSwarmCache 是 是
: H! `* a, b- x; s: X4 F
/ r: m6 c, K; Z* f( |' S
! X$ w+ }5 h$ D- Q( ^2 Y9 TJBossCache 是 0 X  ^5 w4 A. X% L& J4 d" |5 o
* ^& p9 {4 G, j

. o6 N( T! m! s& @: P  i( v它们的提供器列于表9-4中。   表9-4 缓存策略的提供器   缓 存 插 件 提供器(Cache Providers) 5 d/ g, ?4 C# Z! F7 Y$ n
Hashtable(只能测试时使用) org.hibernate.cache.HashtableCacheProvider
( p0 R4 |$ Q6 u2 t! |! ~- H# }EhCache org.hibernate.cache.EhCacheProvider
+ v3 K# j) u; W3 Y2 ~OSCache org.hibernate.cache.OSCacheProvider 3 ~/ _1 ]3 l( L2 P) v  U  h
SwarmCache org.hibernate.cache.SwarmCacheProvider
/ A2 F% M3 z" BJBossCache org.hibernate.cache.TreeCacheProvider
% G7 \, h  o2 z/ Z  ~9 R在默认情况下,Hibernate使用EhCache进行JVM级别的缓存。用户可以通过设置Hibernate配置文件中的hibernate.cache.provider_class的属性,指定其他的缓存策略,该缓存策略必须实现org.hibernate.cache.CacheProvider接口。   3.5. 配置二级缓存的主要步骤:   1) 选择需要使用二级缓存的持久化类,设置它的命名缓存的并发访问策略。这是最值得认真考
回复

使用道具 举报

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

12#
发表于 2014-03-11 21:44:59 |只看该作者
虑的步骤。   2) 选择合适的缓存插件,然后编辑该插件的配置文件。2 g) g7 E' m' h' a5 x4 N& v
编辑本段Hibernate与延迟加载
5 v4 h" n# [* }1 a8 H- e6 i  Hibernate对象关系映射提供延迟的与非延迟的对象初始化。非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来。这有时会导致成百的(如果不是成千的话)select语句在读取对象的时候执行。这个问题有时出现在使用双向关系的时候,经常会导致整个数据库都在初始化的阶段被读出来了。当然,你可以不厌其烦地检查每一个对象与其他对象的关系,并把那些最昂贵的删除,但是到最后,我们可能会因此失去了本想在ORM工具中获得的便利。   一个明显的解决方法是使用Hibernate提供的延迟加载机制。这种初始化策略只在一个对象调用它的一对多或多对多关系时才将关系对象读取出来。这个过程对开发者来说是透明的,而且只进行了很少的数据库操作请求,因此会得到比较明显的性能提升。这项技术的一个缺陷是延迟加载技术要求一个Hibernate会话要在对象使用的时候一直开着。这会成为通过使用DAO模式将持久层抽象出来时的一个主要问题。为了将持久化机制完全地抽象出来,所有的数据库逻辑,包括打开或关闭会话,都不能在应用层出现。最常见的是,一些实现了简单接口的DAO实现类将数据库逻辑完全封装起来了。一种快速但是笨拙的解决方法是放弃DAO模式,将数据库连接逻辑加到应用层中来。这可能对一些小的应用程序有效,但是在大的系统中,这是一个严重的设计缺陷,妨碍了系统的可扩展性。
& L; {& x( C) z# l8 V9 q' o; r) S! M+ z编辑本段在Web层进行延迟加载
4 s' d3 z- F9 v6 r& W1 K5 I* k% b& H- k2 [  幸运的是,Spring框架为Hibernate延迟加载与DAO模式的整合提供了一种方便的解决方法。以一个Web应用为例,Spring提供了OpenSessionInViewFilter和OpenSessionInViewInterceptor。我们可以随意选择一个类来实现相同的功能。两种方法唯一的不同就在于interceptor在Spring容器中运行并被配置在web应用的上下文中,而Filter在Spring之前运行并被配置在web.xml中。不管用哪个,他们都在请求将当前会话与当前(数据库)线程绑定时打开Hibernate会话。一旦已绑定到线程,这个打开了的Hibernate会话可以在DAO实现类中透明地使用。这个会话会为延迟加载数据库中值对象的视图保持打开状态。一旦这个逻辑视图完成了,Hibernate会话会在Filter的doFilter方法或者Interceptor的postHandle方法中被关闭。   实现方法在web.xml中加入   <filter>   <filter-name>hibernateFilter</filter-name>   <filter-class>   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter   </filter-class>   </filter   <filter-mapping>   <filter-name>hibernateFilter</filter-name>   <url-pattern>*.do</url-pattern>   </filter-mapping>
4 d' \, i* d( Z/ A& @+ C) |. H& w( q) }. z8 k: N
3 ]( x1 i$ i+ q1 P  L3 h

( R/ R+ K% y: g五、学习顺序和条件8 U6 E) y- W' A' `) F. I: u) `. q
一步一步的学,要学三个框架(struts + hibernate +spring),建议,先学懂以下技术
, k# N4 B" ]8 O8 f5 v, ]6 b1、J2SE 必须的,有点废话 - -
) Y1 n0 W* V  l8 Y2、数据库(Oracle,MySql...)
# g/ I' e( w- `7 L3、JDBC% I" }, W1 X, R+ g8 p( X
4、jsp + servlet
5 ^0 o: j: d: \0 O: f8 a然后先学struts,接着学hibernate,再学spring。
: u+ _( C8 l& k# i
回复

使用道具 举报

3

主题

0

听众

212

金钱

四袋长老

该用户从未签到

13#
发表于 2016-03-07 17:46:24 |只看该作者
很不错哟,谢谢楼主,受教了。
回复

使用道具 举报

13

主题

9

听众

4517

金钱

八袋长老

该用户从未签到

14#
发表于 2016-03-18 14:28:55 |只看该作者
发的什么东西哦。。。。
回复

使用道具 举报

11

主题

1

听众

271

金钱

三袋弟子

该用户从未签到

15#
发表于 2016-04-07 11:58:55 |只看该作者
好多知识,独特的见解,研究研究
回复

使用道具 举报

12

主题

3

听众

526

金钱

四袋长老

该用户从未签到

16#
发表于 2016-04-18 17:04:47 |只看该作者
可以的,不过内容感觉挺长
回复

使用道具 举报

12
快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表