SQL

HowTo

コンポーネント レポジトリ

Sandboxコンポーネント

日本語訳 (Translations)

オリジナル

Commons SQLとは?

Commons SQL は、データベースに作用するコンポーネントであり、DDL(Data Definition Language)を生成します。Turbine及びTorqueプロジェクトでの経験とアイディアが元となっています。(訳注:先ず其の前に、Commons SQL自身、DB COMMONS プロジェクトに移行する予定になっているかと思います。また、HOWTO関連のドキュメントは全てTorque用です)

Commons SQLには、データベース・テーブル・カラム等といったリレーショナルデータベーススキーマを表現する、シンプルなセットのBeansが含まれております。これらのBeansは、DatabaseReaderクラスとDatabaseWriterクラスを通じ、Commons Betwixtを使う事で、XMLから読み込んだりXMLへ書き込んだりすることが可能です。

こちらに、XMLドキュメントのサンプルがあります。

リレーショナルモデルさえ一旦作ってしまえば、Bean・XMLどちらを通じてでも、DDL生成やデータベースのdrop(削除)をあらゆる物理データベースに対してでも行うことが出来ます。 builderパッケージには、お望みのデータベース用のDDLを生成するクラス群が含まれています。

そして、SQL Beans は、VelocityJellyといったコード生成用ツールを使うことで、異なるデータベース用のSQL DDLやHTMLドキュメント、各々のテーブルに対するJava Beans、そしてOJBレポジトリファイル等々を作成することが出来ます。


Ant・MavenでのCommons SQLの使用

物理データベース用のDDLを生成するAntタスクもあります。以下、使用例です。

  <taskdef
    name="ddl"
    classname="org.apache.commons.sql.task.DDLTask">
      <classpath refid="some.classpath"/>
  </taskdef>    
		
  <ddl
    xmlFile="src/conf/myschema.xml" 
    targetDatabase="oracle"
    output="target/myschema-oracle.sql"/>

Commons SQL を、BeansあるいはOJBファイルを論理的なリレーショナルスキーマから作成する形で、各プロジェクトのMavenプラグインの生成にもつかえることが望まれます。


Using DynaBeans to access and change data in a database

DynaBeansを通じて、クエリをかけたりデータのinsert,update,deleteを行うシンプルなAPIがあります。これは、本質的には、commons-sql model beans (Database, Table, Column) を DanaClass, DynaBean, DynaPropertyインスタンスにバインドします。

ですから以下のように

  // lets parser the model from XML
  DatabaseReader reader = new DatabaseReader();
  Database model = (Database) reader.parse( "mymodel.xml" );
		
  // JDBC connection pool, maybe using DBCP and Pool from commons
  DataSource source = ...;
		
  // now lets add some data
  DynaSql dynaSql = new DynaSql(source, model);
		
  DynaBean author = dynaSql.newInstance( "author" );
  author.set( "name", "James" );
  author.set( "whatever", new Integer(1234));
  dynaSql.insert(author);

あるいは任意のクエリをデータベースに行うには、

  // perform a query with no arguments		
  Iterator iter = dynaSql.query( "select * from book" );
  while (iter.hasNext()) {
    DynaBean book = (DynaBean) iter.next();
    String title = book.get("title");			
    ...
  }
		
  // perform a query with arguments
  List params = new ArrayList();
  params.add("Some title");
	
  Iterator iter = dynaSql.query( "select * from book where title = ?", params );
  while (iter.hasNext()) {
    DynaBean book = (DynaBean) iter.next();
    String title = book.get("title");			
    ...
  }

これによって、シンプル且つ単純に何かを行いたい場合や動的にテーブルを作成したい場合、あるいは任意のデータベーススキーマを実行時に扱いたい場合など、手っ取り早く行うことが出来るようになります。シンプルな一括ロード用プログラムを書いたり、SQLデータを包括的に扱う場合にもまた有効でしょう。

パーシスタント・スキーマがより良く定義されていたとしても、OJBやTorqueといったツールがより適切な場合もあります。



Tetsuya Kitahata
Translated into Japanese by Tetsuya Kitahata , powered by Terra-International, Inc.
Original English Page would be found from HERE     --    ApacheNews    ASF 繝励Ο繧ク繧ァ繧ッ繝井ク隕ァ
Terra-International, Inc. -- 繝繝ゥス・繧、繝ウ繧ソ繝シ繝翫す繝ァ繝翫Ν