边城愚人

如果我不在边城,我一定是在前往边城的路上。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  31 随笔 :: 0 文章 :: 96 评论 :: 0 Trackbacks

08 2007 档案

     摘要: 在结束了上一篇Spring 1.x中AOP的使用之后,我用马不停蹄的打开Eclipse,做着Spring2.X下了AOP的Sample。在上一篇文章中的配置过程中,由于对自动代理不是很熟,出现了循环引用的异常信息。当初在阅读PicoContainer源码时看到循环引用不以为然,后来在学习AspectJ时小有印象,这次在折腾了半个多小时后可加深了印象。  阅读全文
posted @ 2007-08-30 08:42 kafka0102 阅读(2286) | 评论 (2)  编辑

     摘要: 本文通过一个“Hello World”级别的横切性功能介绍Spring1.X中AOP的使用,并结合Spring的经典的声明式事务管理给出Spring AOP配置中的经典方案。在Spring2出来以后,Spring1.X的AOP使用方式已经“不合时宜”了,因此如果你是在新项目中采用Spring AOP,建议使用Spring2中的AOP使用方式。关于Spring2.X中AOP的使用,参考该文的姊妹文章Spring2.X中AOP的使用。

一提到AOP的应用,人们就会本能地提起日志功能,它就像一门语言的“Hello World”一样被人们无数次提起。也许有人会疑问除了“不实用”的日志功能,AOP还能做些什么?可能在很多时候我们并不需要自己实现一个AOP功能,尤其是在拥有了很多优秀的AOP应用框架来解决通用的横切性问题的情况下(比如Spring的事务管理、比如Acegi的安全管理、比如WebWork的拦截功能)。但问题总是层出不穷的,总会有些问题可能需要我们自己AOP一下。  阅读全文
posted @ 2007-08-30 08:38 kafka0102 阅读(2351) | 评论 (1)  编辑

     摘要: 1)MVC模式

当年做JSP生产实习时,印象最深也最困惑的模式就是MVC模式了。那时候Struts刚红,几乎每本Struts书中都会有大篇幅的MVC介绍。这个模式最早出现在GUI,后来在Web服务器端红火起来,先前在Ajax书中也看到Web客户端的MVC介绍。说实话,在我看了很多人的MVC解释后,我仍有些糊涂,这里说说我的理解。

有人提到MVC模式时说MVC代表了模型层、视图层、控制层,我觉得这是不对的。在经典的J2EE三层架构中,三层是分为Web层、业务层、持久化层;这个经典分层是基于分布式应用(EJB)的,也就说,Web层物理上是在Web服务器中,业务层和持久化层物理上是在应用服务器中。在这种情况下,MVC只是属于Web层这一层的,而不是分为三层。在这种分布式应用中,视图就是JSP(如果采用的话),控制器就是Servlet(如果采用的话),而模型就是就是调用业务层的在Web层中的桩子。假如我们采用轻量级的SSH技术架构,视图还是JSP,控制器是Struts,而模型就是Spring+Hibernate。这里最难理解的就是模型的概念。我觉得模型是有状  阅读全文
posted @ 2007-08-23 10:00 kafka0102 阅读(1586) | 评论 (0)  编辑

     摘要: 今日发现一名为savage100的同学问我关于范型效率的问题的留言,抱着负责任的态度,想给那位仁兄做个回复,不成想未发现blogjava有回复功能,而且也未找到savage100的博客。唉!于“百忙之中”以此文作解,也算尽了我回复之责任。  阅读全文
posted @ 2007-08-21 22:47 kafka0102 阅读(690) | 评论 (0)  编辑

     摘要: 最近在学Acegi,就试着运行一个小例子,不成想抛出下面的异常
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 23 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

Stacktrace:  阅读全文
posted @ 2007-08-21 21:55 kafka0102 阅读(24576) | 评论 (15)  编辑

     摘要: Hibernate提供客户化映射类型接口,使用户能以编程方式创建自定义的映射类型来将持久化类任意类型的属性映射到数据库中。使用客户化映射类型,需要实现org.hibernate.usertype.UserType接口。这是个强大的功能,也是Hibernate的最佳实践之一。我们经常提到 ORM中很困难的一点便是O的属性和R的属性不能一一映射,而Hibernate提供的UserType无疑给出了一个很好的解决方案。本文给出使用客户化映射类型的两个例子,算是对Hibernate初学者的抛砖。  阅读全文
posted @ 2007-08-15 10:32 kafka0102 阅读(1515) | 评论 (0)  编辑

     摘要: Hibernate的检索策略包括类级别检索策略和关联级别检索策略。
类级别检索策略有立即检索和延迟检索,默认的检索策略是立即检索。在Hibernate映射文件中,通过在上配置lazy属性来确定检索策略。对于Session的检索方式,类级别检索策略仅适用于load方法;也就说,对于get、qurey检索,持久化对象都会被立即加载而不管lazy是false还是true。一般来说,我们检索对象就是要访问它,因此立即检索是通常的选择。由于load方法在检索不到对象时会抛出异常(立即检索的情况下),因此我个人并不建议使用load检索;而由于中的lazy属性还影响到多对一及一对一的检索策略,因此使用load方法就更没必要了。

关联级别检索策略有立即检索、延迟检索和迫切左外连接检索。对于关联级别检索,又可分为一对多和多对多、多对一和一对一两种情况讨论。  阅读全文
posted @ 2007-08-11 13:33 kafka0102 阅读(1032) | 评论 (0)  编辑