spring

Spring+HibernateEntityManager(archetype編)

前回のおさらい 前回は、component-scan を用いつつ、ドメインモデル実装中の SpringFramework に依存したアノテーションを排除しました。 今回のテーマ 今回は、Spring+HibernateEntityManager 環境のサンプルプロジェクトの生成を、maven の maven-archet…

First Spring Framework 3.0 milestone released

Spring Framework 3.0 M1 がリリースされたようです。 http://blog.springsource.com/2008/12/05/spring-framework-30-m1-released/おいら的には Java 5 or JEE 1.4 以上が必須になったのはうれしいかも*1。機能的には、EL や REST 等プレゼンテーション系に…

Atomikos TransactionsEssentials で JTA (XA with MySQL編その4)

前回(Atomikos TransactionsEssentials で JTA (XA with MySQL編その3)) では、 MySQL では XA START xid JOIN は未サポートという事実が判明しました。 今回は、「なんかワークアラウンドないかな〜」的なコンセプトでぬるく攻めてみようと思います。 At…

Atomikos TransactionsEssentials で JTA (XA with MySQL編その3)

XA START xid JOIN は未サポート 前回(Atomikos TransactionsEssentials で JTA (XA with MySQL編その2))は XA START xid JOIN にて以下のようなエラーが発生しました。 mysql> XA START 0x636f6d2e61746f6d696b6f732e737072696e672e6a6462632e746d303030…

Atomikos TransactionsEssentials で JTA (XA with MySQL編その2)

EntityManager#persist()を2回連続で呼び出してみた。 前回は、JPA で複数のデータソースに対して persist() できました。 さて、今度は、EntityManager#persist() を、同一のEntityManager に対して2回連続で呼び出してみることにします。 ソースはこんな…

Atomikos TransactionsEssentials で JTA (XA with MySQL編)

前回の Atomikos TransactionsEssentials で JTA (Spring + JDBC 編) では、普通に UserTransaction を使ってみたところ、特に問題なく動作しました。 しかし、JPA を使い始めると、どうも動作がおかしい。 null source まずは、以下のエラー。 Exception in…

xbean-springでSpringFrameworkのbeanを JNDIで公開する

フル J2EE コンテナを使わずに SpringFramework だけ利用する場合って、 JNDI を前提にされると結構めんどくさいことがありますよね。 たとえば、UserTransaction を JNDI 経由で取得するのが前提の場合とか。 そんなとき、xbean-spring の SpringInitialCon…

Atomikos TransactionsEssentials で JTA (Spring + JDBC 編)

TransactionsEssentials は、Atomikos のフリーの JTA 実装です。 とりあえずインストールしてみた。 サイトからダウンロードして、dist フォルダから必要な jar ファイルを選び、クラスパスに通します。 とりあえず、以下の jar があれば、最低限の JDBC 操…

Spring+HibernateEntityManager(コンポーネント自動検出 without アノテーション編)

前回のおさらい 前回は、@Component アノテーション、@Scope アノテーション、context:component-scan 要素を用いて、Entity のパッケージ以下の各クラスを bean として自動登録しました。その実際の記述は以下のようになります。 @Component("user") @Scope…

Spring+HibernateEntityManager(コンポーネント自動検出 with アノテーション編)

SpringFramework2.5から、クラスパスを走査し、アノテーションの付加されたコンポーネントを自動検出する機能がサポートされています。典型的には、@Component, @Repository, @Service, @Controller 等のステレオタイプでアノテートされたコンポーネントクラ…

Spring+HibernateEntityManager(@Resource編)

今回は、前回の続きです。 @Resource アノテーションとは? @Resource アノテーションは、クラス、メソッド、フィールドに対して指定可能なアノテーションで、リソースへの参照を宣言するためのものです。JSR 250: Common Annotations for the JavaTM Platfo…

Spring+HibernateEntityManager(DBCPのvalidationQuery編)

