コンテンツタイプ
動画
所要時間
12分
レベル
中級
この動画シリーズでは、InterSystems IRIS® data platform で Hibernate を使用するための基本を学びます。
Hibernate は、組み込みのテクノロジーである JDBC、XEP、Native SDK に加えて、Java アプリケーションを InterSystems IRIS に接続するために使用できる多数のサードパーティ ツールのひとつです。Hibernate を使うと、Java オブジェクトを InterSystems IRIS のリレーショナルテーブルにマッピングできます。すでに Hibernate の使い方をご存じであれば、他の任意のデータベースとまったく同じ方法で InterSystems IRIS と併用できます。Hibernate で接続する際に知っておくべき重要な設定は次のとおりです。
- ドライバークラス: com.intersystems.jdbc.IRISDriver
- 接続 URL: jdbc:IRIS://IP:Port/NAMESPACE (IP、Port、NAMESPACE を自分の値に置き換えます)
- Dialect: org.hibernate.dialect.InterSystemsIRISDialect
以下の動画では次の内容を説明します。
- Hibernate をいつ、なぜ使うのか
- Hibernate を InterSystems IRIS に接続し、Java データクラスにアノテーションを付ける
- Hibernate で InterSystems IRIS に対して保存、取得、クエリを実行する
1. はじめに
2. セットアップとアノテーション
「セットアップとアノテーション」動画で使用したコード
参照 タイムスタンプ コード ドライバークラスの接続プロパティを設定する 1:32 <property name="connection.driver_class">com.intersystems.jdbc.IRISDriver</property>
URL の接続プロパティを設定する 1:49 <property name="connection.url">jdbc:IRIS://[IP]:[Port]/[namespace]?useSSL=false</property>
SQL ダイアレクトを選択する 2:06 <property name="dialect">org.hibernate.dialect.InterSystemsIRISDialect</property>
マッピングクラスを設定して、プロパティと InterSystems IRIS のテーブルへのマッピングを定義する 2:19 <mapping class="demo.Person"/>
<mapping class="demo.Address"/>
Person クラスのプロパティ 2:31 private long id; private String firstname; private String lastname; private String phone; private Address address;
java.persistence
内のライブラリをインポートしてアノテーションを追加する3:02 import javax.persistence.*;
Person クラスをエンティティとしてアノテーションし、demo.person テーブルにマッピングする 3:22 @Entity @Table (name = "demo.person")
phone プロパティに対するアノテーションを追加する 3:39 @Column(name="Phonenumber") public String getPhone() { return phone; }ManyToOne アノテーションを使用して Address 列をマップする 4:00 @ManyToOne @JoinColumn(name = "address") public Address getAddress() { return address; }IDENTITY 列を指定する 4:26 @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
3. 保存、取得、クエリ実行
「保存、取得、クエリ実行」動画で使用したコード
参照 タイムスタンプ コード 必要な Hibernate ライブラリをインポートする 0:21 コード開始: import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.*; //import org.hibernate.query.Query; import org.hibernate.boot.MetadataSources;
コード終了アプリケーションのセットアップのために SessionFactory オブジェクトをインスタンス化する 0:39 SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
SessionFactory オブジェクトからセッションを開く 1:04 Session session = sessionFactory.openSession();
トランザクションを開始する 1:18 session.beginTransaction();
Address と Employee オブジェクトを保存する 1:19 session.save(homeaddress); session.save(employee);
変更をコミットしてセッションを閉じる 1:20 session.getTransaction().commit(); session.close();
ID が 1 の person クラスから従業員を取得する 1:54 long personID = 1; Person newPerson = sessionRead.get(Person.class, personID);
従業員情報を画面に出力する 1:59 コード開始: System.out.printIn(""); System.out.printIn("----Displaying Data for Person with ID of 1----"); System.out.printIn("FirstName: " + newPerson.getFirstname()); System.out.printIn("LastName: " + newPerson.getLastname()); System.out.printIn("Phone: " + newPerson.getPhone()); System.out.printIn("Street: " + newPerson.getAddress().getStreet()); System.out.printIn("City: " + newPerson.getAddress().getCity()); System.out.printIn("State: " + newPerson.getAddress().getState());コード終了
System.out.printIn("Zip: " + newPerson.getAddress().getZip());sessionFactory オブジェクトを閉じる 2:10 sessionFactory.close();
Hibernate Query Language を使用するクエリを設定する 2:29 String hql = "FROM Person";
HQL 文字列を CreateQuery
メソッドに渡してクエリを作成・準備する2:36 TypedQuery<person> people = sessionFind.createQuery(hql, Person.class);
クエリを実行する 2:55 List<Person> results = people.getResultList();
結果をループし、氏名と住所のフィールドを行ごとに出力する 2:58 コード開始: for (listIterator<Person> it = results.listIterator(results.size()0; it.hasPrevious(); ) { Person p = it.previous() System.out.printIn(p.getFirstname() + " " + p.getLastname()); if (p.getAddress() !=null) { System.out.printIn(p.getAddress().getStreet()); System.out.printIn(p.getAddress().getCity() + " " + p.getAddress().GetState() + " " + p.getAddress().getZip()); System.out.printIn(""); } }コード終了これらの動画を「完了」としてマークする。