ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Seasar

Super Agile Struts開発記その6 - JSTL連動

JSTLと完全に連動できるようになりました。もちろん、JSTLやELがpublicフィールドを認識するし、HOT deployでメモリリークも起きません。よくあるHelloWorldのサンプルはこんな感じ。 package tutorial.web.hello @Result(path="/hello/world.jsp") public c…

Super Agile Struts開発記その5 - BeanUtils

以前のエントリで、BeanUtilsとHOT deployをあわせて使うと、PropertyDescriptorが無駄にどんどんキャッシュされていってメモリリークする話を書きました。 http://d.hatena.ne.jp/higayasuo/20070725#1185340917 実は、問題はそれだけではなく、BeanUtilsは…

Super Agile Struts開発記その4

http://d.hatena.ne.jp/higayasuo/20071125#1195961089 で、*.doなんてかっこ悪い。/ユースケース名/アクション名で書けるようにします。 と書いたんですが、ServletMappingを/*にするとForwardでも自分に戻ってきちゃうからだめですね。Filterだと、Forward…

S2AOPの暗黙的インタフェース対応

現在のS2AOPでは、pointcutを指定しない場合、そのクラスが実装しているインターフェースのメソッドがすべて対象になります。 インターフェースありきの開発なら、便利な仕様だと思うのですが、今後の主流になると思われる暗黙的インタフェースを使うとなる…

Super Agile Struts開発記その3

バリデーションに対する質問がいくつかあったので、現状考えている仕様を書いてみます。 バリデーションは、commons-validatorによるものとvalidateメソッドによるものと2つ存在します。 commons-validatorによるバリデーションは、フィールドに指定します。…

Super Agile Struts開発記その2

Actionにリクエストが飛んできたとき、Actionクラスのメソッドで@Executeアノテーションがつけられているものを実行するようにします。 @Execute public String execute() { return "success"; }@Executeがついているメソッドが1つだけなら、デフォルトで実…

Super Agile Struts開発記

Super Agile Strutsとは、StrutsとSeasar2を使った開発をAgileに行なうためのフレームワークです。今回は、開発中に考えたことをそのまま書いてみようと思います。 Actionは、もちろんPOJOだよね。ActionFormなんていならない。リクエストパラメータは、Acti…

流れるようなインターフェースMap版

java-jaに流れるようなインターフェースでMapを組み立てる話が出ていましたが、Seasar2の2.4.18(もしかしたらもっと前かも)からは、Mapsクラスでその機能はサポートされています。 java-javaはhttp://www.lingr.com/room/java-ja/archives/2007/11/21#msg-18…

BeanUtilsの流れるようなインターフェース

Commons-BeanUtilsの流れるようなインターフェース版を作成しました。 プロパティのコピーはこんな感じ。 SrcBean src = new SrcBean(); DestBean dest = new DestBean(); ... Beans.copy(src, dest).execute();特定のプロパティは除外したい場合は、exclude…

Seasar Conference 2007 Autumn終了

来てくださった皆様、どうもありがとうございました。スタッフ、スピーカの皆さんお疲れ様でした。 みなさん、楽しんでもらえたでしょうか。はてなを見る限りは、みんな楽しんでもらえたようで一安心です。 次のカンファレンスをよりよいものにするため、ア…

Seasar Conference 2007 Autumn

いよいよ本日開催です。 今回は、定員920人という大きな箱にいかに人を呼んで、満足していただけるかが大きなテーマでした。 そこで、私自身が、三時間連続で話すというチャレンジな企画を立て、カンファレンスの目玉として「流れるようなインターフェース」…

S2JDBC Tutorial

Seasar2.4.18-rc2からは、S2JDBC Tutorialが含まれています。 http://s2container.seasar.org/2.4/ja/downloads.html 解凍してEclipseのプロジェクトとしてインポートすると直ぐに使える状態になっています。 http://s2container.seasar.org/2.4/ja/s2jdbc_t…

S2JDBC & Hibernateベンチマーク その3

ManyToOneのfetch joinでは、HibernateがS2JDBCの1.6倍、OneToManyのfetch joinは、HibernateがS2JDBCの1.8倍ほど時間がかかっています。これは大体予想通り。 次は、10000件のうち最後の100件をページングで取得する場合です。HibernateがS2JDBCの2倍ほど時…

Seasarのサイトが落ちてる?

コミットできないと思ったら、http://www.seasar.orgもアクセスできないみたい。

S2JDBC & Hibernateベンチマーク その2

今度は、Addressを10000件取得してみます。Addressは、EmployeeとOneToOneの関連があり、外部キーを持たない非所有者側のエンティティです。 S2JDBC(0.453489233) 0.454608859 0.451351731 0.454507110 Hibernate(26.278606800) 26.353926022 26.258951969 2…

S2JDBC & Hibernateベンチマーク

