class: center, middle # Doma実践 --- ## アジェンダ * `Dao`をCDI管理する * `EntityListener`をCDI管理する * JAX-RSでドメインクラスをパラメーターに使う * JAX-RSとJSONとドメインクラス * ジェネリックなドメインクラス * インターフェースなドメインクラス * ドメインクラスと曖昧な状態 * Domaのカスタマイズ * Domaへコントリビュートする --- class: center, middle ## `Dao`をCDI管理する --- ### CDIで管理する対象 * `Config` ( `DataSource` , `Dialect` ) * `Dao` 以下は管理しない * エンティティ * ドメインクラス --- ### やりたいこと ```java @ApplicationScoped
いくつか考えてみました。 HttpServlet.init をオーバーライドする(Servlet) ServletContainerInitializer の実装クラスを作る(Servlet) Singleton セッションビーンに @Startup を付けて @PostConstructed を付けたメソッドを定義する(EJB) Extension の実装クラスを作ってライフサイクルイベントをハンドリングするオブザーバーメソッドを作る(CDI) @ApplicationScoped なCDI管理ビーンを作って @Initialized(ApplicationScoped.class) なイベントをハンドリングするオブザーバーメソッドを作る(CDI) 他にもあったら教えてください! で、個人的には Servlet APIを直接使うのは可能な限り避けたい EJBは使わない という感じなのでC
このエントリは Java EE Advent Calendar 2013 の3日目です。 昨日は @matsumana さんのご担当で JAX-RS + mustache - @matsumana の技術メモ でした。 今回はBeanValidationの自分なりの使い方をご紹介します。 その前に BeanValidationてなんや?という方は JSR 349 の仕様を読むと良いでしょう。 200ページ超えてますが半分以上コードっぽいのでそんなにしんどくないんじゃないかと思わなくもないけどどうでしょうか? もしくは「BeanValidation しんさん」でググると良いですよ。 本題 BeanValidationではフィールドやgetterに@NotNullとか@Sizeとかアノテーションをモリモリ付けてバリデーションするわけですが、調子に乗ってるとすぐアノテーション地獄になってキツいの
DisableOnDebug DisableOnDebug 他の TestRule をラップして、 デバッグ実行されているときのみラップした TestRule を適用します。 import org.junit.Rule; import org.junit.Test; import org.junit.rules.DisableOnDebug; import org.junit.rules.TestRule; import org.junit.rules.Timeout; public class HogeTest { @Rule public TestRule timeout = new DisableOnDebug(Timeout.seconds(1)); //1秒以上かかったら失敗とみなす @Test public void testHoge() throws Exception {
BeanValidationで相関バリデーションするときに新しいメソッド作って@AssertTrueを使うよ! っていう話があったので、それについて思う事を書きます。 なお、以下はWebアプリケーションでリクエストパラメータをPOJOにマッピングして BeanValidationを行うという流れを想定しています。
collect メソッドの概要 端的に述べると collectメソッド は Stream<T> を R に変換する操作です。 より詳しく述べると、 Stream の各要素( T )を中間コンテナ( A )に折り畳んだ後に最終的な結果( R )に変換する操作です。 括弧内のアルファベットは Collector が持つ3つの型変数に対応しています。 T : Streamの要素の型 A : ミュータブル な中間コンテナの型 R : 最終的に返される結果の型 例えば Stream<Character> を単純に繋げて String にする場合は、 Stream の各 Character ( T )を StringBuilder ( A )に append した後に String ( R )に変換する、 という流れになります。 Collector インターフェースの説明 collectメソッド は引
@syobochim Data Classをwhenでパターンマッチして分解出来たっけ? — うらがみ@9/13関西Kotlin勉強会 (@backpaper0) 2014, 9月 13 @backpaper0 ………? — しょぼちむ@進捗はアイドリング☆ (@syobochim) 2014, 9月 13
Jerseyはサーブレット経由でなく com.sun.net.httpserver.HttpServer や Grizzly 、Jettyで動かす事もできるのでmaven-shade-pluginなどでひとつのJARにまとめてしまえば java -jar で実行できるJAX-RSアプリケーションの完成です。 例えば com.sun.net.httpserver.HttpServer を使用するやつをdependenciesに突っ込んで、 <dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-jdk-http</artifactId> </dependency> </dependencies> <dependencyManageme
@backpaper0 2014-06-14 #uragamiorm @backpaper0とは うらがみです。 エスアイヤーでジャバ使ってウェッブやってます。 アンヨヨイヨも少しやってます。仕事で。 Doma歴4年ぐらい。 +αの話から みなさんORM使っていますか? backpaper0が知ってるORM JPA (EclipseLink, Hibernate) S2JDBC S2Dao ActiveObjects Iciql (JaQu) MyBatis (旧iBatis) Mirage Doma JPA Java EEに含まれるORMフレームワーク。 オブジェクトとリレーションの柔軟なマッピング。 JPQLでSQLの方言を吸収。 生SQLも書ける。 Criteria API + Metamodel API = 型安全なクエリ。 ただしコード地獄になりがち。 ていうかなる。 クエ
JAX-RSでは次に挙げるアノテーションをメソッドの引数などに付けることでクエリパラメータやパスの一部を受け取ることができます。 @MatrixParam @QueryParam @PathParam @CookieParam @HeaderParam メソッドの引数はStringやプリミティブを使うことができますが、それ以外のクラスも使用できます。 Stringの引数をひとつだけ受け取るpublicなコンストラクタを持つクラス 次のようなクラスでもクエリパラメータなどを受け取ることが出来ます。 public class Hoge { public final String value; public Hoge(String value) { this.value = value; } }
<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-bundle</artifactId> <version>1.11.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.sun.jersey.jersey-test-framework</groupId> <artifactId>jersey-test-framework-http</artifactId> <version>1.11.1</version> <scope>test</scope> </dependency> Jerseyのartifactはjersey-serverやjersey-jsonなどいくつかに分かれているのですが、jersey-bun
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く