2009-08-01から1ヶ月間の記事一覧

JPA関連アノテーションの基本として-その2-

@OneToOneアノテーション @OneToManyと@ManyToOneアノテーション Callback系アノテーション @Where @OneToOneアノテーション UserとUserAttributeが1対1の関係を作成します。 @Entity public class User { private Long id; private String name; private Us…

JPA関連アノテーションの基本として-その1-

@Entityアノテーションと@Idアノテーション @Tableアノテーション @GeneratedValueアノテーション @Columnアノテーション @Transientアノテーション @MappedSuperclassアノテーション 次回は @Entityアノテーションと@Idアノテーション まずは、これが無いと…

ジェネリクスとinstanceofについて

例えば、ジェネリクスの抽象クラスを以下のように定義して、 public abstract class Base<T> { private int id; // ・・ getter setter } このクラスを以下の様に使いたかったとする。 public class Foo extends Base<Foo> {・・・} 親の Base には idが同じであれば</foo></t>…

SpringでstaticなフィールドにDIする方法

Spring使っていて、staticなフィールドにDIしたい場合がありまして、Repositoryをどこからでもstaticで参照したいとか・・で、調べてみると、以下でできました。 @Component public class StaticRepository { private static Repository repository; public …

jettyの依存関係ライブラリ

jetty-distribution-7.0.0.RC4から、依存関係のライブラリが同梱されなくなったみたい。 jetty-distribution-7.0.0.RC1の頃には、libフォルダの中にjsp-2.1とかjetty-annotationsとか入っていたんだけど。eclipseからはjettyのコア部のdistributionのみを提…

GenericDaoについて記しておくか・

いちをう、 GenericDaoとは DAOのスーパークラスでジェネリクスで汎用的なCRUDを定義しておき、個々のDAOにタイプセーフなCRUD操作を提供するパターン。 GenericDaoインターフェースとImpl GenericsでCRUD操作の定義 package etc9.dao; import java.io.Seria…

Beanのコピーを簡単に?

EntityからDTOへのコピーなど、以下のようにできたら便利かも。 Bookエンティティ(entity)→BookDtoへコピーする時、こんな感じで BookDto dto = BeanUtil.copyAs(BookDto.class, entity); entitys は entity が入った List だとすると、こんな感じで List<BookDto> dt</bookdto>…

Scalaのパッケージ管理システム sbazとは

Scala Bazaar Systemとは Scala Bazaar System、略してsbazはScalaの提供するパッケージ管理システム。新しいプログラムのインストールやアップグレードを自動化でき、パッケージの配布を容易にする。CPANやaptみたいな感じ Scalaのインストール 念のため、S…

ローンパターンでリソースのクローズを確実に

ローンパターン Scalaでは関数をオブジェクトとして扱えるため、以下のような関数を考えることができる def withWriter(filename: String)(op: Writer => Unit) { val writer = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(filename),…

Scalaによる正規表現

正規表現の記述 Scalaで正規表現を扱うには scala.util.matching.Regex を使う。 正規表現は、以下のように記述できる val regex = """[Ss]cala""".r ダブルクオートを3つ使用すると、正規表現中のバックスラッシュを2つ続けてエスケープすることなく記述す…

コンパニオンオブジェクト

コンパニオンオブジェクトとは Scalaでは、classキーワードにてクラスを定義し、objectキーワードによってシングルトンオブジェクトを定義するが、同じ名前のclassとobjectを、同じファイルに定義した場合、そのシングルトンオブジェクトは「コンパニオンオ…

Scalaのパッケージ宣言

フラットなパッケージ宣言 パッケージ宣言はJavaと同様にpackage節によって行う。 package etc9.util class FileUtil この例では、FileUtil クラスは etc9.util パッケージに所属することになる。 入れ子のパッケージ宣言 パッケージ宣言は以下のように、同…

ScalaでHibernateを使う

ScalaからHibernateを使ってみる。 利用するライブラリ 利用するライブラリは以下 antlr-2.7.6.jar commons-collections-3.1.jar commons-lang-2.4.jar dom4j-1.6.1.jar ejb3-persistence.jar h2-1.1.117.jar hibernate3.jar hibernate-annotations.jar hibe…

JUnitの新しいアサーション assertThat

Junit4.4から assertThat というアサーションメソッドが追加された。 APIの定義は以下の通り。 public static <T> void assertThat(T actual, org.hamcrest.Matcher<T> matcher) public static <T> void assertThat(java.lang.String reason, T actual, org.hamcrest.</t></t></t>…

JUnit4のアノテーション

今更ながら、JUnt4のアノテーションについてのまとめ org.junitパッケージのアノテーション @Test テストメソッド用のアノテーション @Before JUnit3 の setup() に相当。各テストメソッドの実行前に実行される @After JUnit3 の tearDown() に相当。各テス…

実装パターンに見るMethodTimer

ケント・ベックの実装パターンの付録にある、パフォーマンス測定フレームワークのMethodTimerを写経した。MethodTimerは以下のように使うと、 MethodsTimer tester = new MethodsTimer(SetVsArrayList.class.getDeclaredMethods()); tester.report(); コレク…

暗黙的型変換 implicit

暗黙的型変換とは x + y が型チェックを通らない場合、Scalaコンパイラーは x に何らかの型変換を行い、型チェックが通る状態としてコンパイルを試みる。この型変換は、implicitによって定義された変換メソッドが存在する場合に行われる。 つまり、implicit…

Apache Ivy によるライブラリの依存関係解決

一つ前の内容など、ライブラリの準備が大変なので、Apache Ivy でライブラリの取得を楽にする。 まずは簡単な例で Apache Ivy の使用例を示す。EclipseではAntが組み込まれているため、ファイル作成してAnt実行すればライブラリを簡単に取得できる。まずは、…

SpringMVC on Hibernate

昨日ポストした内容をSpringMVCでのWebアプリに拡張する。 今回も同様に全てインメモリで作る。使用するのは以下。 jetty7 hibernate3 spring2.5.5 h2 プロジェクト構成 Eclipseで新規Javaプロジェクト作成し、「WebContent/WEB-INF/classe」「WebContent/WE…

Spring on Hibernate

一つ前のエントリーではHibernate単体だったが、Spring上で動かしてみる。以下を使用するため、入手してライブラリをクラスパスに追加しておく。 http://commons.apache.org/dbcp/ から commons-dbcp-1.2.2.zip http://commons.apache.org/pool/ から common…

Hibernate on JPA(Java Persistence API) によるサクサク開発

Hibernate でJPAを使ったサンプル。利用する主なプロダクトは以下 Eclipse Hibernate H2 TestNG slf4j ライブラリの入手 Hibernate https://www.hibernate.org/ から Hibernate Core と Hibernate Annotations を入手。hibernate-distribution-3.3.2.GA の …

Scalaでの例外処理

Scalaでの例外処理は、他の言語系と同じようなノリで使えます。 例外のスロー 例外のスローは普通に throw で行う object Main extends Application { def hoge(n : Int) = if(n >= 0) n else throw new IllegalArgumentException("n must be a positive num…

TestNG を使いましょう

TestNG 本家 http://testng.org/doc/index.htmlEclipseプラグイン更新サイトは http://beust.com/eclipse (Eclipse 3.4) http://beust.com/eclipse1 (Eclipse 3.3) 簡単な例 ArrayListのテストケースを書いてみると、 import static org.testng.Assert.asser…

Closeable インターフェースを使ってあげて

JDK1.5 から Closeable インターフェースが追加されたのでリソースのクローズ処理が楽になった。 あんまり使われていないので使ってあげて、 /** * <code>Closeable</code>を実装するリソースのクローズ処理を行います。 * <p> * リソースのクローズ処理を行い、例外が発生し</p>…

Guice でサーブレット

Guiceでサーブレット書いてみる これだけだと、web.xmlのサーブレットマッピングをJavaコードとして記載できるだけだけど、練習 Jetty利用の事前準備 前回の記事と同様、Jettyをインメモリのサーバとして使うので、Jetty起動用のランチャーを作成 Jettyのjar…

Guice 最初の一歩

Guiceとは GoogleからリリースされているDIコンテナ XMLレスでDIの定義をコード内での記述で閉じられる 現在2.0がリリースされている http://code.google.com/p/google-guice/ 最初の一歩 Client が DIされた Service を実行する単純なケースの実装 まず Ser…

Jetty でインメモリなサーバ作成

Jettyのダウンロードと解凍 現在JettyはEclipse Foundationでホストされている。 http://www.mortbay.org/jetty/からリンクを辿り、Eclipseのサイトから以下をダウンロードして解凍。 jetty-distribution-7.0.0.RC1.zip Eclipseでプロジェクト作成 Eclipseで…

JSON-lib JavaでJSONを簡単に使う

JSON(JavaScript Object Notation) JavaScriptにおいて,オブジェクトの定義を行う際に用いられる表記 RFC4627にて規定されている。 XMLより簡素な記述で扱いが楽 JSON-lib JSON-libはJavaからJSON形式を簡単に扱えるライブラリ ダウンロードは以下 http://j…