Mirage
少し前にMirageのヘビーユーザーだというAdrianがコミッタに加わってくれたのですが、彼の会社でカスタマイズした部分をOSS化するなどいろいろやっていきたいとのことだったので、自分があまりメンテできていないこともあり、organizationに移して開発を行っ…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.2.3をリリースしました。 https://github.com/takezoe/mirage今回の修正点は以下の通りです。 任意のプロパティでSessionを取得するためのSessionFactory#getSession(Properties)を追…
mirage-scalaではケースクラスをエンティティとして使うことができるのですが、「DBを検索」→「一部のプロパティを変更」→「更新」みたいなことをやりたいときはケースクラスのcopyメソッドを使用するとよさげです。 case class Book( @(PrimaryKey @field)(…
mirage-scalaはS2JDBCの2waySQLが使えるJava用データベースアクセスライブラリMirageをScala向けにラップしたものです。 http://amateras.sourceforge.jp/site/mirage/mirage-scala.html 今回のバージョンでの変更点は以下の通りです。 SqlManagerでClassオ…
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でインスタンスを生成するために以下のようにデフォルトコンストラクタを用意しておく必要がありました。 @Table(name="BOOK") case class Book( @(PrimaryKey @field…
いままではJava版のインターフェースを踏襲してClassオブジェクトを渡すようにしていたのですが… val books = sqlManager.getResultList( classOf[Book], // ここでエンティティの型を指定 Sql(""" SELECT BOOK_ID, BOOK_NAME, AUTHOR, PRICE FROM BOOK /*IF…
mirage-scalaはS2JDBCの2waySQLが使えるJava用データベースアクセスライブラリMirageをScala向けにラップしたものです。 http://amateras.sourceforge.jp/site/mirage/mirage-scala.html 今回のバージョンでの変更点は以下の通りです。 ケースクラス(もしく…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.4をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の新機能・修正点は以下の通りです。 NameConverterの実装としてRailsLikeNameConverterを追…
mirage-scalaはS2JDBCの2waySQLが使えるJava用データベースアクセスライブラリMirageをScala向けにラップしたものです。 http://amateras.sourceforge.jp/site/mirage/mirage-scala.html 今回のバージョンでの変更点は以下の通りです。 SqlManagerのインター…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.3をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の新機能・修正点は以下の通りです。 データベーススキーマを自動更新するためのSchemaUpdate…
Mirageでは検索結果のイテレーション処理を行う場合、IterationCallbackインターフェースを実装したコールバックを用意する必要があるのですが、mirage-scalaでは当然のように関数をコールバックとして渡せるようにしています。 var sum = 0 val result = sq…
Mirageでは2waySQLは外部SQLファイルとして作成する必要がありますが、mirage-scalaでは以下のように複数行文字列を使ってソースコード中に直接2waySQLを記述することができるようにしています。 val resultList = sqlManager.getResultList(classOf[Book], …
mirage-scalaでもMirage同様、SQLのパラメータや結果の取得にJavaBeanを使用します。たとえばこんな感じ。一応、@BeanPropertyアノテーションを付けなくても行けるようにしてありますが、varだったりnullで初期化する必要があったりと、ちょっとJavaっぽいか…
性能改善のために、一度パースした2waySQLのパース結果をキャッシュできるようにしてみました。 Mirageを単体で使う場合はjdbc.propertiesでsql.cacheプロパティにtrueを設定します。 jdbc.url=jdbc:h2:mem:mydb;DB_CLOSE_DELAY=-1 jdbc.driver=org.h2.Drive…
mirage-scalaを作っているわけですが、2waySQLのパラメータを渡したり、検索結果を受け取るためのDTOをどうしようかというのが目下最大の悩み。今のMirageのインターフェースをそのまま使うならこんな感じになります。 // ResultSetをマッピングするクラス c…
Scalaでなかなか「これだ!」というO/RマッパやDBアクセス用のライブラリが見つからなかったので、MirageのScalaバインディングを作ったらよいのでは?と思い、いろいろ試しています。2waySQLを使えるScalaらしいインターフェースを持ったDBアクセスライブラ…
Mirageにデータベースのスキーマを自動的にアップデートする機能を追加しています。自動と言ってもRailsのマイグレーションのように高機能なものではなく、差分のSQLをwar内に組み込んでおき、デプロイするとコンテキストの起動時に差分のSQLを自動的に流し…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.0をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 スタンドアロンでの利用時にコネクションプーリングを行…
MirageではGuiceとの連携用にMirageModuleというモジュールを提供しており、これを使用するとSqlManagerをDIできるようになります。が、提供しているのはそれだけで、トランザクション管理などは自前でなんとかしてください、というスタンスでした。 もちろ…
Mirageではいままで単体のライブラリとして使用する場合は直接JDBC接続を行っていたのですが、DBCPを使ったコネクションプーリングを行えるようにしました。 コネクションプーリングを使用するにはjdbc.propertiesを以下のような感じで設定します。 session.…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.0をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 JDBCSessionImpl使用時はjdbc.propertiesのjdbc.urlプロ…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.1.0をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 主キーの自動生成のサポート @PrimaryKeyアノテーション…
これまでMirageでは主キーはアプリケーション側で生成するか、データベース側で自動採番するか(INSERT時のSQLには含めないのでトリガでもなんでも使って好きに採番して)の二択だったのですが、インサート後に採番された値が取得できないといろいろ不自由な…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.0.6をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 ユニットテスト支援機能 ユニットテスト時にDBなしでSql…
MockRunnerのJDBCMockの機能を参考に、MirageにDBレスでユニットテストを行うための機能を実装してみました。テストケースのサンプルはこんな感じ。 @Test public void testGetBookById(){ // 初期化 MirageTestContext.initMirageTestContext(); // MockSql…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.0.5をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 エンティティを使ってバッチ更新を行うためのメソッドを…
MirageはS2JDBCクローンと言ってもよいと思いますが、S2JDBCの流れるインターフェースは継承していません。これには理由があります。 流れるインターフェースはコードは書きやすいのですが、拡張が面倒なのです。たとえばS2JDBCでAutoSelectに新しいメソッド…
S2JDBCの2WaySQLが利用可能なデータベースアクセスライブラリ、Mirage 1.0.4をリリースしました。 http://amateras.sourceforge.jp/site/mirage/welcome.html 今回の修正点、新機能は以下の通りです。 JavaSE5でも動作可能に(Mirage 1.0.3以前はJavaSE6以降…