このページでは、SimpleORM4Jの使用方法をご説明していきます。
eclipseで以下の簡単なアプリケーションを作成していきます。
eclipseを使用して、MySQLに接続するコンソールアプリケーションを作成していきます。
MySQLにはこのアプリケーションで検索をする架空の「学部マスタ」(mst_department)データを登録しています。
eclipseを起動して、「Javaプロジェクト」を作成します。
今回は、プロジェクト名は「So4jConsoleProject」とします
MySQLのJDBCドライバ(Connector/J)をダウンロードします。
https://dev.mysql.com/downloads/connector/j/
GitHubリポジトリの「SimpleORM4J」のページからsimpleorm4j.jarをダウンロードします。
https://github.com/shigeru-kuratani/SimpleORM4J
ダウンロードした「Connector/J」と「simpleorm4j.jar]を、プロジェクト内に作成した「lib」フォルダに配置します。
「lib」フォルダに配置したjarファイルをビルドパスに追加します。
設定ファイル(so4j.xml)をsrcフォルダに追加します。
コンテナのコネクションプールを使用せずに直接JDBCを使用してデータベースに接続処理を実行する場合は、 設定ファイル(so4j.xml)に以下の情報を定義します。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>SimpleORM4J設定ファイル</comment> <entry key="url">jdbc:mysql://localhost:3306/SimpleORM4J</entry> <entry key="user">SimpleORM4J</entry> <entry key="password">SimpleORM4J</entry> </properties>
サンプルプログラムでは、学部テーブル(mst_department)から「学校ID=2」「学部名=文学部」のデータを検索して、コンソールに表示してみます。
※ コンソール表示の際に、表形式で表示する為に「helper.EntityResultViewHelper.java」を使用しています。
■ entity.Department.java package entity; import java.util.Date; import net.skuratani.simpleorm4j.annotation.Column; import net.skuratani.simpleorm4j.annotation.Entity; import net.skuratani.simpleorm4j.annotation.GenerateValue; import net.skuratani.simpleorm4j.annotation.Id; import net.skuratani.simpleorm4j.annotation.Table; import net.skuratani.simpleorm4j.type.GenerationType; /** * 学部エンティティ */ @Entity @Table(name="mst_department") public class Department { @Id @GenerateValue(strategy=GenerationType.AUTO) @Column(name="id") private int id; @Column(name="name") private String name; @Column(name="school_id") private String schoolId; @Column(name="delete_flag") private String deleteFlag; @Column(name="regist_date") private Date registDate; @Column(name="update_date") private Date updateDate; // getter/setter public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSchoolId() { return schoolId; } public void setSchoolId(String schoolId) { this.schoolId = schoolId; } public String getDeleteFlag() { return deleteFlag; } public void setDeleteFlag(String deleteFlag) { this.deleteFlag = deleteFlag; } public Date getRegistDate() { return registDate; } public void setRegistDate(Date registDate) { this.registDate = registDate; } public Date getUpdateDate() { return updateDate; } public void setUpdateDate(Date updateDate) { this.updateDate = updateDate; } }
■ exec.Sample.java package exec; import java.util.List; import entity.Department; import helper.EntityResultViewHelper; import net.skuratani.simpleorm4j.expression.Expression; import net.skuratani.simpleorm4j.persistence.Criteria; import net.skuratani.simpleorm4j.persistence.EntityManager; import net.skuratani.simpleorm4j.persistence.EntityManagerFactory; import net.skuratani.simpleorm4j.persistence.Query; /** * SimpleORM4J コンソールアプリケーションサンプル */ public class Sample { /** * main. * @param args */ public static void main(String[] args) { new Sample().execute(); } /** * execute. */ private void execute() { try { EntityManager em = EntityManagerFactory.createEntityManager(); Criteria criteria = em.getCriteria(); criteria.select(Department.class) .from(Department.class) .where(Expression.equal(Department.class.getDeclaredField("schoolId"), 2), Expression.equal(Department.class.getDeclaredField("name"), "文学部")); Query query = em.createQuery(criteria); List<Department> resultList = (List<Department>) query.getResultList(); System.out.println(EntityResultViewHelper.generateTableView(resultList)); } catch (Exception e) { e.printStackTrace(); } } }
サンプルプログラムの実行結果は以下のようになります。
■ 実行結果 id name schoolId deleteFlag registDate updateDate --------------------------------------------------------------------------- 7 文学部 2 0 2017-01-07 2017-01-07 10:10:10.0
次は、Glassfishで作成したデータベースコネクションプール(DBCP)を利用して、データベースに接続するWEBアプリケーションを作成していきます。
接続するデータベースはOracle Databaseを使用します。
eclipseを起動して、「動的WEBプロジェクト」を作成します。
今回は、プロジェクト名は「So4jWEBProject1」とします
OracleのJDBCドライバ(ojdbc)をダウンロードします。
https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
GitHubリポジトリの「SimpleORM4J」のページからsimpleorm4j.jarをダウンロードします。
https://github.com/shigeru-kuratani/SimpleORM4J
ダウンロードした「ojdbcX.jar」と「simpleorm4j.jar]を、プロジェクト内に作成した「WEB-INF/lib」フォルダに配置します。
Glassfishの管理コンソールで、データベースへの「JDBC Connection Pools」を作成します。
※ 今回はOracle Databaseへのコネクションプールを設定しています。
作成したコネクションプールを使用してJDBCリソースを作成します。
今回はリソース名は「jdbc/so4j」とします。
設定ファイル(so4j.xml)をsrcフォルダに追加します。
設定ファイルの内容は、Glassfishに作成したコネクションプールを使用する為に、データソース名を
定義します。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>SimpleORM4J設定ファイル</comment> <entry key="dsn">jdbc/so4j</entry> <entry key="autoCommit">true</entry> <entry key="transactionIsolation">2</entry> </properties>
サンプルプログラムでは、学部テーブル(mst_department)から「学校ID=2」「学部名=文学部」のデータを検索して、WEBブラウザに表示してみます。
※ 出力の際に表形式で表示する為に「helper.EntityResultViewHelper.java」を使用しています。
※ 「学部エンティティ」クラスは、コンソールアプリケーションと同様です。
■ entity.Department.java package entity; import java.util.Date; import net.skuratani.simpleorm4j.annotation.Column; import net.skuratani.simpleorm4j.annotation.Entity; import net.skuratani.simpleorm4j.annotation.GenerateValue; import net.skuratani.simpleorm4j.annotation.Id; import net.skuratani.simpleorm4j.annotation.Table; import net.skuratani.simpleorm4j.type.GenerationType; /** * 学部エンティティ */ @Entity @Table(name="MST_DEPARTMENT") public class Department { @Id @GenerateValue(strategy=GenerationType.SEQUENCE, sequence="SEQ_MST_DEPARTMENT") @Column(name="ID") private int id; @Column(name="NAME") private String name; @Column(name="SCHOOL_ID") private String schoolId; @Column(name="DELETE_FLAG") private String deleteFlag; @Column(name="REGIST_DATE") private Date registDate; @Column(name="UPDATE_DATE") private Date updateDate; // getter/setter public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSchoolId() { return schoolId; } public void setSchoolId(String schoolId) { this.schoolId = schoolId; } public String getDeleteFlag() { return deleteFlag; } public void setDeleteFlag(String deleteFlag) { this.deleteFlag = deleteFlag; } public Date getRegistDate() { return registDate; } public void setRegistDate(Date registDate) { this.registDate = registDate; } public Date getUpdateDate() { return updateDate; } public void setUpdateDate(Date updateDate) { this.updateDate = updateDate; } }
■ servlet.Sample.java package servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import entity.Department; import helper.EntityResultViewHelper; import net.skuratani.simpleorm4j.expression.Expression; import net.skuratani.simpleorm4j.persistence.Criteria; import net.skuratani.simpleorm4j.persistence.EntityManager; import net.skuratani.simpleorm4j.persistence.EntityManagerFactory; import net.skuratani.simpleorm4j.persistence.Query; /** * WEBアプリケーション(Glassfish)サンプル */ @WebServlet("/init") public class Sample extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); try { EntityManager em = EntityManagerFactory.createEntityManager(); Criteria criteria = em.getCriteria(); criteria.select(Department.class) .from(Department.class) .where(Expression.equal(Department.class.getDeclaredField("schoolId"), 2), Expression.equal(Department.class.getDeclaredField("name"), "文学部")); Query query = em.createQuery(criteria); List<Department> resultList = (List<Department>) query.getResultList(); out.println(EntityResultViewHelper.generateTableView(resultList)); } catch (Exception e) { e.printStackTrace(); } } }
サンプルプログラムの実行結果は以下のようになります。
次は、Tomcatで実装されているデータベースコネクションプール(DBCP)を利用して、データベースに接続するWEBアプリケーションを作成していきます。
接続するデータベースはPostgreSQLを使用します。
eclipseを起動して、「動的WEBプロジェクト」を作成します。
今回は、プロジェクト名は「So4jWEBProject2」とします
PostgreSQLのJDBCドライバ(PostgreSQL JDBC Driver)をダウンロードします。
https://jdbc.postgresql.org/
GitHubリポジトリの「SimpleORM4J」のページからsimpleorm4j.jarをダウンロードします。
https://github.com/shigeru-kuratani/SimpleORM4J
ダウンロードした「postgresql-XX.jar」と「simpleorm4j.jar]を、プロジェクト内に作成した「WEB-INF/lib」フォルダに配置します。
Tomcatに実装されているDBCPは「META-INF」配下に「context.xml」を配置することで実現されます。
参考として任意のパラメータを設定した「context.xml」を「META-INF」配下に配置します。
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/so4j" auth="Container" type="javax.sql.DataSource" maxActive="5" maxIdle="5" maxWait="10000" username="SimpleORM4J" password="SimpleORM4J" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/SimpleORM4J"/> </Context>
設定ファイル(so4j.xml)をsrcフォルダに追加します。
設定ファイルの内容は、Glassfishに作成したコネクションプールを使用する為に、データソース名を
定義します。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>SimpleORM4J設定ファイル</comment> <entry key="dsn">jdbc/so4j</entry> </properties>
サンプルプログラムでは、学部テーブル(mst_department)から「学校ID=2」「学部名=文学部」のデータを検索して、WEBブラウザに表示してみます。
※ 出力の際に表形式で表示する為に「helper.EntityResultViewHelper.java」を使用しています。
※ 「学部エンティティ」クラスは、コンソールアプリケーションと同様です。
■ servlet.Sample.java package servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import entity.Department; import helper.EntityResultViewHelper; import net.skuratani.simpleorm4j.expression.Expression; import net.skuratani.simpleorm4j.persistence.Criteria; import net.skuratani.simpleorm4j.persistence.EntityManager; import net.skuratani.simpleorm4j.persistence.EntityManagerFactory; import net.skuratani.simpleorm4j.persistence.Query; /** * WEBアプリケーション(Tomcat)サンプル */ @WebServlet("/init") public class Sample extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); try { EntityManager em = EntityManagerFactory.createEntityManager(); Criteria criteria = em.getCriteria(); criteria.select(Department.class) .from(Department.class) .where(Expression.equal(Department.class.getDeclaredField("schoolId"), 2), Expression.equal(Department.class.getDeclaredField("name"), "文学部")); Query query = em.createQuery(criteria); List<Department> resultList = (List<Department>) query.getResultList(); out.println(EntityResultViewHelper.generateTableView(resultList)); } catch (Exception e) { e.printStackTrace(); } } }
サンプルプログラムの実行結果は以下のようになります。
SimpleORM4Jへのご意見やご感想がございましたら、メッセージをお願い致します。
また、SimpleORM4Jを使用して頂きまして、バグがございましたらご連絡を頂けると助かります。
皆様からのご意見・ご感想をもとに、SimpleORM4Jを改善・拡張をしていきたいと考えております。
皆様からのメッセージは当方で確認をしておりますが、仕事をしながらの開発となる為、すぐにご返信・対応をすることが
出来ない場合がございます。何卒ご容赦ください。
タイトル※ | |
---|---|
メールアドレス | |
内容※ |