构建富客户端程序 GWT2.3 + Guice3.0 + hibernateJPA 程序代码
发布日期:2021-12-01 08:28:50 浏览次数:132 分类:技术文章

本文共 4255 字,大约阅读时间需要 14 分钟。

 

构建富客户端程序 GWT2.3 + Guice3.0 + hibernateJPA 程序代码。

Created Thursday 05 May 2011

gwt2.3 是开发 web2.0 的最理想的技术框架。

但只有 MVC中的 显示 和控制。 而模型这部分 没有给出 相关的实现。

用 spring + hiberante 倒是可以。但是 太过重量级的了。本来 web2.0就是应该快速的。

用上 spring 的IOC 反而感觉会慢点了。启动慢,加载慢。所以选择了一个轻量级的IOC-guice

guice 从 2.0 的版本就开始关注。2.0的版本 还是一个IOC注入 框架。通过@Inject 标记注入bean。

我从 3.0的beta版本就开始关注了。发现里面有了持久层框架的实现 JpaPersistModule

开始的并没有太明白怎么使用这个Module。经过一段学习发现其实很简单。只要在模块启动时候new JpaPersistModule("XXX_unit")

就可以了。

废话少说。启动从 web.xml 开始配置下。

 

com.freewebsys.sns.guice.GuiceListener
guice
com.google.inject.servlet.GuiceFilter
guice
/*
 

然后是GuiceListener类的实现

 

import com.freewebsys.core.dao.BaseDao;import com.freewebsys.core.dao.JpaBaseDao;import com.freewebsys.sns.server.GreetingServiceImpl;import com.google.inject.Guice;import com.google.inject.Injector;import com.google.inject.Singleton;import com.google.inject.persist.PersistFilter;import com.google.inject.persist.jpa.JpaPersistModule;import com.google.inject.servlet.GuiceServletContextListener;import com.google.inject.servlet.ServletModule;public class GuiceListener extends GuiceServletContextListener {public Injector getInjector() {return Guice.createInjector(new JpaPersistModule("jpa_unit"),        new ServletModule() {            protected void configureServlets() {                // url重写                // bind(UrlRewriteFilter.class).in(Singleton.class);                // filter("/*").through(UrlRewriteFilter.class);                // 先进行事物控制                filter("/*").through(PersistFilter.class);                // 不可以配置Singleton                bind(BaseDao.class).to(JpaBaseDao.class);                        bind(GreetingServiceImpl.class).in(Singleton.class);                        serve("/freewebsys_gwt_sns/greet").with(GreetingServiceImpl.class);                        // Service End                    }                });    }}
 

其中new JpaPersistModule("jpa_unit") 是加载 jpa实现的模块。配置在src/META-INF/persistence.xml

别忘记自己运行的时候修改 数据库连接用户名密码。还要创建数据库。表就不用创建了。用hibernate.hbm2ddl.auto" value="update创建。

 

 

org.hibernate.ejb.HibernatePersistence
com.freewebsys.sns.pojo.UserInfo
true
 

 

其中POJO类配置

 

@Entitypublic class UserInfo implements java.io.Serializable {public static final String USER_SESSION = "userInfoSession";// 用户session常量@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;//private Date createTime;// 创建时间@Column(length = 100)private String email;// 电子邮件@Column(length = 100)private String name;// 真实姓名@Column(length = 100)private String passwd;// 密码@Column(length = 1)private Integer sex;// 性别@Column(length = 10)private String birthday;// 生日@Column(length = 10)private String bloodType;// 血型private Integer currentProvince;// 所在省private Integer currentCity;// 所在城市@Column(length = 100)private String currentArea;// 所在地区private Integer adminLevel;// 管理员级别private Integer active;// 是否激活    private Integer score;// 积分.....省略get set 方法
 

这个是使用 hibernate JPA + c3p0 数据源的配置文件。

// 先进行事物控制
filter("/*").through(PersistFilter.class);
// 不可以配置Singleton,否则事物有问题
bind(BaseDao.class).to(JpaBaseDao.class);
配置一个通用dao的实现。

接下来就是gwt的servlet配置。在guice下面配置就不用在web.xml下面单独进行配置了。效果是一样的。

bind(GreetingServiceImpl.class).in(Singleton.class);//一定要配置成但立模式
serve("/freewebsys_gwt_sns/greet").with(GreetingServiceImpl.class);

接下来就是GreetingServiceImpl

 

@Inject    private BaseDao baseDao;    public String greetServer(String input) throws IllegalArgumentException {        List
userList = baseDao.find("from UserInfo "); for (UserInfo userInfo : userList) { System.out.println("userInfo:getId:\t" + userInfo.getId()); } return "yes"; }
 

没执行复杂查询。就是将userInfo 全部查询并显示Id

gwt这里没有进行太复杂的代码就是 默认 创建的 一个 heloworld。点击一个按钮执行后台。

要运行这个程序需要 安装 google gwt 插件。并且需要修改 appengine本地运行的白名单。
在工程目录/doc/appengine-tools-api.jar下替换${appengine_home}/lib/appengine-tools-api.jar
然后就可以跑通程序了。

 

运行效果

 

 

代码下载地址:

 

 

 

转载地址:https://yanghuaiyuan.blog.csdn.net/article/details/83915557 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:baidu vs google 不在一个等级上的
下一篇:搜索引擎的博客提交入口

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月01日 08时30分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章