11月16日

共有データベースの作り方

共有データベースを配置するパソコンを決める。
そのパソコンで、server.properties を作成する。
作成する場所は、C:\Users\se3\db\hsqldb-2.3.2\hsqldb\data フォルダ。

server.properties

# Hsqldb Server cfg file.
# See the HyperSQL Network Listeners chapter of the HyperSQL User Guide.

# Each server.database.X setting defines a database "catalog".
# I.e., an independent set of data.
# Each server.database.X setting corresponds exactly to the jdbc:hsqldb:*
# JDBC URL you would use if you wanted to get a direct (In-Process)
# Connection to the catalog instead of "serving" it.
server.database.0=file:db0/mydatabase
server.dbname.0=mydatabase

# I suggest that, for every file: catalog you define, you add the
# connection property "ifexists=true" after the database instance
# is created (which happens simply by starting the Server one time).
# Just append ";ifexists=true" to the file: URL, like so:
# server.database.0=file:db0/db0;ifexists=true

# server.dbname.0 defaults to "" (i.e. server.dbname.n for n==0), but
# the catalog definition n will be entirely ignored for n > 0 if you do not
# set server.dbname.n.  I.e. dbname setting is required for n > 0, though it
# may be set to blank (e.g. "server.dbname.3=")

C:\Users\se3\db\hsqldb-2.3.2\hsqldb\bin にある、runServer.bat をダブルクリックして起動する。

コマンドプロンプトに次の出力があれば、データベースの作成に成功している。

C:\Users\se3\db\hsqldb-2.3.2\hsqldb\bin>cd ..\data
[Server@24d46ca6]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@24d46ca6]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@24d46ca6]: Startup sequence initiated from main() method
[Server@24d46ca6]: Loaded properties from [C:\Users\se3\db\hsqldb-2.3.2\hsqldb\data\server.properties]
[Server@24d46ca6]: Initiating startup sequence...
[Server@24d46ca6]: Server socket opened successfully in 15 ms.
[Server@24d46ca6]: Database [index=0, id=0, db=file:db0/mydatabase, alias=mydata
base] opened sucessfully in 484 ms.
[Server@24d46ca6]: Startup sequence completed in 499 ms.
[Server@24d46ca6]: 2015-11-16 11:12:14.474 HSQLDB server 2.3.2 is online on port 9001
[Server@24d46ca6]: To close normally, connect and execute SHUTDOWN SQL
[Server@24d46ca6]: From command line, use [Ctrl]+[C] to abort abruptly

C:\Users\se3\db\hsqldb-2.3.2\hsqldb\bin にある、runManager.bat をダブルクリックして起動する。
接続のために以下の設定をして、OKすると接続できる。

 Type : HSQL Database Engine Server
 URL  : jdbc:hsqldb:hsql://localhost/mydatabase

他のパソコンから接続するには、パソコンのIPアドレスを調べる必要がある。
コマンドプロンプトを起動して ipconfig コマンドを実行して、IPアドレスを調べる。

C:\Users\se3>ipconfig

Windows IP 構成


Wireless LAN adapter ワイヤレス ネットワーク接続:

   メディアの状態. . . . . . . . . . : メディアは接続されていません
   接続固有の DNS サフィックス . . . :

イーサネット アダプター ローカル エリア接続 2:

   接続固有の DNS サフィックス . . . :
   IPv4 アドレス . . . . . . . . . . : 172.25.20.23
   サブネット マスク . . . . . . . . : 255.255.0.0
   デフォルト ゲートウェイ . . . . . : 172.25.1.254

イーサネット アダプター ローカル エリア接続 3:

   接続固有の DNS サフィックス . . . :
   IPv4 アドレス . . . . . . . . . . : 192.168.56.1
   サブネット マスク . . . . . . . . : 255.255.255.0
   デフォルト ゲートウェイ . . . . . :

他のパソコンから接続する場合は、localhost の代わりにそのパソコンのIPアドレスを指定する。
C:\Users\se3\db\hsqldb-2.3.2\hsqldb\bin にある、runManager.bat をダブルクリックして起動する。
接続のために以下の設定をして、OKすると接続できる。

 Type : HSQL Database Engine Server
 URL  : jdbc:hsqldb:hsql://192.168.56.1/mydatabase

エンティティを1対多の関係にする

Onwerが複数のChildを持つ場合は、以下のようにエンティティを作成する。

Owner.java

@Entity
public class Onwer {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @NutNull
    public long id;

    @OneToMany(cascade=CascadeType.ALL)
    @Column(nullable = false)
    private List<Child> children;

    // gettere/setter を用意
}

Child.java

@Entity
public class Child {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @NutNull
    public long id;

    @ManyToOne
    @Column(nullable = false)
    private Owner owner;

    // getter/setter を用意
}

Onwerに複数のChildを追加した状態でエンティティを永続化すると、そのOwnerをDBから取り出したときは、追加した複数のChildが追加された状態で取り出せる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です