JavaScud | Forum | JIRA | Blog |
  Dashboard > DWR中文文档 > ... > Integration > Hibernate Integration
  DWR中文文档 Log In View a printable version of the current page.  
  Hibernate Integration
Added by 黑灵, last edited by 黑灵 on Oct 04, 2006
Labels: 
(None)

DWR 和 Hibernate

让DWR和Hibernate正常工作的检查列表

  1. 确保你使用的是最新的DWR。Hibernate转换器是新东西,所以你需要下载最新的
  2. 确保你已经明白开始指南上所写的内容。
  3. 确保你的Hiberante在没有DWR的时候工作正常。
  4. 如果是Spring和Hibernate一起使用,那么你最好先了解一下如何将整合Spring
  5. 配置DWR,使之与Hibernate一起工作。 (看下面)。
  6. 查看演示页面:http://localhost:8080/YOUR-WEBAPP/dwr,确定Spring的Bean可以出现。

HibernateBeanConverter

这个转换器同标准的BeanConverter非常相似,不同之处在于我们可以决定如何处理延迟加载。

使用HibernateBeanConverter可能会带来如下风险:

  • 架构: HibernateBeanConverter不符合MVC模式,所以不能把对象在数据曾和表现曾之间进行隔离。这个风险可以通过在上面加上独立的bean来减轻。
  • 性能: DWR试图通过相同的序列化方式来转换所有可以得到的属性(除了DWR仅仅读JavaBean属性的时候)。所以可能会出现通过HTTP序列化了你的整个数据的情况。通常这并不是你想要的。要减少这一风险可以使用BeanConverter(HibernateBeanConverter衍生于它)的排除某些属性的功能:
    <param name="exclude" value="propertyToExclude1, propertyToExclude2"/>

HibernateBeanConverter会尝试不去读取没有初始化的属性。如果你只是想读取所有的东西那么应该使用BeanConverter。

建议使用Hibernate3,实际上Hibernate2一下的情况,你会发现你得到的都是空的Bean。

Session管理

如果你使用Hibernate对象,你需要知道每一个DWR请求都是一个新的Servlet请求,所以你需要保证为每个请求打开一个Hiberante的Session。

如果你用Spring,那么可以很方便的使用Spring里面的OpenSessionInViewFilter,它可以保证为每个请求打开一个Hiberante的Session。类似的解决方案在其它Framework中也存在。

Site running on a free Atlassian Confluence Open Source Project License granted to WebWork China. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.3 Build:#808 May 29, 2007) - Bug/feature request - Contact Administrators