- 浏览: 27715 次
- 性别:
- 来自: 北京
最新评论
文章列表
面向对象的基本原则
前五项原则是关于类设计的,它们是:
SRP,单一职责原则,一个类应该有且只有一个改变的理由。
OCP,开放封闭原则,你应该能够不用修改原有类就能扩展一个类的行为。
LSP,Liskov替换原则,派生类要与其基类自相容。
DIP,依赖倒置原则,依赖于抽象而不是实现。
ISP,接口隔离原则,客户只要关注它们所需的接口。
另外的六项是关于包的设计原则。在本文中,包是指一个二进制的可发布文件,比如.jar文件、或dll文件,
而不是Java包或是C#的命名空间.其中前三项包原则是关于包内聚性的,它们会告诉我们该把什么划分到包中 ...
2009
-
04
-
24
让Hibernate输出SQL语句参数配置
关键字:
让hibernate输出sql语句参数配置
在J2ee应用中,如果采用Hibernate框架,可以自动建立数据库实体与Java实体类的映射关系,大大方便Java程序进行持久化对象访问和操作,从而明显提高企业应用开发效率,减轻Java程序与后台数据库的依赖性。
但是,有时候如果操作不慎,可能造成映射关系不完整(特别是存在外键链接的时候),造成访问数据库对象时程序有Bug。这时,可以通过参数配置,让
Hibernate在每次需要从数据库查询记录或者每次插入、更新数据库 ...
spring对AOP的代理支持——JDK动态代理和CGLIB字节码生成
2010-01-27 15:02
spring对AOP的代理支持
1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换
如何强制使用CGLIB实现AOP?
*
添加CGLIB库,SPRING_HOME/cglib/*.jar
* 在spring配置文件中加入<aop:aspectj-au ...
Spring 在进行反射时候主要有两种策略,一种是直接用 JDK 的反射,另外是用 CgLib 。
cglib是一个开源项目, 是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO字节码的动态生成。cglib项目主页: http://cglib.sourceforge.net/
CgLib 底层用的 asm
Asm 是一个强大的 Java 字节码生成框架,和 BCEL 或者 SERP 很类似,但是小很多,可以动态修改 java 字节码 .
其中最核心的代码为
newProxyInstance ( ...
Spring强制使用CGLIB代理事务..
2009年11月06日 星期五 00:18
Spring1.2:
将事务代理工厂[TransactionProxyFactoryBean
] 或 自动代理拦截器[BeanNameAutoProxyCreator
]
的 proxyTargetClass
属性,设置为true
,则使用CGLIB
代理,此属性
默认为false
,使用JDK
动态代理.
以下引用 Spring Framework reference
2.0.5:
Spring2.0:
...
转载:
完整的jBPM4 PVM介绍发表在《程序员》第8期,这里截取部分的意思是PVM的过程调度是非常灵活的,PVM提供了一套和token类似的execution过程调度机制,通过对execution的完全操控,节点运行期行为有了无限的可能
。
PVM的流程定义模型
首先要说明的是,上图里的类全是接口。位于最上层的是ObservableElement,其提供给流程元素以附加Event(事件)的能力。在ObservableElementImpl里,它持有一个events的集合属性。对于流程元素来说,典型的事件有:流程启动/结束,节点启动/结束和转移线执行(take ...
-- 作者:apire
-- 发布时间:2010-4-9 22:52:31
-- 新手,问个概念 processinstance和execution的区别processinstance
和execution,这连个好像很一样啊,具体有什么区别,用在什么地方,谢了
-- 作者:xyz20003
-- 发布时间:2010-4-10 9:39:12
--
两者是存储在一张表里的,两个接口的具体实现类也是一样的,都是ExecutionI ...
2009-10-30
SQL语句效率问题的几点总结
1. SQL优化的原则是:
将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。 调整不良SQL通常可以从以下几点切入: 检查不良的SQL,考虑其写法是否还有可优化内容 检查子查询 考虑SQL子查询是否可以用简单连接的方式进行重新书写 检查优化索引的使用 考虑数据库的优化器
2. 避免出现SELECT * FROM table 语句,要明确查出的字段。 3. 在一个SQL语句中,如果一个where条 ...
2009-11-02
数据库设计技巧14则
关键字: 数据库 设计
1. 原始单据与实体之间的关系
可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊 ...
Eclipse @override报错解决
关键字: eclipse @override 报错 解决
我想这个问题肯定困扰了很多人,我也不例外。新公司用的东西多多少少会与我们以前公司的有所不同。所以这个问题也时常伴随在我们身边。
第一种解决方案:
@Ove ...
最近趁有空学习了一下Hibernate的缓存,其包括一级缓存,二级缓存和查询缓存(有些是参照网络资源的):
一、一级缓存 一级缓存的生命周期和session的生命周期一致,当前sessioin一旦关闭,一级缓存就消失,因此一级缓存也叫
session级的缓存或事务级缓存,一级缓存只存实体对象的 ,它不会缓存一般的对象属性(查询缓存可以),即当获得
对象后,就将该对象的缓存起来,如果在同一session中如果再去获取这个对象时,它会先判断缓存中有没有该对象的
ID,如果有就直接从缓存中取出,反之则去数据库中取,取的同时将该对象的缓存起来,有以下方法可以支持一级缓存
: * g ...
et和load方式是根据id取得一个记录 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。 1.从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方法的执行则比较复杂 ■ 首先查找session的persistent Context中是否有缓存,如果有则直接返回 ■ 如果没有则判断是否是lazy,如果不是直接访问数据库检索,查到记录返回,查不到抛出异常 ■ 如果是 ...
做FF的扩展,有时候避免不了与页面做些交互。其实FF与页面的交互利用的是事件的机制。
原理大概是这样,如果我想从页面传一值给FF的extension。
1.在extension里监听一个事件,(这事件是我们自定义的)。
在页面上该怎么做呢?既然有监听,当然也有创建咯。
对了,就是在页面上创建自定义的事件。
2.不过创建事件之前也先创建一个自定义的元素,放到documentElement里去。
3.然后给这个元素添加一些属性,注意:这里属性就是要传的值。
4;接着创建事件,初始化后再把元素里的属性分配到事件里 。OK,这样当监听到这个事件就可以获取事件的对象,那么这个事件的所有信息也 ...
<!-- END HEADER --><!-- LEFTBAR -->
Mozilla的架构
<!-- lixianjing added -->
文章出处:http://www.limodev.cn/blog作者联系方式:李先静 <xianjimli@gmail.com>
原文发表于《程序员》2007第5期,BLOG首发。
Firefox的横空出世在很多人的意料之外,其体积小巧功能强大,在安全性、扩展性和可移植性上都有惊人的表现。这样优秀的软件,实在想不出是在 mozilla这棵老树上生出的新花。我们都认为m ...
转载:http://zhxiong.bokee.com/3857888.html
应用Mozilla框架的感受
关键词: Firefox Mozilla 社区
Firefox 1.5已经正式发布了,Firefox热还在持续升温。浏览Mozilla网站,发现除了各种插件、扩展以外,Mozilla文档整理、平台开发比起两年前真是不可同日而语,想来这些变化和Firefox所引发的关注应该也不无关系。
是的,Mozilla不仅仅是一个浏览器,她是一个平台,一个客户端应用框架——Client ...