发表时间:2007-04-21 关键字: Seasar
DI IoC AOP framework
<script type="text/javascript"><!-- --></script>
近段时间,给公司一项目组培训Seasar
Framework (http://www.seasar
.org/en/index.html
),一个非常类似于Spring Framework的框架,它起源于日本,并且在日本非常流行。现在我对这段时间的学习做一个总结。学习和培训过程中,我们以一个mini Blog项目练习,功能需求类似于Javaeye的blog。
Seasar
framework最初公布于众是03年8月,那时是作为一个应用服务器,依托于Web
容器Jetty和数据库HSQLDB。后来,于04年3月,经过改造,成为一个轻量级DI(Dependency
Injection)和AOP容器,并重新命名为Seasar2。经过一段时间的发展,从05年4月,该项目移到sourceforge.jp,并且真正
意义上的开源,用的是apache liscense2.0。
就像其它DI容器一样,Seasar
中的组件也是通过xml配置文件定义,但是,它引入了“Convention over Configuration”,有点类似于Ruby On Rails的CoC,和Spring的配置文件比起来,确实小的很多。
Seasar
框架主要由三部分组成:
Seasar
内核和扩展:框架的DI和AOP实现,以及一些相关服务,如连接池、事务、JDBC框架
相关软件:如S2Hibernate,S2Dao,S2Struts,S2JSF
Sandbox软件:就是相关软件的开发中版本。这类软件非常多,如对JMS、Remote的支持框架。
Seasar
框架,除了以Java版本为主外,还有.Net和php5版本。当然,这两种语言的扩展框架不如Java版丰富。
我自己对Seasar
框架整体的看法:
1、 从框架的使用来说,和使用Spring没有太大区别。Spring提供的IoC和AOP,它几乎都提供,而且第三方扩展也都差不多。
2、 Seasar
的配置文件,比Spring的少很多,这也是官方宣传的亮点。因为它可以根据规则,将组件和组件的关联一次性配置。这些规则,就是接口和接口的实现类的命名、分包方式。
3、 Seasar
的官方英文文档很少,而且几乎只有官方网站支持,没有论坛。我主要是看源码,再结合文档看。而且源码没有任何注释。但是,它的代码量比较小,两个核心包加起来只有2w行代码(不包括注释和空行)。
4、 Seasar
也是一个一站式框架。它除了提供核心DI和AOP服务外,还有持久层和表示层框架,比较有特色的是Mayaa模板,类似于Tapestry那种方式,一个html,一个.mayaa文件。
下面,我大致介绍一下在用Seasar
开发过程中用到的一些流行框架组合:Seasar
+S2Dao+S2Struts+Mayaa。
S2Dao:
这是Seasar
自己的持久化解决方案。非常精致,只有6000多行代码。不过功能比起Hibernate弱很多。但是,对于不是非常强调OO建模的应用来说,我认为是足够了。它不是ORM,只是实现了DAO模式,并且开发人员不必和JDBC打交道。
而且,我觉得它最大的亮点,就是不用写持久层代码,用户只需写接口,以及某些接口方法对应的sql。它会通过AOP自动生成实现类,而且也是声明式事务。
它的开发过程大概是:
1、 根据数据库table,写Entity类。注意,不是命名为Model,因为它只是数据库表的实体映射,就如同E-R图的E部分,在Entity类中,通过字段表示如下信息:对应的数据库table、字段对应信息、多对1关联关系等等。注意,它只能实现多对1关联。
2、 写出DAO的接口,譬如基本的CRUDL操作,要是有复杂的CRUDL,可以通过方法名、以及对应的sql搞定。但只能用一条sql。所以,譬如当我们要实现复杂的insert操作,必须在Service层组合几个dao的接口方法,然后加上声明式事务。
3、
对于多数据库支持,是通过在sql语句的文件名后面加上数据库后缀,如UserDAO_findByUsername_mysql.sql。我觉得非常不
爽的地方时,它必须每个方法一个sql文件,要是我一个dao接口有30个方法,我不是要写30个sql文件?当然,sql语句可以注释在DAO接口上
面。
大概以上三步概括了S2Dao框架的基本使用,它没有什么特殊用法,因为我看源代码上也很简单。因为它省去了在ORM框架中最难的部分:关联映射、继承关系、cache等。不过,这样也让S2dao的持久层开发异常简单。
对S2Dao的整体感觉,它和EJB中的实体Bean,特别是CMP非常类似,又有些BMP的特性。但是,它的配置文件除了sql,几乎没有。
当然,持久层还有和Hibernate集成的S2Hibernate,但比起Spring差远了。
说明:本文更多内容请参考:<!-- --><!-- --><!-- -->http://www.iteye.com/topic/72952
Seasar官方网站地址:
http://www.seasar.org/index.html
其中,s2dao的地址链接<!-- --><!-- -->
<!-- -->http://s2dao.seasar.org/ja/
-》并不是每个调查任务都能最终应用到实际项目中去,NBS项目中,Seasar和S2Dao就没有使用得上。
这个也很正常,因为此次项目,是需要我们中方自己选择技术解决方案,我们不做调查和比较,怎么知道如何选择呢?!(20090519追加)
分享到:
相关推荐
【S2Dao简介及特征】 S2Dao是Seasar2框架的一个重要组成部分,作为一个轻量级的持久化解决方案,它的主要特点是简化了Object-Relational Mapping(O/R映射)的过程,无需繁琐的XML配置。S2Dao的核心优势在于: 1. ...
S2Dao是Seasar的数据访问层组件,它简化了数据库操作。S2Dao提供了自动化的方式处理SQL查询、结果映射到Java对象以及异常处理。开发者只需要定义数据访问接口,S2Dao会自动生成对应的实现,减少了手写DAO(Data ...
S2DAO,全称为Seasar2 Data Access Object,是一个在日本广泛应用的开源数据库操作工具包,主要为Java开发者提供简化数据库访问的功能。S2DAO作为Seasar项目的一部分,旨在提高开发效率,通过自动化处理常见的数据库...
如果要利用Seasar2的扩展功能,如S2JTA、S2DBCP、S2JDBC、S2Unit、S2Tx和S2DataSet,还需额外添加如junit、poi、s2-extension以及特定的JTA和EJB规范JAR文件。根据应用环境,可能需要引用geronimo-j2ee、geronimo-...
S2DAO的目标是减少与数据库交互的代码量,提高开发效率,并通过其强大的功能和灵活性来增强应用的可维护性。” 【详细知识点】: 1. **简介**: S2DAO是基于Java的,设计用于快速开发数据访问层的工具。它与OR ...
1. "s2dao":这个目录很可能包含了Seasar2 DAO框架的核心库,包括必要的Java类和接口,使得开发者可以方便地进行数据库操作。 2. "s2dao-tiger":可能是一个针对特定JVM版本或者特定数据库优化的模块,例如“Tiger”...
Seasar2是一个开源的Java应用框架,而S2DAO是其数据库访问组件,它提供了简单易用的接口来处理数据库操作。然而,你提到的是"seasar2 samples",但结合描述,似乎这里指的是.NET环境下的一个类似实现,可能是基于C#...
数据访问对象(DAO)模式是数据库操作的标准设计模式,Seasar的S2DAO模块实现了这一模式,提供了一种统一的方式来处理各种数据库操作。它封装了SQL的编写和执行,减轻了开发者的工作负担。S2DAO支持多种数据库,包括...
- **s2dao**:这是S2-DAO的核心库,包含了所有用于数据访问的类和接口。开发者可以通过导入这些类,实现对数据库的CRUD(创建、读取、更新、删除)操作。 - **s2dao-tiger**:这可能是针对特定JDBC驱动(如Oracle、...
Seasar2框架包含多个组件,如S2Container(容器)、S2DAO(数据访问对象)、S2Action(动作)以及S2Remoting(远程调用)等。这些组件相互协作,构建出一个强大的企业级应用开发环境。 1. S2Container:作为Seasar2...
Seasar2的核心组件包括S2Container、S2DAO、S2JUnit等,这些组件共同构建了一个完整的开发环境,使得开发者可以更加高效地编写和管理Java应用程序。 标题“seasar2 官方例子代码”意味着这个压缩包中包含的是Seasar...
S2DAO支持多种数据库,包括Oracle、MySQL、SQL Server等,简化了SQL的编写和执行,提高了开发效率。 3. **S2Action**:用于处理Web请求的MVC(Model-View-Controller)组件。S2Action提供了一种声明式的方式来定义...
3. **数据库操作**:Seasar2提供了名为S2DAO(Data Access Object)的组件,简化了数据库的访问。S2DAO支持ORM(对象关系映射),让开发者可以使用Java对象直接操作数据库,降低了SQL的编写难度。 4. **事务管理**...
5. **数据库访问**:Seasar2提供了一个名为S2DAO的组件,用于简化数据库操作。通过配置数据库连接信息,可以便捷地进行CRUD操作,同时还支持事务管理。 6. **S2Action**:在MVC模式下,S2Action是控制器部分,负责...
在实际开发中,Seasar2提供了诸如数据库访问(S2DAO)、事务管理(S2Transaction)、会话管理(S2Session)等功能,大大简化了企业级应用的开发工作。此外,Seasar2还支持MVC(Model-View-Controller)架构,通过S2...
Seasar2框架提供了许多组件,包括数据库访问的S2DAO(Data Access Object),事务管理的S2Transaction,以及持久化对象的S2Container。S2DAO简化了数据库操作,通过简单的API即可实现CRUD(Create, Read, Update, ...
2. **S2DAO**: 数据库访问对象,简化了数据库操作,通过ORM(对象关系映射)技术将Java对象与数据库表关联起来,减少了手动编写SQL的需要。 3. **S2DBC**: 数据库连接池管理,负责数据库连接的创建、分配和回收,...
Seasar 是一个日本开发的开源Java框架,它包含了一系列的组件,如S2Container、S2Action、S2Dao等,旨在简化企业级应用的开发工作。本文将深入探讨S2Hibernate的相关知识点,包括其核心功能、如何使用以及与Seasar...
Seasar框架的核心组件包括S2Container、S2DAO、S2Action、S2JDBC等,它们协同工作以实现高效、灵活的开发流程。以下是对这些主要组件的详细解释: 1. **S2Container**:它是Seasar的依赖注入(DI)容器,负责管理...