共有データベースの作り方
共有データベースを配置するパソコンを決める。
そのパソコンで、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が追加された状態で取り出せる。