トップ ライブラリ/Framework/CMS Seasar2 S2Dao

S2Daoとは―Seasar2のDBアクセス

S2Daoは、Seaser2のDBアクセス機能です。Seaser2のS2Daoを使用したDBアクセスのサンプルなどを掲載しています。

▲記事トップへ

目次

この記事の目次です。

1. S2Daoとは
2. S2Daoの特徴
3. S2Daoを使用したDBアクセスサンプル

もっと知識を広げるための参考
更新履歴

1. S2Daoとは

S2Daoは、Seaser2のDBアクセス機能です。

2. S2Daoの特徴

S2Daoの特徴です。

XMLを使用しないO/Rマッピング機能

S2DaoではXML自体を必要とせず、Javaソースコードにメタデータを記述するだけでO/Rマッピングすることが可能です。

JDBCの知識が不要

Javaアプリケーションにおいて、データベースとの接続・切断などのやり取りにはJDBCのAPIを使用します。 S2Daoでは、そういったやり取りをS2Dao側で処理するので、開発者はJDBCを意識することなくデータベースとのやり取りが実現可能です。 データベースとの接続・切断といった処理をソースコードに記述する必要がなく、作業量の削減にも繋がります。

JDBCとは

JDBCは、Java Database Connectivityの略で、Javaからリレーショナル・データベースに接続するためのインタフェースを提供するJava標準APIです。

詳細

SQLプログラマとJavaプログラマの分業した作業が可能

S2Daoでは実行するSQL文は外部ファイルとして用意します。 そのSQL文はSQL*PlusなどのSQLを扱うツールで実行して動作することを確かめたSQL文にコメントでJavaとのマッピングを書くことで、 SQLのツールでもそのまま実行が可能なSQL文です。 またS2Daoで読み込んでJavaとマッピングをすることもできます。 SQL文は外部ファイル(SQLファイル)に記述し、SQL文以外Javaのロジックは一切書く必要がないので、 SQLプログラマとJava開発者が完全に分業して作業することが可能となり、開発効率が向上します。 動的なSQL文もJavaのロジックを書かずに開発することが可能です。

SQL文の自動生成

Javaに定義するメソッドを命名規則に合わせることで、SQL文の記述が不要で自動的にSQL文を生成させることができます。 ほとんどの場合は自動生成で済みますが、複雑なSQL文を発行したい場合やカスタマイズしたい場合などは、手動で任意のSQL文を記述することもできます。

インターフェースと実装の分離

インターフェースを定義するだけで、アスペクトの適用やSQL文の自動生成が可能になります。

3. S2Daoを使用したDBアクセスサンプル

S2Daoを使用したDBアクセスサンプルです。以下の環境を前提となっています。

データベース

  1. MySQLにログインする。
    # mysql -u root -ppassword
  2. testデータベース作成。
    mysql> create database test;
  3. sampleテーブル作成。
    mysql> use test;
    mysql> create table sample(mid CHAR(5) PRIMARY KEY, name VARCHAR(20));
  4. データ挿入。
    mysql> insert into sample values ('00001', 'test');
    mysql> quit

プログラム

プログラムの方は以下です。

ページ(hello.html)

<html>
<head>
<title>Hello</title>
</head>
<body>
Hello <span id="nameStr">name</span>!!
</body>
</html>

ページクラス(HelloPage.java)

package hello.web;
import hello.dao.SampleDao;
import hello.entity.Sample;
public class HelloPage {
    public String nameStr;
    private SampleDao sampleDao;
    public SampleDao getSampleDao() {
        return this.sampleDao;
    }
    public void setSampleDao(SampleDao sampleDao) {
        this.sampleDao = sampleDao;
    }
    public Class<?> initialize() {
        Sample sample = sampleDao.selectByMid("00001");
        nameStr = sample.getName();
        return null;
    }
    public Class<?> prerender() {
        return null;
    }
}

Dao(SampleDao.java)

package hello.dao;
import hello.entity.Sample;
import org.seasar.dao.annotation.tiger.Arguments;
import org.seasar.dao.annotation.tiger.S2Dao;
@S2Dao(bean=Sample.class)
public interface SampleDao {
    @Arguments({"mid"})
    public Sample selectByMid(String mid);
}

entity(Sample.java)

