MyBatis迅猛 Java Web 开发框架 JessMA v3.2.3 正式发表

MyBatis 1

    JessMA(原名:Portal-Basic)是一套成效完备的高性能 Full-Stack Web 应用开发框架,内置可扩张的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate、MyBatis 与 JDBC DAO 组件),集成了 Action 拦截、Form / Dao / Spring Bean 装配、国际化、文件上传下载和页面静态化等基础 Web 应用组件,提供便捷灵活的纯 Jsp/Servlet API 编程模型,可周详结合 Spring / Guice,协理 Action Convention,能很快支付传统风格和 RESTful 风格应用程序,文档和示范完善,非凡简单学习。

    JessMA 官方网站:http://www.jessma.org
    JessMA 下载地址:http://code.google.com/p/portal-basic
    JessMA 在线示例:http://demo.jessma.org
    JessMA 在线 API 文档:http://www.jessma.org/doc

    JessMA 在布置之初就尽量尊崇效果、性能与应用体验。JessMA 首要特色:

    ★ 功用周详:内置稳定快捷的 MVC 基础架构和 DAO 框架,帮助 Action 拦截、Form Bean / Dao Bean / Spring Bean 装配和评释式事务,提供国际化、文件上传下载、缓存和页面静态化等常用Web组件,能满足绝一大半 Web 应用的急需。 
    ★ 中度增添:JessMA 通过的 plug-in 机制可以灵活扩充,JessMA 发布包中自带的 jessma-ext-rest 和 jessma-ext-spring 均以插件的款式提供,用户可依照须求加载或卸载那几个插件。应用程序开发者也足以根据实际需求编制自定义插件来扩大 JessMA。 
    ★ 强大的组成力量:JessMA 是一个 Full-Stack 框架,同时也是一个开放式框架,可以以十分不难的方式组成第三方组件。本开发手册会详细解说如何在 JessMA 中结成 Freemarker、 Velocity 、 Urlrewrite、 EHCache-Web 、 Spring 、 Hibernate 和 Mybaits 等常用框架和组件。 
    ★ 高性能:性能必要是 JessMA 的硬性目标,从每个模块的宏图到每行代码的已毕都力求言必有中高效。此外,Portal-Basi c并从未对 JSP/Servet API 举办过多封装,开发者依旧使用 JSP/Servet API 开发应用程序,没有过多的抄袭,性能得到保障。 
    ★ 优良的应用体验:JessMA 的规划目的之一是提供精美的开发体验,尽量裁减应用程序开发者的办事,API 的设计力求简约、完整、明确。同时,JessMA 为运用开发提供了大批量 Util 工具,用来拍卖应用程序开发进度中一般会蒙受的常备问题,进一步缩减应用程序开发者的行事担负。 
    ★ 平缓的上学曲线:学习运用 JessMA 只需了解一定的 Core Java 与 JSP/Servlet 知识,本开发手册会绳趋尺步演讲每个知识点,每个知识点都会组成完整的以身作则进行描述,知识点之间上下呼应,确保学习者在就学时温故知新,融会贯通。 
    ★ 完善的技术接济:除了提供周密的支付手册和示范代码以外,还提供博客和 QQ 群用于解答使用 JessMA 进程中相见的所有题目,也足以访问 JessMA 官方网站驾驭越来越多音信。

* JessMA 总体架构

MyBatis 2

JessMA紧要包含以下5个部分:

    ● 基础运用框架

    基础运用框架加载应用程序配置文件(默许:app-config.xml),监听应用程序的生命周期事件,并向上层应用发送应用程序启动和倒闭布告,应用程序可以拍卖这么些布告进行额外的开首化或理清工作。基础运用框架在org.jessma.app包中是落到实处。

    ● MVC框架

    MVC框架加载MVC配置文件(默许:mvc-config.xml),通过前端控制器ActionDispatcher接收和剖析所有的客户HTTP请求,然后交由相应的Action举办拍卖,末了生成对应的视图重临给客户端。MVC框架在org.jessma.mvc包中完结。

    ● DAO框架

    DAO框架封装了具有的数据库访问操作,内置JDBC、Hibernate和MyBaits数据库访问组件以及Druid、Proxool、JNDI等连接池。DAO框架是可伸张的,用户可以经过伸张org.jessma.dao.AbstractFacade和org.jessma.dao.AbstractSessionMgr完成团结的数据库访问组件。DAO框架在偏下包中已毕:
    ▪ org.jessma.dao
    ▪ org.jessma.dao.hbn
    ▪ org.jessma.dao.jdbc
    ▪ org.jessma.dao.mybatis
    ▪ org.jessma.ext.dao

    ● 公共组件

    公共组件提供多种通用效能协理类(如:字符串处理、类型转换、分页算法、压缩/解压、加解密、邮件发送等),那一个类与框架毫不相关,可在别的应用程序中应用。公共组件在偏下包中得以已毕:
    ▪ org.jessma.util
    ▪ org.jessma.util.archive
    ▪ org.jessma.util.cache
    ▪ org.jessma.util.http
    ▪ org.jessma.util.mail
    ▪ org.jessma.dao(DAO框架也可由看作为一个相对较大的公共组件)

    ● 扩张插件

    伸张差插件是依照JessMA主旨框架基础上的意义延伸,不是JessMA的必不可少组件。可由应用程序开发人士按照须求活动定制。JessMA发行包中也自带了有些扩大插件(如:jessma-ext-spring和jessma-ext-rest)。

