日本S2DAO技术框架

来日本有一段时间了。也从事了关于日本项目的相关开发。其实也没有什么大的生活变化。主要是因为早上要去上课,而下午还要到公司参加相关的开发工作。显然生活会少微冲实一点。为了公司的发展。公司便派我去研究SEASAR 2的相关技术。相对而言我还是比较喜欢其中的S2DAO。所以我便在这里写写一些简单的入门S2DAO。希望对有接日本外包的朋友有帮忙。
其实,如果你们有struts + spring + hibernate的经验的话,只要看看一些源码你就可以知道seasar 2 是一个什么东西。而s2dao之所以让我喜欢是因为它并没有像hibernate那样子让我害怕。使用起来更是方便。也可以看出来日本企业也在技术这方面下了不少功失。
S2dao的URL: http://s2dao.seasar.org/ja/index.html
ダウンロード的下载方面。选择 S2Dao 1.0.51 (S2Dao Tigerを含みます)这一项目下载。
解压它

我们可以看到如下文件夹。其中我们有用的很少。根据相关的文件命名我们也可清楚知道各个文件夹存放什么东西。LIB文件夹是所需要的包。dao.dicon文件和j2ee.dicon文件及log4j.properties文件这是我们需要的三个文件,请放到项目src的下面。
同时请修改j2ee.dicon里面的连接数据信息。如下是ORACLE的信息
<component name="xaDataSource"
		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
		<property name="driverClassName">
			"oracle.jdbc.driver.OracleDriver"
		</property>
		<property name="URL">
			"jdbc:oracle:thin:@xxx.xxx.x.xxx:1521:xxxx"
		</property>
		<property name="user">"xxxx"</property>
		<property name="password">"xxxx"</property>
		<initMethod name="addProperty">
			<arg>"includeSynonyms"</arg>
			<arg>"true"</arg>
		</initMethod>
	</component>


我用的是ECLIPSE的开发工具。下面是实体BEAN
package co.jp.dao.bean;

public class Comment {

    public static final String TABLE = "INFO";
    
    private int id;
    private String title;
    private String content;

    
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
}



我们可以看到实体BEAN就是一个类对象。只是类里面有一些固定的写法如下
public static final String TABLE = "INFO";
这里是告诉这个类相对应数据表名。接着就是数据库的操作类如下就是了。只是你看到的时候可能会觉得这设计者也太懒了吧。只要一个接口类就OK了。
package co.jp.dao.inf;

import java.util.List;

import co.jp.dao.bean.Comment;

public interface CommentDao {
	  public static final Class<Comment> BEAN = Comment.class;
	  
	  public static final String select_ARGS = "title,content";
	  public static final String getCoutSelect_ARGS = "title";
	  
	  public List<Comment> select(String title,String content);
	  
	  
	  public int getCountSelect(String title);
	    
	  public int update(Comment cd);
	    
	  public int insert(Comment cd);

	  public int delete(Comment cd);
	    
	  public List getAllCds();
	  

}




这里也有相关的固定写法。如下
public static final Class<Comment> BEAN = Comment.class;
public static final String select_ARGS = "title,content";
public static final String getCoutSelect_ARGS = "title";
Class<Comment> BEAN是告诉操作类要操作哪一个实体类。
xxxxx_ARGS是表示xxxxx方法相对的相关SQL参数。也就是当你调用这个方法的时候s2dao会去调用相关的sql文件。我们把相的SQL语句写在SQL文件里面。
看一下这个文件就知道了。如下
CommentDao_getCountSelect.sql文件
select count(id) from INFO where title like /*title*/


CommentDao_select.sql文件
select id,title,content from INFO where title like /*title*/ and content  like  /*content*/

同时你还在dao.dicon文件后面加上如下代码
 <component name="CDao" class="co.jp.dao.inf.CommentDao">
        <aspect>interceptor</aspect>
    </component>

从上面来看的话,你会觉得很像spring是吧。其实他们的思想是一样子的。

就是这么简单。希望对大家有帮助

猜你喜欢

转载自ss0839.iteye.com/blog/1560968