S2JDBCとHibernate、素のJDBC、S2Daoとのベンチマーク結果をこれから徐々に公開していきます。 このベンチマークのプロジェクトは、S2Container.javaのリポジトリにコミットされているので、誰でも自由に見ることができます。 第一弾は、S2JDBCとHibernateで…

ERモデルとドメインモデル

エンティティのマッピングで、S2JDBCがJPAと違っているところは、外部キーのプロパティを必要とすることです。 これは、S2JDBCとJPAの根本的なモデリングに対する考えの違いからきています。 S2JDBCは、ERモデルをエンティティに忠実に反映させるという考え…

S2JDBCでSQLファイル

S2JDBCは、S2Dao譲りのSQLファイルを使うこともできます。 http://s2container.seasar.org/2.4/ja/s2jdbc_manager.html#S2Dao%E8%AD%B2%E3%82%8A%E3%81%AESQL%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB examples/entity/Employee/selectAll.sql select ... List<EmployeeDto> </employeedto>…

S2JDBCについてもう少し言っておくか

流れるようなので思考を中断せず云々みたいな事があるようだけどホントにそうかな? 気にしてるのは"where"とかってメソッドでこれってバリバリSQL意識してるからこの名前なんだろうなって気がする。 って考えるとここで言ってる思考ってのは実は「SQLを考え…

S2JDBCが生産性10倍っていうけどさぁ

何をもって10倍と言うのか、、、と思ったんだけど、 何に比べて生産性が10倍かというとJava標準のJPA(Java Persistence API)に対してです。相手が悪い。 JPAと比べてどうするのって思う。 S2Daoと比較することで、S2DaoのユーザをS2JDBCに移行させることにど…

流れるようなインターフェースとメソッドチェーンは違うもの

っていうか、Hibernateにも昔からcriteriaあるよね? http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#querycriteria List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "Fritz%") ) .add( Restrictions.betwee…

Seasar2.4.18-RC1リリース直前

Seasar2.4.18-RC1がもうすぐリリースされます。 「流れるようなインターフェース」をもったS2JDBCがいよいよ登場です。ドキュメントにも書いているのですが、S2JDBCは、「JPAより生産性が10倍高い」とうたっています。単なるマーケティングじゃないですよ。…

JdbcManagerをどこにおくのか

可読性は高いような気がするけど、テストとかどうなんだろう? daoはdaoでがっちり定義してたほうがなんか作りやすそうな気がしなくもないんだけど、使ってみたらわかるのかな? そうしようとするとdaoの中にjdbcManagerがあるコードを書くのか? daoをイン…

流れるようなインターフェースと脱CoC

今後はやるフレームワークは「流れるようなインターフェース」を持ったものになるんじゃないかなぁと思います。流れるようなインターフェースの説明は、ファウラーたんのFluentInterfaceを参照してください。 Seasar2の新O/R Mapper(以後S2JDBCと呼びます)も…

Seasar2ロードマップ

カンファレンスのA2のセッションでは、もともと「つらいJavaから楽しいJavaへ」というタイトルで、今のSeasar2を理解していただくというセッションでした。 せっかくのカンファレンスなので、今を理解していただくだけでなく、これからのSeasar2も理解してい…

Seasarはなぜ日本から巣立たない?

正直な話、Seasarはほとんど触ったことがない。 ただ、せっかくいいものを作っているのに、 日本からなかなか巣立つことがないのは もったいないと思う。 これには、明確な理由があります。日本人の特にソフトウェアにおける「舶来信仰」をぶちこわすためで…

Seasar Conference 2007 Autumn

11/11に法政大学の新キャンパスで行われます。1000人以上の観客動員を狙うチャレンジな企画でもあります。 私は3セッション連続でしゃべります。 A2: つらいJavaから楽しいJavaへ スクリプト言語の台頭により、Javaは生産性が悪いといわれていますが、それは…

スモールスタートを切るためのOSS

my BBコミュニケーターは、新しいビジネスモデルへの取り組み。だからこそOSSを採用して、システム構築のスタイルを変える必要があった my BBコミュニケーターのサービスをスモールスタートするためにOSSを活用したという話が出てます。Seasar2も使われてま…

publicフィールドをプロパティとして認識する

[CONTAINER-70] - public fieldのプロパティとして認識できるようにする Seasar2.5で実装する予定のpublicフィールドをプロパティと認識する機能ですが、大人の事情によりSeasar2.4で実装しました。Teedaも既(1.0.9)にpublicフィールド対応がされているので…

ドキュメント全面見直し

Javadocに続いて、Seasar2のドキュメントも全面的に見直しました。これで当初約束していたドキュメント整備がやっと出揃うことになります。 これは、まだ中継地点であり、今後も引き続き改良につとめますので、いたらない点はどんどんご指摘ください。よろし…