* JessMA 应用程序看重关系

MyBatis 3

    基础运用框架、MVC框架和DAO框架都信赖于公私组件,其中基础运用框架同时借助于DAO框架,由此,MVC框架和DAO框架能脱离JessMA单独使用(当然,要附带上集体组件)。例如:可以把MVC框架和DAO框架用于JessMA之外的其余Web项目;也可以把DAO框架用于非Web项目(如:Swing / SWT桌面应用)。


JessMA 3.2.3
更新:

1、增加 Guice 支持

1) 扩充  Guice 插件包 jessma-ext-guice-3.2.3.jar 用于整合 Guice
2) Action 通过 @GuiceBean/@GuiceBeans 声明申明 Guice Bean
3) Action 通过拦截器 com.bruce.ext.guice.GuiceInjectFilter 解析 @GuiceBean/@GuiceBeans 评释并流入 Guice Bean
4) 可以在 Guice Bean 中注入 JessMA DAO 对象,从而能在 Guice 环境下行使 JessMA DAO 子框架
5) 示例工程 MyJessMA 扩大 Guice 整合示例

    (注:平日情状下,应用程序需求创立 GuiceInjectFilter 的子类并改写 configModules() 方法,用于定义 Module 的绑定规则)
    public class MyGuiceInjectFilter extends GuiceInjectFilter
    {
        @Override
        protected Collection<Module> configModules()
        {
            Set<Module> modules = new HashSet<Module>();
            // 加入第二个 Module
            modules.add(new Module()
            {
                @Override
                public void configure(Binder binder)
                {
                    // 配置绑定规则
                    // ……
                }
            });
            // ……
            // 加入第N个 Module
            modules.add(new Module()
            {
                @Override
                public void configure(Binder binder)
                {
                    // 配置绑定规则
                    // ……
                }
            });
            return modules;
        }
    }

2、Form Bean 协理联级属性注入

1) @FormBean 表明接济注入联级属性
2) org.jessma.util.BeanHelper 的 createBean(…) / setPropertiesOr菲尔德Values(…) 连串措施帮衬联级装配 Bean

    (例如:下面的 Form 对应的 Bean 中,b、x 和 y 为联级 Bean)

    <form>
        <input name=”a” value=”…”>
        <input name=”b.c” value=”…”>
        <input name=”b.d” value=”…”>
        <input name=”x.y.z” value=”…”>
    </form>

3、规范“嵌套 DAO
方法”调用规则(详情参见:开发手册第 10.6 节)

1) 最外层的 DAO
对象必须由 FacadeProxy 创造
2) 内层的 DAO 对象足以用 new 或 FacadeProxy 等随意格局创设
3) 最外层的 DAO 方法作为一个事情单元,并且不会有嵌套事务
4) 事务属性由最外层的 DAO 方法指定,忽略所有内层 DAO
方法的事情属性

4、其余更新

1) 依赖库 “jessma-lib” 中的所有 jar 包更新到最新版本
2) 依赖库 “spring-lib” 中的所有 jar 包更新到最新版本
3) 增加 Guice 依赖库 “guice-lib”
4) 更新支入手册《JessMA Java Web 应用开发框架 (v3.2.3)》

5、应用程序升级表明

1) JessMA 3.2.2 升级到 JessMA 3.2.3:完全协作,可一贯晋级
2) Portal-Basic 3.1.1 及更早版本升级到 JessMA 3.2.3:(参考 JessMA 3.2.1 的升高表达)


JessMA 3.2.2 更新:

(注:本次更新的主要内容是升级 DAO 组件)

1、org.jessma.dao.hbn.HibernateSessionMgr 协理活动扫描实体对象

1) 实体对象用 @Entity 表明取代 *.hbm.xml 映射文件(同时也不用在 hibernate.cfg.xml 中配置 ‘mapping’)
2) app-config.xml 中布局 HibernateSessionMgr 时,用第多少个可选参数以正则表明式的格式指定实体对象所在包

    (例如:实体对象位于 ‘com.bruce.<任意子包>.model’ 中)

    <manager name=”mgr-1″ class=”org.jessma.dao.hbn.HibernateSessionMgr”>
        <initialize-args>
            <arg></arg>
            <arg>com\.bruce\..+\.model</arg>
        </initialize-args>
    </manager>