package hello.entity;
import org.seasar.dao.annotation.tiger.Bean;
import org.seasar.dao.annotation.tiger.Id;
import org.seasar.dao.annotation.tiger.IdType;
@Bean(table="sample")
public class Sample {
    @Id(IdType.IDENTITY)
    private String mid;
    private String name;
    public String getMid() {
        return mid;
    }
    public void setMid(String mid) {
        this.mid = mid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Seasar2の設定(jdbc.dicon)

データベースの設定はjdbc.diconで行います。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components namespace="jdbc">
<include path="jta.dicon"/>
<include path="jdbc-extension.dicon"/>
<component
class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
<component
class="org.seasar.extension.jdbc.impl.ConfigurableStatementFactory">
<arg>
<component
class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
</arg>
<property name="fetchSize">100</property>
</component>
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">"com.mysql.jdbc.Driver"</property>
<property name="URL">"jdbc:mysql://localhost:3306/test"</property>
<property name="user">"ユーザ名"</property>
<property name="password">"パスワード"</property>
</component>
<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>
<property name="maxPoolSize">10</property>
<property name="allowLocalTx">true</property>
<destroyMethod name="close"/>
</component>
<component name="dataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl" />
</components>

Tomcatの設定(server.xml)

Tomcatの設定です。

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">

  <!--: 省略-->

  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8" />

    <Connector port="8009"
               protocol="AJP/1.3"
               redirectPort="8443"
               URIEncoding="UTF-8" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false"
            xmlValidation="false" xmlNamespaceAware="false">
        <Context path="/test"
                 docBase="<tomcatホームディレクトリ>/webapps/test"
                 reloadable="true">
        </Context>
      </Host>
    </Engine>
  </Service>
</Server>

アプリの構成

自動生成された<Eclipseプロジェクト配下>src/main/webapp配下を <tomcatホームディレクトリ>/webapps/test配下にコピーする。

□tomcatホームディレクトリ
├─conf
|      server.xml
└─webapps
    └─test
        │  index.jsp
        ├─view
        │  │  hello.html
        │  └─error
        │          error.html
        └─WEB-INF
            │  faces-config.xml
            │  web.xml
            ├─classes
            │  │  app.dicon
            │  │  appMessages.properties
            │  │  appMessages_ja.properties
            │  │  app_aop.dicon
            │  │  convention.dicon
            │  │  creator.dicon
            │  │  customizer.dicon
            │  │  env.txt
            │  │  env_ut.txt
            │  │  hello.html
            │  │  jdbc.dicon
            │  │  log4j.properties
            │  │  s2container.dicon
            │  │  teedaCustomize.dicon
            │  │  teedaErrorPage.dicon
            │  ├─error
            │  │      error.html
            │  └─hello
            │      ├─converter
            │      ├─dao
            │      │      SampleDao.class
            │      ├─dto
            │      ├─dxo
            │      ├─entity
            │      │      Sample.class
            │      ├─helper
            │      ├─logic
            │      ├─service
            │      ├─validator
            │      └─web
            │          │  HelloPage.class
            │          └─error
            │                  ErrorPage.class
            └─lib
                │  aopalliance-1.0.jar
                │  commons-collections-3.1.jar
                │  commons-el-1.0.jar
                │  commons-fileupload-1.2.jar
                │  commons-io-1.3.2.jar
                │  commons-logging-1.1.jar
                │  geronimo-jta_1.1_spec-1.0.jar
                │  h2-1.0.69.jar
                │  javassist-3.4.ga.jar
                │  jstl-1.1.2.jar
                │  log4j-1.2.13.jar
                │  mysql-connector-java-5.0.8-bin.jar
                │  ognl-2.6.9-patch-20090427.jar
                │  poi-3.0-FINAL.jar
                │  s2-dao-1.0.51.jar
                │  s2-dao-tiger-1.0.51.jar
                │  s2-extension-2.4.43.jar
                │  s2-framework-2.4.43.jar
                │  s2-tiger-2.4.43.jar
                │  teeda-ajax-1.0.13-sp10.jar
                │  teeda-core-1.0.13-sp10.jar
                │  teeda-extension-1.0.13-sp10.jar
                │  teeda-tiger-1.0.13-sp10.jar
                │  xercesImpl-2.6.2.jar
                │  xmlParserAPIs-2.6.2.jar
                └─sources
                        commons-collections-3.1-sources.jar
                        commons-el-1.0-sources.jar
                        commons-fileupload-1.2-sources.jar
                        commons-io-1.3.2-sources.jar
                        commons-logging-1.1-sources.jar
                        log4j-1.2.13-sources.jar
                        s2-dao-1.0.51-sources.jar
                        s2-dao-tiger-1.0.51-sources.jar
                        s2-extension-2.4.43-sources.jar
                        s2-framework-2.4.43-sources.jar
                        s2-tiger-2.4.43-sources.jar
                        teeda-ajax-1.0.13-sp10-sources.jar
                        teeda-core-1.0.13-sp10-sources.jar
                        teeda-extension-1.0.13-sp10-sources.jar
                        teeda-tiger-1.0.13-sp10-sources.jar

動作確認

tomcatを起動し、ブラウザより「http://<tomcatサーバのホスト>:8080/test/view/hello.html」へアクセスすると 「Hello test!! 」と表示される。

もっと知識を広げるための参考

もっと知識を広げるための参考です。

Seaser2

Seasar2は、JavaのWebアプリケーション開発フレームワークで日本のオープンソースプロジェクトの1つです。 DI(Dependecy Injection:依存性の注入)や命名規則による簡単かされたプログラミングなどの特徴があります。 ただ2016年9月26日をもってサポート終了となっています。

詳細

更新履歴

更新履歴になります。

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Burp /Eclipse /Fiddler /gcc /gdb /Git /g++ /JDK /JMeter /JUnit /Teraterm /ZAP

技術・仕様
Ajax /CORBA /Jakarta EE(旧称J2EE、Java EE) /JNI

ライブラリ/Framework/CMS
bootstrap /jQuery /FuelPHP /Lucene /MyBatis /Seasar2 /Spring /Struts /WordPress

Web API
Google Maps

ITインフラOSとミドルウェア
Linux /Windows /シェル
ActiveMQ /Tomcat /MariaDB /MySQL /Nagios /Redis /Solr

ITインフラサーバー
公開Webサーバー

ITインフラネットワーク
プログラミング /構築

ITインフラセキュリティ
公開サーバーのセキュリティ

PC製品
ZOTAC

SI
ホームページの作り方

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

13.58.151.231

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク