S2Daoは、Seaser2のDBアクセス機能です。Seaser2のS2Daoを使用したDBアクセスのサンプルなどを掲載しています。
この記事の目次です。
1. S2Daoとは
2. S2Daoの特徴
3. S2Daoを使用したDBアクセスサンプル
S2Daoは、Seaser2のDBアクセス機能です。
S2Daoの特徴です。
S2DaoではXML自体を必要とせず、Javaソースコードにメタデータを記述するだけでO/Rマッピングすることが可能です。
Javaアプリケーションにおいて、データベースとの接続・切断などのやり取りにはJDBCのAPIを使用します。 S2Daoでは、そういったやり取りをS2Dao側で処理するので、開発者はJDBCを意識することなくデータベースとのやり取りが実現可能です。 データベースとの接続・切断といった処理をソースコードに記述する必要がなく、作業量の削減にも繋がります。
JDBCは、Java Database Connectivityの略で、Javaからリレーショナル・データベースに接続するためのインタフェースを提供するJava標準APIです。
S2Daoでは実行するSQL文は外部ファイルとして用意します。 そのSQL文はSQL*PlusなどのSQLを扱うツールで実行して動作することを確かめたSQL文にコメントでJavaとのマッピングを書くことで、 SQLのツールでもそのまま実行が可能なSQL文です。 またS2Daoで読み込んでJavaとマッピングをすることもできます。 SQL文は外部ファイル(SQLファイル)に記述し、SQL文以外Javaのロジックは一切書く必要がないので、 SQLプログラマとJava開発者が完全に分業して作業することが可能となり、開発効率が向上します。 動的なSQL文もJavaのロジックを書かずに開発することが可能です。
Javaに定義するメソッドを命名規則に合わせることで、SQL文の記述が不要で自動的にSQL文を生成させることができます。 ほとんどの場合は自動生成で済みますが、複雑なSQL文を発行したい場合やカスタマイズしたい場合などは、手動で任意のSQL文を記述することもできます。
インターフェースを定義するだけで、アスペクトの適用やSQL文の自動生成が可能になります。
S2Daoを使用したDBアクセスサンプルです。以下の環境を前提となっています。
プログラムの方は以下です。
<html>
<head>
<title>Hello</title>
</head>
<body>
Hello <span id="nameStr">name</span>!!
</body>
</html>
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;
}
}
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);
}
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;
}
}
データベースの設定は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の設定です。
<?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!! 」と表示される。
もっと知識を広げるための参考です。
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インフラセキュリティ
公開サーバーのセキュリティ
SI
ホームページの作り方
スポンサーリンク
関連サイト内検索ツール
zealseedsおよび関連サイト内のページが検索できます。
IPアドレス確認ツール
あなたのグローバルIPアドレスは以下です。
18.188.101.251
HTMLの表示色確認ツール
パスワード生成ツール
文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。
ここに生成されます。
スポンサーリンク
Copyright (C) 2007-2024 zealseeds. All Rights Reserved. Loarding…