航安项目(三期)框架技术规范日期版本简述作者2011年3月1日V1.0指定本系统的技术规范2011年9月25日V2.0指定本系统的技术规范框架技术规范ii1、规范配置说明.........................................................................................................12、系统三层架构规范配置说明.................................................................................12.1Dao....................................................................................................................................22.2Entity.................................................................................................................................42.3Service...............................................................................................................................43、Spring规范配置说明.............................................................................................53.1IOC配置说明...................................................................................................................53.2集成Hibernate配置说明..................................................................................................53.3AOP配置说明..................................................................................................................64、Hibernate规范配置说明........................................................................................74.1Hiebernate的基本配置.....................................................................................................74.2对象标识符号...................................................................................................................84.3Hibernate映射类型..........................................................................................................94.4Hibernate的HQL语言..................................................................................................105、Struts规范配置说明.............................................................................................135.1struts2-convention插件概述...........................................................................................135.2struts2-convention具体配置及规范说明.......................................................................145.3Struts.xml配置文件........................................................................................................155.4Web目录规范说明.........................................................................................................166、JPA规范配置说明................................................................................................176.1EntityIdentity实体标识................................................................................................176.2AccessorofPersistentFieldsandProperties持久化值域和属性的访问器..................186.3PersistenceContext持久化上下文................................................................................186.4EntityInstance'sLifeCycle实例对象生命周期...........................................................196.5EntityRelationships实体关系.......................................................................................196.6Inheritance继承.............................................................................................................206.7OptimisticLockingandConcurrency乐观锁及并发控制............................................206.8本系统JPA例子.............................................................................................................216.9JPA注解详细说明........................................................................................................22航安项目框架技术规范目录框架技术规范第1页1、规范配置说明在JavaEE企业级开发中,以SSH框架为核心的应用非常广泛,航安项目实现全注解式的开发。用到SSH框架的版本为:Struts2.1.6+Spring2.5.6+Hibernate3.6.4+JPA,用到的工作流流程管理框架为JBPM:JBPM4.4,……框架(sinoframe)的服务器上SVN的地址是:。航安系统(sms)的服务器上SVN的地址是:。2、系统三层架构规范配置说明这章为大家说明系统的层次结构,并实现除WEB层的部分功能代码,详细代码请在源码中查看。系统一共分为:dao、entity、service、web四层。另外在这些层次下,还以业务功能再进行分包,这样做是为了方便在以后的功能扩展中,能更好的管理和维护代码。如果将所有类都直接集中在这4个包下面,随着类的增加,会越来越难以维护,而且查找起来也很费劲。框架技术规范第2页2.1Dao先建立BaseHibernateDao,它是通过继承Spring提供的DaoSupport来实现持久层的基类,并且封装了一些基本操作方法。这是BaseHibernateDao的部分代码。大家在写Dao时,可以直接继承BasehibernateDao。持久层的Dao类是根据实体类定义,一般是一个实体类就会有一个对应的Dao类。当然这要跟业务需求来设计,不是绝对的。框架技术规范第3页这些定义的方法是供service层调用,在业务层,将不会看到一行与持久层有关的代码,降低藕合性是这样做的目的。@Repository注解的作用就是标注这个UserDao是一个持久层组件。component-scan它就是用来将标有@Repository,@Service这样的注解类扫描到Spring的容器里,并且同时对标有@Resource注解的Bean启用了自动注入功能。使用注解的方法,可以告别繁琐的配置文件定义。框架技术规范第4页2.2Entity关于实体的定义就是使用JPA注解。详见JPA规范说明。2.3Service@Service表示这是业务层组件。在业务层需要对调用的Dao类的Set方法加上@Resource注解,这里将业务层的方法名与持久层的方法名定义大家可以按自己的想法来框架技术规范第5页做。3、Spring规范配置说明3.1IOC配置说明根据base-package指定的路径,扫描其下所有包含注解的Bean,并自动注入。比如@Repository,@Service这些都是注解,前者表示持久层,后者表示业务层。有了它,将不用再去写那繁琐的beanid=class=/。本系统的主旨就是全注解,就是为了告诉大家不用写配置文件(当然不是绝对不写)来怎样进行开发工作。3.2集成Hibernate配置说明这就是在Spring中定义Hibernate相关的配置,Spring已经集成了这部分功能。通过class框架技术规范第6页里面定义的类名称我们很容易就能理解,这是使用注解的方式映射实体以及创建HiberanteSessionFactory。其中包含了hibernate.dialect、hibernate.show_sql等和数据源JNDI的配置,当applicationContext-common.xml定义好之后,就不用再对它进行修改。详细内容见Hibernate规范。另外在Spring2.5.6版中,加入了一个很有用的小功能,就是packagesToScan属性,它是根据value中定义的路径来扫描其下所有的注解实体类。大象对这个路径做了多种测试,另外又看了源代码,发现它只能匹配某一类型的