我爱佳娃
BlogJava
首页
新随笔
联系
聚合
管理
随笔-124 评论-194 文章-0 trackbacks-0
DWR+JPA: DWR直接访问SERVICE层,并直接处理DAO返回的BEAN
当我们写好SERVICE层的MANAGER方法后,就已经完成业务逻辑,可以用DWR从BROWSER直接调用,不必要再写一个“缓冲层”,这样的好处是避免了今后对SERVICE层的多处同时改动。
SERVICE层的JPA配置不再赘述,参看:
这里
。
重点说下DWR配置中注意的问题:
一、在DWR序列化过程中,JPA的SESSION关闭的解决办法
由于我们是在SERVICE层的各个MANAGER方法上设置transaction,方法调用结束意味着EntityManager(或者说数据库会话)关闭,导致lazy-init失效,应该在web.xml中配置Spring OpenEntityManagerInViewFilter让其保持打开:
<!--
below let session is open after DWR invoked manager method, so lazy property can effect
-->
<
filter
>
<
filter-name
>
Spring OpenEntityManagerInViewFilter
</
filter-name
>
<
filter-class
>
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
</
filter-class
>
</
filter
>
<
filter-mapping
>
<
filter-name
>
Spring OpenEntityManagerInViewFilter
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
二、
把DWR配置成可调用MANAGER方法
我们的MANAGER是SPRING创建的BEAN,所以DWR里要把creator写成spring
<
create
creator
="spring"
javascript
="HostGroupManager"
>
<
param
name
="beanName"
value
="hostGroupManager"
/>
<
include
method
="findAll"
/>
</
create
>
三、对一对多、多对多等关系的处理,避免大量SELECT操作
findAll方法将返回HostGroup的集合,由于HostGroup和RealHost是一对多关系,在取HostGroup过程中会把它关联的所有RealHost取出来传至BROWSER,这是不能接受的,应该在DWR里这样配置:
<
convert
converter
="bean"
match
="com.exchangebit.nms.config.entity.HostGroup"
>
<
param
name
="exclude"
value
="realHosts"
/>
</
convert
>
这样,可以让DWR在序列化HostGroup时,将realHosts排除在外。
四、浏览器端代码
注意这里需要包含HostGroupManager.js:
<
html
>
<
head
>
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=ISO-8859-1"
>
<
title
>
test dwr get
</
title
>
<
script
type
='text/javascript'
src
='<%=request.getContextPath()%
>
/
dwr
/
engine.js'
>
</
script
>
<
script
type
='text/javascript'
src
='<%=request.getContextPath()%
>
/
dwr
/
util.js'
>
</
script
>
<
script
type
='text/javascript'
src
='<%=request.getContextPath()%
>
/
dwr
/
interface
/
HostGroupManager.js'
>
</
script
>
<
script
type
="text/javascript"
>
function
handleGroups(g)
{
for
(
var
i
=
0
; i
<
g.length; i
++
)
{
var
li
=
document.createElement(
"
li
"
);
li.appendChild(document.createTextNode(
g[i].name)
);
document.getElementById(
"
north
"
).appendChild(li);
}
}
</
script
>
</
head
>
<
body
>
<
button
onClick
="HostGroupManager.findAll (handleGroups);"
>
hehe
</
button
>
<
div
id
="north"
>
<
p
>
good
</
p
>
</
div
>
</
body
>
</
html
>
象上述这样就可以在浏览器端直接调用SERVICE层方法,方便而直接。
posted on 2008-03-03 20:59
我爱佳娃
阅读(4754)
评论(1)
编辑
收藏
所属分类:
AJAX
评论:
#
re: DWR+JPA: DWR直接访问SERVICE层,并直接处理DAO返回的BEAN[未登录]
2008-06-30 09:07 |
XXX
这个
没看出有多好
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
在EXT里如果定义类和扩展类
解决EXTJS不能在本地看文档的问题
DWR+JPA: DWR直接访问SERVICE层,并直接处理DAO返回的BEAN
DWR Reverse Ajax功能实践的要点
最好用的JS编辑器:JSEclipse及YUT-EXT库的智能代码完成功能
在dojo的TreeV3中实现动态的上下文菜单TreeContextMenuV3
动态修改dojo的TreeNodeV3图标
给dojo的v3 tree加icon图标
AJAX(JAVASCRIPT编程)也要讲程序结构--MVC结构在JS中的应用
AJAX框架/库比较和选择:ECHO2, GWT, DOJO, PROTOTYPE, JQUERY
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(19)
给我留言
查看公开留言
查看私人留言
随笔分类
(134)
ActiveMQ(1)
AJAX(10)
DB相关(6)
Hibernate(6)
javascript(5)
JAVA基础(8)
MAC(4)
maven(3)
Perl(15)
Spring(4)
SSL(5)
web技术(7)
岁月留情(3)
工具使用(16)
开源库(1)
服务配置(23)
正则表达式(1)
系统设计(4)
网管(7)
自写类库(1)
记事(4)
随笔档案
(123)
2021年3月 (1)
2020年1月 (1)
2012年12月 (2)
2012年11月 (1)
2012年9月 (1)
2012年8月 (1)
2011年10月 (3)
2011年9月 (2)
2011年7月 (2)
2011年6月 (1)
2011年2月 (1)
2010年5月 (1)
2010年4月 (2)
2010年3月 (1)
2009年9月 (1)
2009年7月 (1)
2009年6月 (1)
2009年5月 (2)
2009年4月 (1)
2009年3月 (2)
2009年2月 (2)
2008年12月 (1)
2008年11月 (1)
2008年10月 (1)
2008年9月 (2)
2008年8月 (2)
2008年7月 (1)
2008年6月 (4)
2008年5月 (5)
2008年3月 (2)
2008年2月 (3)
2008年1月 (1)
2007年12月 (3)
2007年11月 (9)
2007年10月 (3)
2007年9月 (5)
2007年8月 (6)
2007年7月 (6)
2007年6月 (9)
2007年5月 (7)
2007年4月 (6)
2007年3月 (3)
2007年1月 (2)
2006年12月 (6)
2006年11月 (4)
2005年11月 (1)
我的博客
我的爱好博客
最新随笔
1. 我用过的机械键盘
2. 爆米花A410更新及通过NFS点播mac资源
3. livestatus在MAC下的编译
4. CAS多点登陆之“非主流”配置方式
5. 转的:果然是5分钟配成TOMCAT使用SSL(https)
6. 如何在extjs的PANEL里用d3.js来绘图
7. MAC 10.8 安装 MYSQL
8. 一目了然PERL编码,是转的
9. perl不用export,自动加入自己的搜索和动态链接库环境
10. 4.8以上SSHD配置特定用户只能在特定目录SFTP,不能进行其它命令操作
搜索
积分与排名
积分 - 547083
排名 - 88
最新评论
1. re: 在spring中实现rmi回调(callback)功能
这算个毛线回调
--wwar
2. re: CAS多点登陆之“非主流”配置方式[未登录]
感谢感谢!!
--Jack
3. re: 哭了:整一天Java Runtime exec的挂死(不退出)问题,原来是酱子[未登录]
原来是这样,多谢楼主
--123
4. re: SPRING循环依赖(circular reference)的解决方法
谢谢,加上 lazy-init="true"问题解决了
--liabco
5. re: DWR Reverse Ajax功能实践的要点
logger.info ("WebContext1"+servletContext);得到的值为空啊
--zwl
阅读排行榜
1. Mylyn――谁用谁知道!(45375)
2. SPRING循环依赖(circular reference)的解决方法(37793)
3. Join用法,HQL的方法,Hibernate中的fetch(33541)
4. 天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试(25762)
5. 目前发现的最好最快的直接在ECLIPSE中JETTY调试方式(19561)
评论排行榜
1. 用OpenSSL做自签名的证书(14)
2. 感触最深的几条设计哲学(12)
3. SPRING循环依赖(circular reference)的解决方法(11)
4. 《红楼梦》作曲王立平语(11)
5. 用PowerDesigner生成Hibernate映射文件的步骤(11)