2010-03-01から1ヶ月間の記事一覧

Doma 1.2.1 リリース

O/Rマッパー Doma 1.2.1 をリリースしました。ダウンロードはこちらからどうぞ. http://doma.seasar.org/downloads.html Maven2 からのご利用はこちらを参照ください. http://www.seasar.org/wiki/index.php?Maven2RepoRemote 1.2.0からの変更点は次のとお…

文字シーケンスに関する新しい組み込み関数

1.2.1をリリースしたばかりでなんですが、1.3では新しい組み込み関数をサポートします。1.2.1では、「nullでなくかつ長さが0でない文字シーケンスだけを検索条件に含める」場合、たとえば次のようにSQLを記述します。 select * from employee where /*%if na…

DomaのDolteng対応は見送り

DomaのDolteng対応?に意見をいただきありがとうございました。需要があるということが確認できて助かりました。しかし、結論としてはDolteng対応は見送りたいと思います。理由は、 JPetStoreのサンプルがSeasarを使った場合のブランクプロジェクトの役割を…

DomaのDolteng対応?

DomaでDoltengに対応したらうれしい人はどれくらいいるでしょうか。また、対応といったときにどこまで対応していてほしいでしょうか? Persistenceの項目でDomaを選択できればOK? Scaffoldが必要? 対応するのかどうかわかりませんが、意見があれば聞いてみ…

Domaのjarファイルのバージョンが実行時と注釈処理時で同じであることをチェックするようにします

これは次のバージョン(1.2.1を予定)で入れます。本当は1.2.0に盛り込めればよかったんですが、このアイデアを思いついたのがリリースした後でした。どういったものかというと、注釈処理(apt)で生成したクラスのstatic初期化子でバージョンチェックを行います…

Doma 1.2.0の主な変更点

簡単に紹介します。 LocalTransactionにhasSavepointメソッドの追加 セーブポイントの存在チェックができるようになりました。 簡単なコードではセーブポイントのあるなしは自明なので役立たないと思いますが、セーブポイントの設定やロールバックに条件分岐…

Doma 1.2.0 リリース

Doma 1.2.0をリリースしました。 もう1.2.0かよって思うかもしれませんが、公開されたAPIを変更(追加/修正等)されたり何らかの移行作業が必要になったりする場合に真ん中のバージョン上げることにしています。一番右のバージョンは、それ以外の小さな変更…

登録していないコンポーネントが自動でインスタンス化されるのを防ぐには

上で示した挙動がいやな場合もあるかもしれません。 そのときは、IKernelの実装クラスを作成してそれを使います。具体的にはIKernelのHandleMissingBindingメソッドをオーバーライドしてfalseを返します。 public class MissingBindingDisabledKernel : Stan…

コンポーネント登録をせずにDIしてインターセプタを適用

自動登録という機能があるわけではなく、Kernel(コンテナ)に問い合わせて存在しなかったらインスタンス化したりDIしてくれるようです。これは便利。 それと、IKernelのIntercept拡張メソッドを使うと条件に引っかかるメソッドにインターセプタが適用できま…

xUnit.netを使ってみる 2

C#

他のテストツールとの比較がありますね。 http://xunit.codeplex.com/wikipage?title=Comparisons&referringTitle=Home SetupとTearDownの代わりが、コンストラクタとIDisposable.Disposeというのはおもしろい。 あと気に入ったのは例外のテスト。期待する例…

xUnit.netを使ってみる

C#

NUnitの後継らしいです。 http://www.codeplex.com/xunit Ninjectで使っていたのでちょっと見てみました。たとえばこんな感じで使っています。 [Fact] public void ProviderReturnsConstantValue() { var sword = new Sword(); provider = new ConstantProvi…

Doma 1.1.0から導入されたローカルトランザクションをどう簡単に使うか?

Domaのローカルトランザクションについては、以下を見てください。 http://doma.seasar.org/reference/transaction.html http://doma.seasar.org/apidocs/org/seasar/doma/jdbc/tx/LocalTransaction.html このAPIをどう簡単に呼び出すかについて考えてみまし…

Doma 1.1.0 リリース

O/Rマッパー Doma 1.1.0 をリリースしました。ダウンロードはこちらからできます。 http://doma.seasar.org/downloads.html クイックスタートのドキュメントを書き換えています。 http://doma.seasar.org/quick_start.html トランザクションに関するドキュメ…

try/finallyを使ってちゃんとローカルトランザクションを実行する

上の例では省いていますが、ローカルトランザクションはbeginしたら必ずcommitかrollbackする必要があります(ただし同じスレッド内であれば異なるインスタンスのcommit/rollbackでもいい)。rollbackはトランザクションがアクティブであろうとなかろうと呼…

セーブポイントとトランザクション分離レベルをサポート

ローカルトランザクションですが、セーブポイントを使うためのAPIも作りました。 @Test public void testSavepoint() throws Exception { LocalEmployeeDao dao = new LocalEmployeeDaoImpl(); // トランザクションを取得 LocalTransaction tx = AppConfig.g…

属性でインターセプトの対象を示す

usingしておきます。 using Ninject; using Ninject.Extensions.Interception; using Ninject.Extensions.Interception.Attributes; using Ninject.Extensions.Interception.Infrastructure.Language; using Ninject.Extensions.Interception.Request; イン…

NinjectでInterceptorをつかう

Inteceptorの機能はExtensionとして提供されています。ダウンロードはここからできます。 http://github.com/idavis/ninject.extensions.interception/downloads インターセプタの実装が2つ(Castle DynamicProxyとLinFu)あるのでどちらか版を選ぶといいと…

ローカルトランザクションを間単に使うためのAPIを提供

Domaで正式にサポートすることにしました。使い方はこんなかんじです(例外ハンドリングは省いています)。 LocalTransaction tx = AppConfig.getLocalTransaction(); tx.begin(); EmployeeDao dao = new EmployeeDaoImpl(); Employee employee = dao.select…

IntelliSenseに表示させないことで流れるインタフェースをより滑らかに

Ninjectのコードを読んでいて知りました。そういうことができるんですね。 /// <summary> /// A hack to hide methods defined on <see cref="System.Object"/> for IntelliSense /// on fluent interfaces. Credit to Daniel Cazzulino. /// </summary> [EditorBrowsable(EditorBrowsableState.Never)] pub…

Call Hierarchyが参照されている型でしか辿らないのは仕様?それともバグ?

C#

Visual Studio 2010 のbeta2を使っています。Call HierarchyはVisual Studio 2010から入った新機能なんですが、仕様なのかバグなのかわからない挙動があります。 class Program { static void Main(string[] args) { IHoge hoge = new Hoge(); hoge.Say(); }…

Entity Framework と LINQ to SQLのストアド呼び出し比較

C#

たいした比較じゃないですがちょっと気になったので.NET4で試しました。 ストアドプロシージャの定義。 CREATE PROCEDURE [dbo].[PROC_DTO_PARAM] @param1 int, @param2 int OUTPUT, @param3 int OUTPUT AS BEGIN SET @param2 = @param2 + @param1; SET @par…

Ninjectを使ってみた その3

インジェクションのタイプは、3つだそうです。 コンストラクタインジェクション プロパティインジェクション メソッドインジェクション バージョン1のころはフィールドインジェクションがあったようですが、バージョン2で廃止したそうです。C#やVB.NETの場合…

Ninjectを使ってみた その2

モジュールを動的に読み込めます。まず、Assemblyから。 [global::Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod] public void Dynamic_module_loading_by_Assembly() { var kernel = new StandardKernel(); kernel.Load(AppDomain.CurrentDomai…

Ninjectを使ってみた

C#で書かれた軽量なDIコンテナNinjectをちょっとだけ使ってみました。GuiceのC#版のようです。最近バージョン2がリリースされたみたいですね。 サイト http://ninject.org/ 作者のブログ http://kohari.org/ あんまりドキュメントがないのが残念ですが、コー…