今回は、Spring+HibernateEntityManager(AspectJ AOP with Load-Time-Weaver編)の続きです。 コネクションタイムアウトのハンドリング忘れてた(^^; 以前、beans.xml に DBCP の設定は行いましたが、コネクションタイムアウト対策を忘れていました。おいら…

Spring+HibernateEntityManager(AspectJ AOP with Load-Time-Weaver編)

今回は、Spring+HibernateEntityManager(@Required編)の続きです。 トランザクションがかからない!? 現在は、ServiceImpl#registerUser(User) メソッドに、@Transactional アノテーションを用いてトランザクションをかけています。 @Transactional publ…

Spring+HibernateEntityManager(XMLからの外部リソース参照編)

SpringFramework や Hibernate の定義ファイルには、スキーマの定義等、外部の URL を参照すると思しき箇所があります。本番環境では、外部への HTTP 接続が不可能な場合や、ネットワーク障害で外部にアクセスできなくなったりする可能性がありますので、そ…

Spring+HibernateEntityManager(@Required編)

DIし忘れに注意 実行時に、いきなり NullPointerException 喰らって、それが単なる bean への DI し忘れだとヘコみますよね。そういうときには、@Required アノテーションによって、コンテキスト起動時に DI の抜けを確認することができます。 ぬるぽの例 前…

Spring+HibernateEntityManager(@Transactionalアノテーション編)

xmlファイルによるトランザクション設定 前回までの設定では、トランザクションの設定は、beans.xml ファイルの以下の箇所で行っています。 <tx:advice id="readWriteAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <aop:config> </aop:config>

Spring+HibernateEntityManager(Spring+DDDっぽく編 その4)

アプリケーション層 アプリケーションは、ドメインの概念と実装を、アプリケーション形作るための階層です(とおいらは思っている)。そのため、アプリケーションの起動部分や、インスタンスの生成やら生成されたインスタンス間の依存関係の設定なども含まれ…

Spring+HibernateEntityManager(Spring+DDDっぽく編 その3)

インフラストラクチャ層の位置づけ インフラストラクチャ層は、上位層から利用される層という位置づけで、内容的には何でもありです。プレゼンテーション層、アプリケーション層、ドメイン層のすべてから依存が可能です。しかし、インフラストラクチャ層は上…

org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy

こんな DB アクセスにお悩みのあなた! 211 Query SET autocommit=0 211 Query commit 211 Query SET autocommit=1 211 Query SET autocommit=0 211 Query commit 211 Query SET autocommit=1 211 Query SET autocommit=0 211 Query commit 211 Query SET au…

Spring+HibernateEntityManager(Spring+DDDっぽく編 その2)

徹夜明けで満員電車で帰宅 orz仮眠後出社 o...rzなんだかなー。 サンプルをちょっとだけ現実的に変更 さすがに、クラス A とかだとリアリティにかけるので、ちょっと変更。 User というインタフェースを作成。何のユーザーなのかよく分かりませんが、とりあ…

Spring+HibernateEntityManager(Spring+DDDっぽく編)

おいらは DDD っぽいのが好き。 前回は、HibernateEntityManager を使ったベタなサンプルでした。しかし、おいらは DDD っぽいのが好きなので、今回は DDD(Domain-Driven-Design)っぽい設計にしてみます。 Layered Architecture ソースコードを、DDD の階層…

Spring+HibernateEntityManager(宣言的トランザクション編)

今回は、前回のサンプルを、プログラム的なランザクションから、宣言的なトランザクションに変更してみます。 主な変更点 aspectjweaverの追加。 aspectj の AOP 文法を利用するため、aspectjweaver のライブラリを追加。追加しないと、以下のような例外が出…

Spring+HibernateEntityManager(とりあえずSpring編)

前回は、HibernateEntityManager を使ったベタなサンプルでした。今回は、とりあえず Spring Framework を使ってみるという程度に拡張します。 拡張点 機能実行部を Serivce として抜き出し。 EntityManagerFactory を Serivce に DI することにして、Entity…