読者です 読者をやめる 読者になる 読者になる

JPA 2.1 の 新機能 Converter まとめ

データベースのカラムと Entity の該当する属性の変換を Converter で定義できるようになりました。 Converter の使用例 Converter は以下の AttributeConverterインターフェース を実装して定義します。 public interface AttributeConverter<X,Y> { public Y co</x,y>…

JPA 2.1 の新機能 Entity Graphs まとめ

Entity Graphs とは JPA 2.1 では Entity Graph を使うことで fetch 計画を指定できるようになりました。これにより query や find で取得する対象ををカスタマイズできるようになります。同じ Entity から様々なデータの見せ方が必要で、時にはパフォーマン…

ドキュメント+グラフのハイブリットNoSQL -> OrientDB 〜Java API編〜

前回ドキュメント+グラフのハイブリットNoSQL -> OrientDB 〜導入編〜 - A Memorandum の続きで、今回は OrientDB を Java から操作する。 Java API OrientDB のコンポーネントは以下のようになっている。 データベースを操作する際には以下のAPIを利用する…

ドキュメント+グラフのハイブリットNoSQL -> OrientDB 〜導入編〜

OrientDB とは 100% Pure Java の NoSQL データベース ドキュメント指向型 と グラフ型 のデータベースを扱える ライセンスは Apache 2 license NoSQLだけど SQL が使える 組み込み/サーバのどちらもOK Github https://github.com/orientechnologies/orientd…

Java EE の標準バッチAPI -- JSR-352 Batch Applications for the Java Platform --

Java Batchとは JSR-352 Batch Applications for the Java Platform として仕様化されたバッチ処理用 API。 Java EE 7 に取り込まれた。通称 jBatch (日本のみ?)。 構造は Spring Batch とほとんど同じ。標準化されるのは良いことだ。 Job の種類と実行制御…

Gradle Copy タスクのまとめ

Copy タスク Copy タスクは Gradle の core で提供されている。 簡単な Copy タスク例は以下。 task copyConfig(type: Copy) { from 'config' into 'build/config' } gradle copyConfig でタスクを実行すると 'config' ディレクトリにあるファイルを'build/c…

gradle でファイルダウンロードを自動化する

ファイルのダウンロード ダウンロードプラグインを使うと簡単。 plugins { id 'java' id "de.undercouch.download" version "1.2" } repositories { mavenCentral() } task wrapper(type: Wrapper) { gradleVersion = '2.2.1' } task downloadAndUnzip { out…

分速で始める JavaEE 7 〜 Arquillian 〜

前回分速で始める JavaEE 7 〜 JPA + CDI + JAX-RS 〜 - A Memorandumの続き arquillian のテストまでやっときます。 ファイル準備 テスト用のパッケージ追加と arquillian 用の設定ファイルなどを作成しておきます。 mkdir -p src/test/java/example/servic…

分速で始める JavaEE 7 〜 JPA + CDI + JAX-RS 〜

前回 分速で始める JavaEE 7 〜 JPA + CDI + JSF 〜 - A Memorandum の続き。 RESTサービス追加します。 ファイル準備 パッケージ用のディレクトリ追加とファイル作成します。 mkdir -p src/main/java/example/rest touch src/main/java/example/rest/JaxRsA…

分速で始める JavaEE 7 〜 JPA + CDI + JSF 〜

前回の続き 秒速で始める Java EE 7 with Wildfly - A Memorandum せっかくなので wildfly の quickstart をベースに、分速で簡単なアプリにしてみます。 設定ファイル準備 最初に src 以下にディレクトリを掘っておきます。 mkdir -p src/main/java/example…

秒速で始める Java EE 7 with Wildfly

gradle がインストールされている前提。 されていない場合は以下で入れておく。 brew install gradle 開始 ターミナルに以下のブロックを全て選択してコピペする。 mkdir example cd example cat <<EOF > build.gradle plugins { id 'java' id 'war' id 'com.bmusc</eof>…

lombok を gradlw with Intellij で使う

provided スコープの指定 lombok 使うときは、依存スコープを provided にします。 maven だと、こんな感じになります。 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.0</version> <scope>provided</scope> </dependency> </dependencies> gradle 使う場合は java プラグインだと provided の configuratio…

Java で Windows OS 判定いろいろ

Windows 判定 Grizzly のソース見てたら、Windows 判定をこんな風にやってた。 private static final boolean WIN32 = "\\".equals(System.getProperty("file.separator")); なるほど。 何も考えずにやるとこんな感じだけど private static final boolean WI…

JPA2.1 でアノテーション使わずに Named Query を登録するには

JPA 2.1 の javax.persistence.EntityManagerFactory#addNamedQuery() のはなし。 検索してもあまりヒットしないので。 普通の NamedQuery の使い方 JPA で NamedQuery 使う時は、Entity にアノテーション指定して以下のように定義する。 @Entity @NamedQuer…

Accessing Relational Data using JDBC with Spring

Accessing Relational Data using JDBC with Spring Getting Started · Accessing Relational Data using JDBC with Spring このガイドでは Spring でリレーショナルデータへアクセスする手順を見ていきます。 What you’ll build Spring の JdbcTemplate で…

Accessing Data with JPA

Accessing Data with JPA Getting Started · Accessing Data with JPA このガイドでは Spring Data JPA を使い、リレーショナルデータベースにデータを保存し取得する方法を見ていきます。 What you’ll build POJO な Customer をインメモリデータベースに保…

Consuming a RESTful Web Service

Consuming a RESTful Web Service Getting Started · Consuming a RESTful Web Service このガイドではRESTful Web サービスを利用するアプリケーションの作成をしていきます。 What you’ll build Spring の RestTemplate を使い、次のような Facebook の Gr…

Converting a Spring Boot JAR Application to a WAR

Converting a Spring Boot JAR Application to a WAR Getting Started · Converting a Spring Boot JAR Application to a WAR Spring Boot には強力な2つのプラグインがあります。 spring-boot-gradle-plugin spring-boot-maven-plugin これらは本質的に同等…

Spring boot -- Hot swapping for idea--

Serving Web Content with Spring MVC Hot swapping を利用するには Spring Loaded が使える。 Spring Loaded Spring Loaded はJVMの停止なしにクラスファイルの変更を行う hot code replace ツール。 デバック実行時にメソッドの中身を書き換える hot swap …

Serving Web Content with Spring MVC

Serving Web Content with Spring MVC このガイドでは Spting による"hello world" Web サイトを作っていきます。 What you’ll need だいたい15分 お気に入りのテキストエディタかIDE JDK 1.6 以上 Gradle 1.11 以上か、 Maven 3.0 以上 How to complete thi…

Building a RESTful Web Service

Building a RESTful Web Service このガイドでは "hello world" RESTful web service を作っていきます。 What you’ll build 以下の GET リクエストで、 http://localhost:8080/greeting JSON 形式の挨拶を返します。 {"id":1,"content":"Hello, World!"} na…

Building an Application with Spring Boot

Building an Application with Spring Boot このガイドでは Spting Boot が迅速なアプリケーション開発にどのように役立つかをサンプルを提供します。 ちなみに http://start.spring.io/ で入力項目埋めるとプロジェクトの雛形がつくれます。 What you’ll bu…

JPA の Criteria API インターフェースの階層

わかりズラい。 代表的なメソッドのありか JPQL Clause Criteria API Interface Method SELECT CriteriaQuery select() Subquery select() FROM AbstractQuery from() WHERE AbstractQuery where() ORDER BY CriteriaQuery orderBy() GROUP BY AbstractQuery…

Dropwizard Getting Started 〜勝手に翻訳〜

Getting Started ここでは単純な Dropwizard プロジェクト Hello World の作り方をガイドします。 この中で各種のライブラリと役割、Dropwizard の重要な概念、そしてあなたのプロジェクトとして拡張するための幾つかの技術的な用例を説明します。 概要 Drop…

メモっとけ Java 8 Lambdas 〜Chapter3〜

Java 8 Lambdas: Pragmatic Functional Programming作者: Richard Warburton出版社/メーカー: O'Reilly Media発売日: 2014/03/18メディア: Kindle版この商品を含むブログを見る 前回メモっとけ Java 8 Lambdas 〜Chapter2〜 - A Memorandumからの続き Stream…

メモっとけ Java 8 Lambdas 〜Chapter2〜

Java 8 Lambdas: Pragmatic Functional Programming作者: Richard Warburton出版社/メーカー: O'Reilly Media発売日: 2014/03/18メディア: Kindle版この商品を含むブログを見る 関数型プログラミングスタイルによって何が変わるかというと、 The difference …

Glassfish v4のビルド方法

v3 系については以下が参考になります https://wikis.oracle.com/display/GlassFish/FullBuildInstructions v4 系についても基本的には同じ手順となります。 Glassfish v4のビルドで必要なもの Java JDK 1.7 maven 3.0.3 or above SVN OSX の場合はこんな感…

今日は NPE の日。国民の休日。

NPEの日とは 国民の祝日に関する法律(祝日法、昭和23年7月20日法律第178号)の一部改正によって制定された祝日で、日付は昭和天皇の誕生日である4月29日があてられている。「ゴールデンウィーク」を構成する祝日のひとつでもある。 2連続で立て続けだったの…

Gradle から Jetty 利用していて静的リソースをロックして困る場合には

Windows で Gradle から Jetty プラグインで開発していると、静的リソースを Jetty がロックしてしまう。 jetty-6.XX\etc\webdefault.xml に Jetty のデフォルト設定があるので、WEB-INF/jetty-webdefault.xml にでもコピーして useFileMappedBuffer -> fals…

IntelliJ IDEA を好きになる10の理由

単純な1行メソッド 以下の様なメソッド内部が単行の場合、 static class MethodInterceptorsPair { ・・・ public MethodInterceptorsPair(Method method) { this.method = method; } こんな風に巻き上げて表示する 無名クラス Provider インターフェースを…

切り替える OSX での JAVA_HOME

昔は Java Preferences で切り替えていた Java のバージョンですが、最近は java_home コマンドを使って JAVA_HOME 環境変数に設定するのが良い。 java_home コマンド man ページをかいつまむと、 java_home コマンドは、JAVA_HOME 環境変数を設定するための…

enum の比較は安心して == を使ってください

どこのプロジェクトでも多くの人が enum を equals で比較していることが多いです。 でも enum のインスタンスは単一であることが保証されているので、安心して == で比較することができます(Elvisは1人しか存在しないのです)。 enum の == 比較はコンパイル…

Java8 新機能についてのまとめ 3

Java8 の Developer preview が公開されたので、そろそろ新機能についてまとめておきます。 の3回目は StringJoiner。 文字列整形のループ処理が不要になった Scala で言う mkString、Guava で言う Joiner でしょうか。 StringJoiner にてよくある文字列連結…

Java8 新機能についてのまとめ 2

Java8 の Developer preview が公開されたので、そろそろ新機能についてまとめておきます。 の2回目は Date and Time API を中心に。 日時の扱いが Date and Time API として刷新された 腐っていた日時関連の API が改善されました。刷新のポイントは以下。 …

Java 8 新機能についてのまとめ 1

Java8 の Developer preview が公開されたので、そろそろ新機能についてまとめておきます。 機能一覧はこちらです。 インターフェースにstaticなメソッド定義が可能になった 例えば、java.util.Comparator には以下の static なメソッドが追加されています。…

JavaEE6 によるリアルワールド開発 その2

はじめに ここ1ヶ月ほど、(とある事情により)JavaEE6 で開発作業をおこなっています。この中で得られた雑多な知見について、他の開発者の方のためにフィードバックとして簡単にさらしておこうかと思います。の第2回目です。前回の統合開発環境の話題に続いて…

JavaEE6 によるリアルワールド開発 その1

はじめに ここ1ヶ月ほど、(とある事情により)JavaEE6 で開発作業をおこなっています。 この中で得られた雑多な知見についての、他の開発者の方のためのフィードバックとして簡単にさらしておこうかと思います。今回のプロジェクトでは、Webプロファイルでは…

NetBeans の出力ウィンドウで文字化けする場合は

出力ウィンドウの文字化け対応 UTF-8で開発していると出力ウィンドウの文字化けが発生するここの netbeans.conf に「-J-Dfile.encoding=UTF-8"」を追加する 念のため、Mac では右クリックで「パッケージの内容を表示」となります Winの場合は \etc\netbeans.…

glassfish へのリソース設定はリソースファイルを使うべし その3

Application Scoped Resources 前回まででは、リソースをサーバに設定していました。これにより、サーバ上のアプリケーションから共通的にリソースを利用できるようになります。 しかしアプリケーションのデプロイやアンデプロイを繰り返していると不要なリ…

glassfish へのリソース設定はリソースファイルを使うべし その2

前回では glassfish-resources.xml を手で作成しましたが、Netbeans の Webアプリケーションプロジェクトだとほとんど裏で自動的にやってくれちゃいます。ので、流れを・ Webアプリケーションプロジェクトの作成 SampleWebApp とでもして適当に Webアプリケ…

glassfish へのリソース設定はリソースファイルを使うべし その1

glassfish-resources.xml ファイルで Glassfish にリソース設定 Glassfish でリソースを設定するには以下の3つの方法があります。 GlassFish Server 管理コンソール の画面から設定 asadmin コマンドラインツールから create-jdbc-connection-pool や creat…

Java の Channel 系インターフェースの階層って

Java の Channel 系インターフェースの階層ってちょっと分かりにくいので、 ByteChannel が Read/Write を束ねていて、SeekableByteChannel がその下にいる。 FileChannel は 分散読み込み(ScatteringByteChannel)と集中書き込み(GatheringByteChannel)と、…

あの、isAssignableFrom ってよくわからなくなるんですケド

Class オブジェクトにある isAssignableFrom がよくわからなくなる public boolean isAssignableFrom(Class cls) クラスのメタ情報をあつかう機会ってそんなにないし、使おうと思うとわすれてる Java Doc は Determines if the class or interface represent…

Ceylon M3 や Kotlin M2 など出そろってきたNBJLはどうなる?

The Next Big JVM Language 先日(2012/7/11)に Ceylon M3.1 がリリースされました。JetBrains の Kotlin も M2 が先月出ましたし、Xtend も Eclipse Juno に合わせて 2.3 になったり、NBJL(The Next Big JVM Language) のレースが加速してきています。Fantom…

Implementation Tips 致し方なく例外を無視する場合、今昔

例外を致し方なく無視する場合、 最悪なのは、これとか try { ・・・・ } catch (XxxException e) { } これ try { ・・・・ } catch (XxxException e) { } 昔良く見たのは、 これとか try { ・・・・ } catch (XxxException e) { // ignore } これ try { ・…

自身のJVMのプロセスIDを取得するには

細かいネタです。 実行している JVM のプロセスIDを取るには RuntimeMXBean 使うと簡単に取れます。 RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); String vmName = bean.getName(); long pid = Long.valueOf(vmName.split("@")[0]); System.…

WatchService で再帰的にディレクトリ監視で難あり の続き

単なるメモで-す。 import java.nio.file.Path; import java.nio.file.WatchEvent; public interface WatcherCallback { void onCall(Path path, WatchEvent<Path> event); } import static java.nio.file.LinkOption.NOFOLLOW_LINKS; import static java.nio.file</path>…

WatchService で再帰的にディレクトリ監視で難あり

Java7 で追加された WatchService は指定したディレクトリ内でファイルまたはディレクトリの 作成、変更、削除を追跡できる便利なクラスです。 けど、指定したディレクトリ配下を再帰的に監視するには、自力でガンバレです。 ということで、再帰的に監視して…

あの・・ Java で関数型っぽい書き方ができてしまいましたケド。

こんな関数用のインターフェース用意してあげて、 public interface F<R, T> { R apply(T t); } シーケンスクラスをこんな感じで作ってあげて、foreacch で関数インターフェース取るようにして、 public class Seq<E> { private List<E> list = new ArrayList<>(); publi</e></e></r,>…

Java7 では Charset の指定がプチ改善されてます

今さらです。細かい話です。 Java7 では NIO.2 として nio パッケージに大きな改善が行われましたが、その影で StandardCharsets なんていうクラスが追加されていたりします。今まで Charset の指定は、以下のように文字列で指定していました。 Charset.forN…