Torque/複数のDBで同時に利用する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
アプリケーションを作成していると、一つのデータベースだけ...
Torqueで複数のデータベースに接続する方法を調べていました...
#contents
**環境 [#ka8df3c8]
複数のデータベースとして
|''DB''|''Table''|
|firstdb|person1|
|seconddb|person2|
を作成して、Torque経由で二つのテーブルからデータを取得し...
その他の環境は
|DBサーバ|Redhat Linux 8.0(2.4.20-28.8)|
|~|IP:192.168.10.3|
|DB|PostgreSQL 7.2.4|
|クライアント(Torque実行環境)|WindowsXP|
|JDK|1.4.2_03-b02|
|Torque-gen|3.1|
|Torque|3.1|
|JDBC|postgresql-jdbc-7.2.4-5.80のRPMに付属していたもの|
|~|jdbc7.2dev-1.2.jar|
|Build Tool|Apache Ant version 1.6.0 compiled on December...
てな感じです。
**準備 [#cd193984]
*** firstdb作成 [#gff0c379]
[root@kino root]# su - postgres
-bash-2.05b$ createdb firstdb
CREATE DATABASE
-bash-2.05b$ psql firstdb
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
firstdb=# CREATE TABLE person1 (
firstdb(# id INTEGER NOT NULL,
firstdb(# name VARCHAR(255),
firstdb(# PRIMARY KEY(id)
firstdb(# );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit...
CREATE
firstdb=# INSERT INTO person1 (id, name) VALUES (1, 'Joh...
INSERT 18937 1
firstdb=# select * from person1
firstdb-# ;
id | name
----+------
1 | John
(1 row)
firstdb=#
***seconddb作成 [#rfb985b1]
-bash-2.05b$ createdb seconddb
CREATE DATABASE
-bash-2.05b$ psql seconddb
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
seconddb=# CREATE TABLE person2 (
seconddb(# id INTEGER NOT NULL,
seconddb(# name VARCHAR(255),
seconddb(# PRIMARY KEY(id)
seconddb(# );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit...
CREATE
seconddb=# INSERT INTO person2 (id, name) VALUES (1, 'Bo...
INSERT 18942 1
seconddb=# select * from person2;
id | name
----+------
1 | Bob
(1 row)
seconddb=#
**Torque-gen [#m23d5f81]
***firstdb用のソース作成 [#y3961a37]
build.propertiesを以下のように修正しました。
#ref(build.properties.firstdb)
torque.project = firstdb
torque.targetPackage = kino.torque.firstdb
torque.database.createUrl = jdbc:postgresql://192.168.10...
torque.database.buildUrl = jdbc:postgresql://192.168.10....
torque.database.url = jdbc:postgresql://192.168.10.3:543...
torque.database.driver = org.postgresql.Driver
torque.database.user = postgres
torque.database.password =
torque.database.host = 192.168.10.3
そして、antを実行しました。
ant -f build-torque.xml jdbc
生成されたschema.xmlをfirstdb-schema.xmlにリネームして、
ant -f build-torque.xml
を実行しました。
#ref(firstdb-schema.xml)
以上でfirstdbのソースコード生成は完了です。
***seconddb用のソース作成 [#h4dc196e]
build.propertiesを以下のように修正しました。
#ref(build.properties.seconddb)
torque.project = seconddb
torque.targetPackage = kino.torque.seconddb
torque.database.createUrl = jdbc:postgresql://192.168.10...
torque.database.buildUrl = jdbc:postgresql://192.168.10....
torque.database.url = jdbc:postgresql://192.168.10.3:543...
torque.database.driver = org.postgresql.Driver
torque.database.user = postgres
torque.database.password =
torque.database.host = 192.168.10.3
そして、antを実行しました。
ant -f build-torque.xml jdbc
生成されたschema.xmlをseconddb-schema.xmlにリネームして、
ant -f build-torque.xml
を実行しました。
#ref(seconddb-schema.xml)
以上でseconddbのソースコード生成は完了です。
最終的にTorque用のソースコードは以下になりました。
#ref(source.tar.gz)
**Torque [#f24f9543]
いよいよ先に生成したソースコードを用いてデータベースにア...
***Torque.propertiesの修正 [#sbd2ec2f]
Torque.propertiesは以下のように修正しました。基本的にほと...
torque.dsfactory.firstdb.factory=org.apache.torque.dsfac...
torque.dsfactory.firstdb.connection.url = jdbc:postgresq...
torque.dsfactory.firstdb.connection.user = postgres
torque.dsfactory.firstdb.connection.password =
torque.dsfactory.seconddb.factory=org.apache.torque.dsfa...
torque.dsfactory.seconddb.connection.driver = org.postgr...
torque.dsfactory.seconddb.connection.url = jdbc:postgres...
torque.dsfactory.seconddb.connection.user = postgres
torque.dsfactory.seconddb.connection.password =
#ref(Torque.properties)
***build.xmlの作成 [#bdad0f4a]
Javaのクラスをコンパイルしてテストプログラムを実行するた...
#ref(build.xml)~
#ref(SampleMain.java)
***いよいよ実行 [#ud27a921]
いよいよ実行です。
ant java
としましたが、エラーになってしまいました。
#ref(error.log)
エラー内容ですが、みてみると
java.lang.NullPointerException: There was no DataSourceF...
となっていて、デフォルト値の設定がないよっておこってるみ...
***試しに [#s333ab9f]
試しに
torque.database.default=firstdb
を追記したところ、firstdbにはつながるけどもseconddbにはつ...
java.sql.SQLException: ERROR: Relation "person2" does no...
逆に
torque.database.default=seconddb
を追記したところ、seconddbにはつながるけどもfirstdbにはつ...
java.sql.SQLException: ERROR: Relation "person1" does no...
という状況でした。デフォルト値の指定をすると、データの取...
**解決! [#y06b2eeb]
解決しました。~
xxxx-schema.xmlのdatabase要素にはname属性を記述可能なので...
ant -f build-torque.xml jdbc
で生成されたschema.xmlには、なぜかname属性が省略されてい...
ant -f build-torque.xml
で生成されるソースコード(たとえばBasePerson1Peer.java)に
public static final String DATABASE_NAME = "default";
と"default"と書かれてしまうみたいです。ソースコードにdefa...
とするとxxxx-schema.xmlのdatabase要素のname属性で指定した...
***追加手順 [#f7e03ce5]
何はともあれ、解決策が見つかりましたので、追加の手順です...
torque.dsfactory.firstdb.factory
torque.dsfactory.seconddb.factory
などと書いたので、xxxx-schema.xmlの<database>をそれぞれ
<database name="firstdb">
<database name="seconddb">
に変更し、antでソースコードを再作成しました。((確かにpubl...
***再度実行 [#ac960118]
antでもう一度サンプルプログラムを実行したところ、ようやく...
#ref(実行結果.txt)
----
この記事は
#vote(おもしろかった[25],そうでもない[0])
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
アプリケーションを作成していると、一つのデータベースだけ...
Torqueで複数のデータベースに接続する方法を調べていました...
#contents
**環境 [#ka8df3c8]
複数のデータベースとして
|''DB''|''Table''|
|firstdb|person1|
|seconddb|person2|
を作成して、Torque経由で二つのテーブルからデータを取得し...
その他の環境は
|DBサーバ|Redhat Linux 8.0(2.4.20-28.8)|
|~|IP:192.168.10.3|
|DB|PostgreSQL 7.2.4|
|クライアント(Torque実行環境)|WindowsXP|
|JDK|1.4.2_03-b02|
|Torque-gen|3.1|
|Torque|3.1|
|JDBC|postgresql-jdbc-7.2.4-5.80のRPMに付属していたもの|
|~|jdbc7.2dev-1.2.jar|
|Build Tool|Apache Ant version 1.6.0 compiled on December...
てな感じです。
**準備 [#cd193984]
*** firstdb作成 [#gff0c379]
[root@kino root]# su - postgres
-bash-2.05b$ createdb firstdb
CREATE DATABASE
-bash-2.05b$ psql firstdb
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
firstdb=# CREATE TABLE person1 (
firstdb(# id INTEGER NOT NULL,
firstdb(# name VARCHAR(255),
firstdb(# PRIMARY KEY(id)
firstdb(# );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit...
CREATE
firstdb=# INSERT INTO person1 (id, name) VALUES (1, 'Joh...
INSERT 18937 1
firstdb=# select * from person1
firstdb-# ;
id | name
----+------
1 | John
(1 row)
firstdb=#
***seconddb作成 [#rfb985b1]
-bash-2.05b$ createdb seconddb
CREATE DATABASE
-bash-2.05b$ psql seconddb
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
seconddb=# CREATE TABLE person2 (
seconddb(# id INTEGER NOT NULL,
seconddb(# name VARCHAR(255),
seconddb(# PRIMARY KEY(id)
seconddb(# );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit...
CREATE
seconddb=# INSERT INTO person2 (id, name) VALUES (1, 'Bo...
INSERT 18942 1
seconddb=# select * from person2;
id | name
----+------
1 | Bob
(1 row)
seconddb=#
**Torque-gen [#m23d5f81]
***firstdb用のソース作成 [#y3961a37]
build.propertiesを以下のように修正しました。
#ref(build.properties.firstdb)
torque.project = firstdb
torque.targetPackage = kino.torque.firstdb
torque.database.createUrl = jdbc:postgresql://192.168.10...
torque.database.buildUrl = jdbc:postgresql://192.168.10....
torque.database.url = jdbc:postgresql://192.168.10.3:543...
torque.database.driver = org.postgresql.Driver
torque.database.user = postgres
torque.database.password =
torque.database.host = 192.168.10.3
そして、antを実行しました。
ant -f build-torque.xml jdbc
生成されたschema.xmlをfirstdb-schema.xmlにリネームして、
ant -f build-torque.xml
を実行しました。
#ref(firstdb-schema.xml)
以上でfirstdbのソースコード生成は完了です。
***seconddb用のソース作成 [#h4dc196e]
build.propertiesを以下のように修正しました。
#ref(build.properties.seconddb)
torque.project = seconddb
torque.targetPackage = kino.torque.seconddb
torque.database.createUrl = jdbc:postgresql://192.168.10...
torque.database.buildUrl = jdbc:postgresql://192.168.10....
torque.database.url = jdbc:postgresql://192.168.10.3:543...
torque.database.driver = org.postgresql.Driver
torque.database.user = postgres
torque.database.password =
torque.database.host = 192.168.10.3
そして、antを実行しました。
ant -f build-torque.xml jdbc
生成されたschema.xmlをseconddb-schema.xmlにリネームして、
ant -f build-torque.xml
を実行しました。
#ref(seconddb-schema.xml)
以上でseconddbのソースコード生成は完了です。
最終的にTorque用のソースコードは以下になりました。
#ref(source.tar.gz)
**Torque [#f24f9543]
いよいよ先に生成したソースコードを用いてデータベースにア...
***Torque.propertiesの修正 [#sbd2ec2f]
Torque.propertiesは以下のように修正しました。基本的にほと...
torque.dsfactory.firstdb.factory=org.apache.torque.dsfac...
torque.dsfactory.firstdb.connection.url = jdbc:postgresq...
torque.dsfactory.firstdb.connection.user = postgres
torque.dsfactory.firstdb.connection.password =
torque.dsfactory.seconddb.factory=org.apache.torque.dsfa...
torque.dsfactory.seconddb.connection.driver = org.postgr...
torque.dsfactory.seconddb.connection.url = jdbc:postgres...
torque.dsfactory.seconddb.connection.user = postgres
torque.dsfactory.seconddb.connection.password =
#ref(Torque.properties)
***build.xmlの作成 [#bdad0f4a]
Javaのクラスをコンパイルしてテストプログラムを実行するた...
#ref(build.xml)~
#ref(SampleMain.java)
***いよいよ実行 [#ud27a921]
いよいよ実行です。
ant java
としましたが、エラーになってしまいました。
#ref(error.log)
エラー内容ですが、みてみると
java.lang.NullPointerException: There was no DataSourceF...
となっていて、デフォルト値の設定がないよっておこってるみ...
***試しに [#s333ab9f]
試しに
torque.database.default=firstdb
を追記したところ、firstdbにはつながるけどもseconddbにはつ...
java.sql.SQLException: ERROR: Relation "person2" does no...
逆に
torque.database.default=seconddb
を追記したところ、seconddbにはつながるけどもfirstdbにはつ...
java.sql.SQLException: ERROR: Relation "person1" does no...
という状況でした。デフォルト値の指定をすると、データの取...
**解決! [#y06b2eeb]
解決しました。~
xxxx-schema.xmlのdatabase要素にはname属性を記述可能なので...
ant -f build-torque.xml jdbc
で生成されたschema.xmlには、なぜかname属性が省略されてい...
ant -f build-torque.xml
で生成されるソースコード(たとえばBasePerson1Peer.java)に
public static final String DATABASE_NAME = "default";
と"default"と書かれてしまうみたいです。ソースコードにdefa...
とするとxxxx-schema.xmlのdatabase要素のname属性で指定した...
***追加手順 [#f7e03ce5]
何はともあれ、解決策が見つかりましたので、追加の手順です...
torque.dsfactory.firstdb.factory
torque.dsfactory.seconddb.factory
などと書いたので、xxxx-schema.xmlの<database>をそれぞれ
<database name="firstdb">
<database name="seconddb">
に変更し、antでソースコードを再作成しました。((確かにpubl...
***再度実行 [#ac960118]
antでもう一度サンプルプログラムを実行したところ、ようやく...
#ref(実行結果.txt)
----
この記事は
#vote(おもしろかった[25],そうでもない[0])
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: