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

阅读更多
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
        /*
   

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

   
            value="jdbc:mysql://127.0.0.1:3306/freewebsys?autoReconnect=true&useUnicode=true&characterEncoding=utf-8" />
   
   
   
   
   

   
   
            value="false" />

   
   
   

   
   
            value="org.hibernate.connection.C3P0ConnectionProvider" />
   
   
   
   
   
   
   
   
   
   
   
   
   
   

       

   


   

其中POJO类配置

    @Entity
    public 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
然后就可以跑通程序了。

运行效果:

代码下载地址:

http://freewebsys.googlecode.com/files/freewebsys_gwt_sns.2011.05.tar.gz

你可能感兴趣的:(GWT,JPA,SNS,Google,Hibernate)