2、org.jessma.dao.mybatis.MyBatisSessionMgr 协助活动扫描 SQL Mapper 接口

1) 不必在 mybatis.cfg.xml 中配置 ‘mapper’
2) app-config.xml 中布局 MyBatisSessionMgr 时,用第多个可选参数以正则表明式的格式指定 SQL Mapper 接口所在包

    (例如:SQL Mapper 接口位于 ‘com.bruce.<任意子包>.mapper’ 中)

    <manager name=”mgr-2″ class=”org.jessma.dao.mybatis.MyBatisSessionMgr”>
        <initialize-args>
            <arg></arg>
            <arg></arg>
            <arg>com\.bruce\..+\.mapper</arg>
        </initialize-args>
    </manager>

3、所有 JDBC Session Manager 均撤销 ‘isXml’ 配置参数,改为按照布置文件的恢宏名自动识别配置文件类型

1) 受影响的 Session Manager:DruidSessionMgr、JdbcSessionMgr、JndiSessionMgr、ProxoolSessionMgr

4、org.jessma.dao.FacadeProxy 扩张方法 executeCustomTransaction(…) 协理实施自定义事务

1) JessMA 的事情是 DAO 层事务,也就是说当外部调用某个 DAO 方法时,该办法作为一个业务单元执行。 但在有的杰出情状下可能要求在 DAO 外部执行 瑟维斯(Service) 层事务(例如:事务要求调用多少个 DAO 对象的多少个章程), 此时急需创制一个自定义事务(CustomTransaction),并调用 FacadeProxy 的 executeCustomTransaction(…) 来实施该自定义事务。
2) 伸张自定义事务相关接口:
    A) CustomTransaction  : 自定义事务基接口
    B) JdbcTransaction     : JDBC 自定义事务接口
    C) MyBatisTransaction  : MyBatis自定义事务接口
    D) HibernateTransaction : Hibernate 自定义事务接口

    (示例)
    public static void serviceMethod()
    {
        // 获取 SessionMgr
        HibernateSessionMgr mgr = (HibernateSessionMgr)AppConfig.getSessionManager(“mgr-1”);
        // 执行自定义事务
        FacadeProxy.executeCustomTransaction(mgr, new HibernateTransaction(){
        // 完结自定义事务方法
            @Override
            public void execute(HibernateSessionMgr mgr) throws DAOException
            {
                // 成立 dao1 (能够利用 FacadeProxy 创制 DAO 对象)
                MyDaoA dao1 = new MyDaoA(mgr);
               //
创造 dao2 (可以行使 ‘new MyDaoB(mgr)’ 创造 DAO
对象)
                MyDaoB dao2 =
Facade.create(MyDaoB.class, mgr);

                // 执行 DAO 方法
                dao1.methodXxx();
                dao2.methodYyy();
                dao1.methodZzz();
                dao2.methodNnn();
            }});
    }

5、扩展 mvc-confing.xml 中 <result-path-aliases> 别名配置使用范围

1) 扶助在 <result-path-aliases> 配置中援引后面定义的别名

    (示例:上面配置中 ${index} 的骨子里路径为 ‘/jsp/test/index.jsp’)
    <result-path-aliases>
        <alias name=”jsp_base” path=”/jsp/test”/>
        <alias name=”index” path=”${jsp_base}/index.jsp”/>
    </result-path-aliases>

2) 允许在 <action-convention> 的 ‘dispatch-file-path’ 和 ‘dispatch-file-path’ 配置中运用别名

    (示例:上边配置中 ‘dispatch-file-path’ 的骨子里路径为 ‘/jsp’)
    <action-convention
        dispatch-file-path=”${ac_path}”
        <!– 别的配置(略)… –>
    />
    <result-path-aliases>
        <alias name=”ac_path” path=”/jsp”/>
    </result-path-aliases>

6、其余更新

1) 修改 org.jessma.util.PackageHelper,插手包扫描相关办法
2) 信赖库 “jessma-lib” 中的所有 jar 包更新到最新版本
3) 更新支下手册《JessMA 高效 Java MVC & REST 开发框架 (v3.2.2)》
4) 增添一个 JessMA 项目模板工程:HelloJessMA

7、应用程序升级表达

1) JessMA 3.2.1 升级到 JessMA 3.2.2:完全合营,可径直升级
2) Portal-Basic 3.1.1 及更早版本升级到 JessMA 3.2.2:(参考 JessMA 3.2.1 的升官表达)

8、JessMA 3.2.1 历史更新:《JessMA 3.2.1 Release》

网站地图xml地图