- 浏览: 103040 次
- 性别:
- 来自: 北京
-
最新评论
文章列表
很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇文章介绍一下hibernate的二级缓存的,今天终于忍不住了。
我的经验主要来自hibernate2.1版本,基本原理和3.0、3.1是一样的,请原谅我的顽固不化。
hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。
二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等,需要设置hibernate.cache.provider_class, ...
本文对EJB的体系结构作一个全面介绍:
* EJB在J2EE体系结构中的位置
* EJB的环境构成
* EJB的资源配置
* EJB的种类
* EJB组件的构造
* EJB的调用过程
* EJB组件的生命周期
EJB是Enterprise JavaBeans的简称。本文对EJB技术的体系结构作一个全面深入地介绍。
EJB在J2EE体系结构中的位置
视图层或表现层:提供用户界面;接收用户输入;数据输出。WEB应用的情况,JSP以及SERVLET属于视图层组件。
业务逻辑层:实际的业务逻辑处理。根据视图层传送过来的数据,进 ...
Composite View(复合视图)
Composite View模式又称复合视图模式,它建议将复杂的视图分解成多个原子子视图,这些子视图可以被动态地组合进整个页面或排版。
Composite View模式介绍
我们从问题,解决方法,策略,优点等几个方面介绍Composite View模式。最后给出Composite View的相关联结。
问题
WEB应用中可能存在以下页面:
- 页面内容的一部分需要修改频繁
- 多个页面中存在相同或相似的内容
- 多个页面具有相同或相似的排版
等。
对于以上页面,如果把页面内容代码分散到各个页面视图中,将存在以下问题:
- 页面内容的 ...
概要
本文对J2EE企业架构应用的基本模式(Core J2EE Patterns)做一个概要介绍。
下图基本上列出了J2EE企业架构应用的基本模式,这些基本模式大致分为以下3类:表示层;逻辑处理层;集成层。
Presentation Tier
Intercepting Filter:
Con ...
在项目的最后阶段,就是要防止系统的内存泄漏了,顺便找了些资料,看了些java内存泄漏的实例及解决,总结一下:
Java是如何管理内存
为了判断Java中是否有内存泄露,我们首先必须了解Java是如何管理内存的。Java的内存管理就是对象的分配和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。另外,对象的释放是由GC决定和执行的。在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线的方法确实简化了程序员的工作。但同时,它也加重了JVM的工作。这也是Java程序运行速度较慢的原因之 ...
这几天在找一个程序的bug,主要是java虚拟机内存溢出的问题,调研了一些java内存管理的资料,现整理如下:
一、JVM中的对象生命周期
对象的生命周期一般分为7个阶段:创建阶段,应用阶段,不可视阶段,不可到达阶段,可收集阶段,终结阶段,释放阶段。
创建阶段,首先大家看一下,如下两段代码:
test1:
for( int i=0; i<10000; i++)
Object obj=new Object();
test2:
Object obj=null;
for( int i=0; i<10000; i++)
obj=new Object();
这两段代码都是 ...
Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少。对核心概念和思想的掌握可以帮助我们举一反三、触类旁通,有助于提升我们对整个Java平台的理解力。这里所介绍的是Java技术平台的几个核心概念,其中所蕴含的思想有助于我们更深刻的理解Java技术。
1.Java虚拟机
Java虚拟机的主要任务是装在class文件并且执行其中的字节码。Java虚拟机包含一个类装载器,它可以从程序和API中装载class文件。Java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。
不同的Ja ...
(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。
Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。 ...
1.final类:为防止他人从你的类上派生新类,此类是不可扩展的。
2.动态调用比静态调用花费的时间要长。
3.抽象类:规定一个或多个抽象方法的类本身必须定义为abstract。
例: public abstract string getDescripition
4.Java中 ...
4、报表查询
报表查询用于对数据分组和统计,完整的HQL语法:
[select...] from ... [where...] [group by... [having...]] [order by...]
4.1 投影查询
指查询结果仅包含部分实体或实体的部分属性。投影是通过select关键字实现。
from Customer c join c.orders o where o.orderNumber like 'T%'
//会检索出Customer 及关联的Order对象
select c from Customer c join c.orders o where o.or ...
提供的检索方式:
(1)导航对象图检索方式
(2)OID检索方式
(3)HQL检索方式
(4)QBC检索方式[query by Criteria(标准)]
(5)本地SQL检索方式
1、简介
1.1 HQL检索方式
HQL(Hibernate query Language)是面向对象的查询语言,在Hibernate提供的检索方式中,HQL是使用最广泛的检索方式。功能:
a.在查询语句中设定各种查询条件
b.支持投影查询,即仅检索出对象的部分属性
c. 支持分页查询
d.支持连接查询
e.支持分组查询,允许使用having 和group by 关键字
f.提供内聚聚集 ...
Customer和Order为例
1、hibernate检索策略简介
Hibernate执行检索方法时(load、get、find),需要获得以下信息:
a. 类级别检索策略:session.load,session.get,session.find方法,直接指定检索的是Customer对象,对Customer对象到底采用立即检索,还是延迟检索?
b. 关联级别检索策略:对与Customer关联的Order对象,即Customer的orders集合,到底采用立即检索还是延迟检索,还是迫切左外联接检索?
Hibernate还允许在应用程序中以编程方式显式设定检索策略,同时会 ...
Hibernate映射类型分为两种:内置映射类型和客户化映射类型,内置映射类型负责把常见的java类型映射到相应的sql类型;另外,用户可以实现UserType或CompositeUserType接口,来定制客户化映射类型,这样可以把用户定义 的java类型映射到数据库表的相应字段。
1、内置映射类型
1.1 java基本类型的hibernate映射类型
1.2 java时间和日期类型的hibernate映射类型
1.3 Java大对象类型的hibernate映射类型
注意:不允许使用这些数据类型来定义持久化类的OID。
CLOB:字符串大对象(Character Large Obj ...
1、理解Session的缓存
如果希望一个java对象一直处于生命周期中,就必须保证至少有一个变量引用它,或者在一个java集合中存放这个对象的引用。Session接口的实现类SessionImpl中定义了一系列的Java集合,这些java集合构成了Session的缓存。当Session的save方法持久化一个 A对象时,A对象被加入到Session的缓存中,当load方法试图从数据库中加载一个A对象时,Session先判断缓存是否已经存在这个对象,如果存在就不会去检索。调用Session.close才会清空缓存。
session的缓存的作用:
a.减少访问数据库的 ...
1、概念
1.1 聚集关系
在域模型中,有些类由几个部分类组成,部分类的对象的生命周期依赖于整体类的对象的生命周期,当整体消失时,部分也就随之消失,这种整体与部分的关系被称为聚集关系。
1.2 组成关系
如果部分只能属于特定的整体,这种聚集关系也叫做组成关系。
如:任何手足事整体与部分的关系,每双手只能属于特定的人。
2、粒度
建立关系数据模型的一个重要原则:在不会导致数据冗余的前提下,尽可能减少数据库表的数目以及表之间的外键参照关系,这样可以避免建立多表连接。
3. 映射组成关系
建立域模型和关系数据模型有着不同的出发点。域模型是由程序代码组成的,通过细化持久化类的 ...