Mirage

Mirage 1.3.0をリリースしました

少し前にMirageのヘビーユーザーだというAdrianがコミッタに加わってくれたのですが、彼の会社でカスタマイズした部分をOSS化するなどいろいろやっていきたいとのことだったので、自分があまりメンテできていないこともあり、organizationに移して開発を行っ…

Mirage 1.2.3をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.2.3をリリースしました。 https://github.com/takezoe/mirage今回の修正点は以下の通りです。 任意のプロパティでSessionを取得するためのSessionFactory#getSession(Properties)を追…

mirage-scalaでエンティティを使った更新を行う場合

mirage-scalaではケースクラスをエンティティとして使うことができるのですが、「DBを検索」→「一部のプロパティを変更」→「更新」みたいなことをやりたいときはケースクラスのcopyメソッドを使用するとよさげです。 case class Book( @(PrimaryKey @field)(…

mirage-scala 0.0.4をリリースしました

mirage-scalaはS2JDBCの2waySQLが使えるJava用データベースアクセスライブラリMirageをScala向けにラップしたものです。 http://amateras.sourceforge.jp/site/mirage/mirage-scala.html 今回のバージョンでの変更点は以下の通りです。 SqlManagerでClassオ…

Mirage 1.1.5をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.4をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の新機能・修正点は以下の通りです。 ResultSetMetaData#columnNameと@Column#nameの大文字・…

自動採番されるプライマリキー

mirage-scalaではエンティティを使用してレコードのINSERTを行う際にDB側で自動採番されるプライマリキーの場合、以下のようにJavaのラッパー型で宣言しておいてnullをセットするか、 @Table(name="BOOK") case class Book( @(PrimaryKey @field)(generation…

mirage-scalaでエンティティにケースクラスを使う場合

mirage-scalaではこれまでもケースクラスをエンティティに使うことはできましたが、Mirageでインスタンスを生成するために以下のようにデフォルトコンストラクタを用意しておく必要がありました。 @Table(name="BOOK") case class Book( @(PrimaryKey @field…

mirage-scalaのエンティティの指定方法

いままではJava版のインターフェースを踏襲してClassオブジェクトを渡すようにしていたのですが… val books = sqlManager.getResultList( classOf[Book], // ここでエンティティの型を指定 Sql(""" SELECT BOOK_ID, BOOK_NAME, AUTHOR, PRICE FROM BOOK /*IF…

mirage-scala 0.0.3をリリースしました

mirage-scalaはS2JDBCの2waySQLが使えるJava用データベースアクセスライブラリMirageをScala向けにラップしたものです。 http://amateras.sourceforge.jp/site/mirage/mirage-scala.html 今回のバージョンでの変更点は以下の通りです。 ケースクラス(もしく…

Mirage 1.1.4をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.4をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の新機能・修正点は以下の通りです。 NameConverterの実装としてRailsLikeNameConverterを追…

mirage-scala 0.0.2をリリースしました

mirage-scalaはS2JDBCの2waySQLが使えるJava用データベースアクセスライブラリMirageをScala向けにラップしたものです。 http://amateras.sourceforge.jp/site/mirage/mirage-scala.html 今回のバージョンでの変更点は以下の通りです。 SqlManagerのインター…

Mirage 1.1.3をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.3をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の新機能・修正点は以下の通りです。 データベーススキーマを自動更新するためのSchemaUpdate…

mirage-scalaでのイテレーション検索

Mirageでは検索結果のイテレーション処理を行う場合、IterationCallbackインターフェースを実装したコールバックを用意する必要があるのですが、mirage-scalaでは当然のように関数をコールバックとして渡せるようにしています。 var sum = 0 val result = sq…

外部SQLファイルの使い方

Mirageでは2waySQLは外部SQLファイルとして作成する必要がありますが、mirage-scalaでは以下のように複数行文字列を使ってソースコード中に直接2waySQLを記述することができるようにしています。 val resultList = sqlManager.getResultList(classOf[Book], …

mirage-scalaでのJavaBeanの定義方法

mirage-scalaでもMirage同様、SQLのパラメータや結果の取得にJavaBeanを使用します。たとえばこんな感じ。一応、@BeanPropertyアノテーションを付けなくても行けるようにしてありますが、varだったりnullで初期化する必要があったりと、ちょっとJavaっぽいか…

2waySQLのパース結果のキャッシュ

性能改善のために、一度パースした2waySQLのパース結果をキャッシュできるようにしてみました。 Mirageを単体で使う場合はjdbc.propertiesでsql.cacheプロパティにtrueを設定します。 jdbc.url=jdbc:h2:mem:mydb;DB_CLOSE_DELAY=-1 jdbc.driver=org.h2.Drive…

mirage-scalaでのDTOの扱い

mirage-scalaを作っているわけですが、2waySQLのパラメータを渡したり、検索結果を受け取るためのDTOをどうしようかというのが目下最大の悩み。今のMirageのインターフェースをそのまま使うならこんな感じになります。 // ResultSetをマッピングするクラス c…

mirage-scala作り始めました

Scalaでなかなか「これだ!」というO/RマッパやDBアクセス用のライブラリが見つからなかったので、MirageのScalaバインディングを作ったらよいのでは?と思い、いろいろ試しています。2waySQLを使えるScalaらしいインターフェースを持ったDBアクセスライブラ…

スキーマの自動アップデート機能

Mirageにデータベースのスキーマを自動的にアップデートする機能を追加しています。自動と言ってもRailsのマイグレーションのように高機能なものではなく、差分のSQLをwar内に組み込んでおき、デプロイするとコンテキストの起動時に差分のSQLを自動的に流し…

Mirage 1.1.2をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.0をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 スタンドアロンでの利用時にコネクションプーリングを行…

Guiceでのトランザクション管理

MirageではGuiceとの連携用にMirageModuleというモジュールを提供しており、これを使用するとSqlManagerをDIできるようになります。が、提供しているのはそれだけで、トランザクション管理などは自前でなんとかしてください、というスタンスでした。 もちろ…

DBCPを使ったコネクションプーリング

Mirageではいままで単体のライブラリとして使用する場合は直接JDBC接続を行っていたのですが、DBCPを使ったコネクションプーリングを行えるようにしました。 コネクションプーリングを使用するにはjdbc.propertiesを以下のような感じで設定します。 session.…

Mirage 1.1.1をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.0をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 JDBCSessionImpl使用時はjdbc.propertiesのjdbc.urlプロ…

Mirage 1.1.0をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.0をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 主キーの自動生成のサポート @PrimaryKeyアノテーション…

主キーの自動採番のサポート

これまでMirageでは主キーはアプリケーション側で生成するか、データベース側で自動採番するか(INSERT時のSQLには含めないのでトリガでもなんでも使って好きに採番して)の二択だったのですが、インサート後に採番された値が取得できないといろいろ不自由な…

Mirage 1.0.6をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.0.6をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 ユニットテスト支援機能 ユニットテスト時にDBなしでSql…

Mirageのユニットテスト支援機能

MockRunnerのJDBCMockの機能を参考に、MirageにDBレスでユニットテストを行うための機能を実装してみました。テストケースのサンプルはこんな感じ。 @Test public void testGetBookById(){ // 初期化 MirageTestContext.initMirageTestContext(); // MockSql…

Mirage 1.0.5をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.0.5をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 エンティティを使ってバッチ更新を行うためのメソッドを…

流れるインターフェースを使わない理由

MirageはS2JDBCクローンと言ってもよいと思いますが、S2JDBCの流れるインターフェースは継承していません。これには理由があります。 流れるインターフェースはコードは書きやすいのですが、拡張が面倒なのです。たとえばS2JDBCでAutoSelectに新しいメソッド…

Mirage 1.0.4をリリースしました

S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.0.4をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 JavaSE5でも動作可能に(Mirage 1.0.3以前はJavaSE6以降…