gwt与Hibernate整合会遇到集合序列化的问题,由于Hibernate内部用了代理集合类,所以会抛出org.hibernate.collection.PersistenceList 不能被Gwt序列化的异常。
从网上找到谷歌的解决方案:http://code.google.com/intl/zh-CN/webtoolkit/articles/using_gwt_with_hibernate.html,使用Gilead来解决上述问题,但是却抛出如下异常:
java.lang.RuntimeException: java.lang.ClassCastException: java.util.HashMap cannot be cast to net.sf.gilead.pojo.gwt.IGwtSerializableParameter
继续在网上搜寻答案,没找到解决方案,绝望ing。。。。
后来又到Gilead官网去看看,似乎有了点眉目,于是将Google的代码
private HibernateUtil gileadHibernateUtil = new HibernateUtil();
/**
* Constructor
*/
public MusicStoreServiceImpl() {
gileadHibernateUtil.setSessionFactory(com.google.musicstore.util.HibernateUtil
.getSessionFactory());
PersistentBeanManager persistentBeanManager = new PersistentBeanManager();
persistentBeanManager.setPersistenceUtil(gileadHibernateUtil);
persistentBeanManager.setProxyStore(new StatelessProxyStore());
setBeanManager(persistentBeanManager);
}
稍加改动成如下代码:
private HibernateUtil gileadHibernateUtil = new HibernateUtil();
/**
* Constructor
*/
public MusicStoreServiceImpl() {
gileadHibernateUtil.setSessionFactory(com.google.musicstore.util.HibernateUtil
.getSessionFactory());
//对于PersistentBeanManager,
//需要使用GwtConfigurationHelper.initGwtStatelessBeanManager(gileadHibernateUtil)
//这句话进行配置,而不是简单的new
PersistentBeanManager persistentBeanManager =
GwtConfigurationHelper.initGwtStatelessBeanManager(gileadHibernateUtil);
// 下面注释掉的这句话不需要
// persistentBeanManager.setProxyStore(new StatelessProxyStore());
setBeanManager(persistentBeanManager);
}
在业务方法里这样写
public User validateUser(User user) {//在业务方法里这样写
Session session = gileadHibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();//这里必须加事务,不加Gilead会抛异常
user = (User)session.createQuery("from User u where u.username=? and u.password=?")
.setParameter(0, user.getUsername())
.setParameter(1, user.getPassword())
.uniqueResult();
session.getTransaction().commit();
return user;
}
大功告成!再没有异常,成功将对象从Server端传到了Client端。
分享到:
相关推荐
将GWTEXT 和Hibernate整合,可以使得在处理大量文本数据时,能够更便捷地进行持久化操作,即把内存中的数据保存到数据库或从数据库加载到内存。 在这个整合实例中,我们首先需要确保已经安装了Eclipse 3.3集成开发...
Spring与GWT结合,可以在服务器端处理业务逻辑,通过GWT的Remote Procedure Call (RPC)机制与客户端进行通信。 3. **Hibernate ORM**: Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者用Java...
标题中的" GWT整合Hibernate的一个小实例 "是指将Google Web Toolkit(一种用于创建富客户端Web应用的Java开发框架)与Hibernate(一个流行的对象关系映射(ORM)框架)结合使用,以便在GWT应用中执行数据库交互。...
在整合GWT与Spring时,通常会遇到以下关键步骤: 1. 创建GWT项目,并配置好所需的库和依赖。 2. 设计服务接口(Service Interface)在GWT客户端,实现该接口的服务端(Service Implementation)在服务器端。 3. 使用...
标题 "Ext-Gwt(GWT)开发实例(整合Spring +Hibernate)" 涉及到的是一个实际项目开发的教程,其中结合了三个重要的技术框架:Google Web Toolkit (GWT),Spring 和 Hibernate。这个实例旨在展示如何在Web应用开发中...
总的来说,这个项目展示了如何使用SmartGWT构建富客户端界面,通过Spring实现松耦合的架构,并利用Hibernate处理数据持久化。对于初学者,这是一个很好的学习案例,可以帮助理解如何将这三个强大工具结合在一起,...
标题“hibernate+gwt2.4”指的是一个基于Google Web Toolkit (GWT) 2.4版本与Hibernate ORM框架的集成应用示例。这个项目可能是为了展示如何在GWT前端应用程序中有效地利用Hibernate来处理后端数据库操作。GWT是一种...
在整合GWT和Spring时,开发者通常会遇到以下关键知识点: - **GWT编译过程**:GWT代码会被编译成优化过的JavaScript,以便在浏览器中运行。 - **Spring MVC**:Spring的模型-视图-控制器架构用于处理服务端请求和...
GSH:spring3.1.0M2+Hibernate3.5+GWT2.4+JPA+Annotation+Spring4gwt0.0.1亲手整合,也可以上新浪博客去看 http://blog.sina.com.cn/s/blog_687dfecb0100yrmf.html
3. **GWT与Tomcat的整合**: - 集成GWT应用程序到Tomcat,首先需要确保Tomcat服务器已经正确安装并配置好。 - 开发者通常会使用GWT的开发模式,通过内置的HTTP服务器进行本地调试。一旦准备好,需要将编译后的GWT...
本篇文章将聚焦于如何在EXT-GWT中整合Spring框架和Hibernate ORM,以实现高效的数据操作。 首先,让我们了解EXT-GWT(GXT)的核心概念。EXT-GWT是GWT的一个扩展,它提供了大量的UI组件,如表格、树、表单等,以及...
SmartGwt、Mybatis与Spring的整合是企业级Java应用开发中的常见技术栈组合,这三种框架各有其专长,可以高效地构建出强大的后台系统。SmartGwt是一款基于GWT(Google Web Toolkit)的开源UI组件库,提供丰富的用户...
本项目"smartGwt、spring、Mybatis整合"就是一个很好的例子,它将三种流行的技术——SmartGWT、Spring和Mybatis融合在一起,创建了一个包含登录功能和分页查询功能的应用。以下是关于这三个技术及其整合方式的详细...
整合时要考虑安全问题,例如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。Struts2提供了丰富的拦截器来增强安全性,而GWT也有自己的安全机制,如URL混淆(HistoryToken)防止恶意篡改。 **5. 性能优化** - **...
- **异常处理**:try-catch-finally和自定义异常在GWT中均可用,但Throwable.getStackTrace()在WEB模式下不受支持。 - **断言**:GWT编译器理解assert语句,但在JAVASCRIPT中不会生成相应代码。 - **多线程与同步*...
例如,一个示例可能展示了如何创建一个按钮控件,当用户点击按钮时,通过GWT的RPC机制向服务器发送请求,获取数据并更新页面上的显示。另一个示例可能涉及使用GWT的Composite类来组合多个Widget,创建自定义的复杂...
5. **事件处理**:GWT中的事件处理机制允许用户与界面交互。你可以通过添加事件监听器来响应用户的点击、键盘输入等操作。 6. **RPC通信**:GWT的Remote Procedure Call (RPC)机制使得客户端和服务器之间能进行数据...
- **异常处理**:支持`try-catch-finally`结构,但在Web模式下`Throwable.getStackTrace()`不可用。 - **断言**:虽然支持断言语法,但在编译过程中不会生成相应的JavaScript代码。 - **多线程与同步**:由于...
8. **错误处理**:当出现异常时,Spring可以捕获并封装成适当的HTTP响应,而GWT客户端可以解析这个响应并显示错误信息。 9. **版本更新**:考虑到描述中提到的资料更新滞后,开发者应关注最新的GWT和Spring版本,...