概述 我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。 我们使用模板类访问底层数据,根据持久化技术的不同,模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。 虽然模板类通过资源池获取数据连接或会话,但资源池本身解决的是数据连接或会话的缓存问题,并非数据连接或会话的线程安全问题。 按照传统经验,如果某个对象是非线程安全的,在多线程环境下,对对象的访问必须采用synchronized进行线程同步。但Spring的DAO ...
  • 12:54
  • 浏览 (200)
  • 评论 (0)
­ Spring是一个强有力的java程序框架,其被广泛应用于java的程序中。它用POJO提供了企业级服务。Spring利用依赖注入可以获得简单而有效的测试能力。Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文件一般采用XML格式。然而XML配置文件冗长而不易使用,在你进行一个使用了大量bean的大项目中它将变得难以阅读和控制。 在这篇文章中我将给你展示12种的有关Spring XML配置文件的最佳技巧。它们中的一些具有更多的实际意义,而不仅是最好的技巧。请注意另外一些因素,例如域模型的设计,会影响到XML配置,但是这篇文章更关注于XML配 ...
  • 12:53
  • 浏览 (31)
  • 评论 (0)
人生像个舞台,请良家少女离开。 同样的,Freemarker和Velocity爱好者请跳过本篇。与弃用webwork而单用Spring MVC Controller接口的理由一样,Freemarker本来是一样好东西,还跨界支持jsp 的taglib,而且得到了WebWork的全力支持,但为了它的非标准化,用户数量与IDE的缺乏,在View层我们还是使用了保守但人人会用,IDE友好的JSP2.0 配合JSTL。 ­ 对于B/S结构的企业应用软件来说,基本的页面不外两种,一种是填Form的,一种是DataGrid 数据列表管理的,再配合一些css, js, ajax的效果,就 ...
  • 12:52
  • 浏览 (35)
  • 评论 (0)
Struts与Webwork的扇子请跳过本篇。 ­ MVC不就是把M、V、C分开么?至唯物朴素的做法是两个JSP一个负责View,一个负责Controller,再加一个负责Model的Java Bean,已经可以工作得很好,那时候一切都很简单。 而现在为了一些不是本质的功能,冒出这么多非标准的Web框架,实在让人一阵郁闷。像Ruby On Rails那样简捷开发,可用可不用,而且没有太多的限制需要学习的,比如Webwork这型还可以考虑。但像Struts那样越用框架越麻烦,或者像Tapestry那样有严重自闭倾向,额上凿着"高手专用玩具"的,用在团队里就是不负责任的行为了。 ...
  • 12:52
  • 浏览 (30)
  • 评论 (0)
因为Spring自带的sample离我们的实际项目很远,所以官方一点的model层模式展现就靠Appfuse了。 但Appfuse的model层总共有一个DAO接口、一个DAOImpl类、一个Service接口、一个ServiceImpl类、一个DataObject.....大概只有受惯了虐待的人才会欣然接受吧。 另外,Domain-Driven逢初一、十五也会被拿出来讨论一遍。 ­ 其实无论什么模式,都不过是一种人为的划分、抽象和封装。只要在团队里理解一致,自我感觉优雅就行了。 我的建议是,一开始DO和Manager一生一旦包演全场,DO作为纯数据载 ...
  • 12:51
  • 浏览 (35)
  • 评论 (0)
序 人人都爱Spring加Hibernate。 但Spring MVC+hibernate的Sample如Appfuse的代码却算不得最简洁优美好读,如果在自己的项目中继续发挥我们最擅长的依样画葫芦大法,美好愿望未必会实现。 所以,Pramatic精神不灭。这个系列就是探寻最适合自己的Spring+Hibernate模式。 I-配置文件简化 我厌倦一切配置文件繁重的框架。 最好的情况是,框架提供极端灵活复杂的配置方式,但只在你需要的时候。 ­ Spring ...
  • 12:51
  • 浏览 (38)
  • 评论 (0)
public static void main(String[] args) { String[] sum = { "ac", "ca", "bk", "w", "d1" }; Arrays.sort(sum); for (int i = 0; i < sum.length; i++) { System.out.print(sum[i] + " "); } } java 排序 调换位置的静态方法: ­ public class SortUtil { public static void swap(int a[], int i, i ...
  • 12:48
  • 浏览 (61)
  • 评论 (0)
<script> urlinfo=window.location.href; //获取当前页面的url len=urlinfo.length;//获取url的长度 offset=urlinfo.indexOf("?");//设置参数字符串开始的位置 newsidinfo=urlinfo.substr(offset,len)//取出参数字符串 这里会获得类似“id=1”这样的字符串 newsids=newsidinfo.split("=");//对获得的参数字符串按照“=”进行分割 newsid=newsids[1];//得到参数值 alert("您要传递的参数值是"+new ...
  • 12:47
  • 浏览 (101)
  • 评论 (0)
第一个: finally中的代码会执行吗? package com.jbbis.test; public class Test { public static void main(String[] args) { try { //return; finally中代码在return前执行 //System.exit(0); finally中的代码不执行 //System.exit(10); finally中的代码不执行 //(System.exit(非0)都是不执行的 ^_^) } catch ( ...
  • 00:28
  • 浏览 (85)
  • 评论 (0)
1. 什么是ORM (Object-Relation-Mapping) ? 对象关系映射模式指的是在单个组建中负责所有实体域对象的持久化,封装数据访问细节。 2. hibernate中对象的状态。 1) Transient(自由状态):即实体对象在内存中的自由存在,它与数据库中的记录无关 2) Persistent(持久状态):即实体对象处于由Hibernate框架所管理的状态。这种状态下,实体对象的引用被纳入Hibernate实体容器中加以管理。如果一个实体对象与某个Session实例发生了关联,并处于对应Session的有效期内,那么它就处于Persistent状态 ...
  • 16:08
  • 浏览 (90)
  • 评论 (0)