JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate、MyBatis 与 JDBC DAO 组件),集成了 Action 拦截、Form / Dao / Spring Bean 装配、国际化、文件上传下载和页面静态化等基础 Web 应用组件,提供高效灵活的纯 Jsp/Servlet API 编程模型,可完美整合 Spring,支持 Action Convention,能快速开发传统风格和 RESTful 风格应用程序,文档和示例完善,非常容易学习。
JessMA 官方网站:http://www.jessma.org JessMA 下载地址:https://code.google.com/p/portal-basic/ JessMA 在线示例:http://demo.jessma.org JessMA 在线 API 文档:http://www.jessma.org/doc
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 (不能使用 FacadeProxy 创建 DAO 对象) MyDaoB dao2 = new MyDaoB(mgr);
// 执行 DAO 方法 dao1.methodXxx(); dao2.methodYyy(); dao1.methodZzz(); dao2.methodNnn(); }}); }