Tagbangers Blog

Hibernate

Hibernate Search + Elasticsearch を試してみる (Amazon Elasticsearch Service 版)

前回の記事では Hibernate Search を使って Docker コンテナ上の Elasticsearch と連携してみました。 今回は AWS のフルマネージドな Amazon Elasticsearch Service と連携させてみましょう。 記事中のサンプルコードはここにあります。 環境: Mac OS X Hibernate Search 5.8.0.CR1 Amazon Elasticsearch Service (Elasticsearch version 5.5) 1. Elasticsearch Service を作成する AWS マネージメントコンソールの Elas...

Hibernate Search + Elasticsearch を試してみる (Docker 版)

Hibernate Search 5.6 から Elasticsearch がサポートされました。 Hibernate Search は全文検索用のインデックスを Hibernate のエンティティのライフサイクルにあわせてリアルタイムに自動生成してくれます。 前回の記事では Elasticsearch の Docker イメージを使って簡単に動作を確認してみましたが、今回はさらに Maven のライフサイクルあわせて Docker の起動停止を行ってみます。 docker-maven-plugin を使うと、Maven の integration-test 実行時に Docker コンテナの...

Hibernate SearchのFieldBridgeとignoreFieldBridgeについて

前にだいぶはまってしまい色々な方のアドバイスにより解決し(てもらっ)たところをまとめます。 結論 Hibernate Searchで複数のカラムを条件にした検索がしたい場合など、お決まりのフィールドをカスタムしたい場合はFieldBridgeを使って表現することができます。 またFieldBridgeを使って登録された項目を検索するときはignoreFieldBridgeを使います。 私の間違いとやりたかったこと 人・商品・ブランドというEntityがあり、Entity同士の関連は Person 1-n Item n-1 Brand となっていたとします。 そのときに「あるブランドの商品を持っ...

Hibernate5 で SchemaExport

Hibernate5 から SchemaExport のコンストラクタの引数が変更され、MetadataImplementor を使うようになった。 以下は、Hibernate5 で Annotation ベースの設定を SQL (DDL) に出力するサンプルです。 public class Hbm2ddl { public static void main(String[] args) throws Exception { final String locationPattern = "classpath:/sample/entity/*"; fi...

Hibernateで実行されたSQLとパラメータのログを出す

Hibernateで開発を行っている時に実際にSQLってどうやって実行されてるんだ?っと思ったりします。 そんな時にはlogback.xmlに下記のタグを追加してみてください。 そしたら下記な感じで出力されます。 12:10:02.883 [http-nio-8081-exec-4] DEBUG org.hibernate.SQL:109 - select sample0_.id as id1_11_ from sample sample0_ where sample0_.id=? and sample0_.type=? and sample0_.create_date>=? 12:1...

Spring Boot で Hibernate Search のマルチテナンシーをやってみる

Hibernate Search がマルチテナンシーに対応したので、Spring Boot と組み合わせて試してみた。 試した環境は下記の通り。 Spring Boot 1.2.5.RELEASE Hibernate Search 5.3.0.Final サンプルコードはここにも置いてあります。 https://github.com/tagbangers/spring-best-practices/tree/master/spring-best-practice-hibernate-search-multi-tenancy マルチテナンシー (multi-tenancy) ってなに? ひとつの...

Hibernate ORMをReferenceを読みながら試してみる-1

社内勉強会でHibernateについて学んだので、復習しながらまとめます。 Hibernateとは? http://www.techscore.com/tech/Java/Others/Hibernat... んー。Java初学者の私にとっては少し難しですが、ObjectとRDBを上手く関連づけて、 わざわざinsert分を書かなくても、Hibernateが上手く処理してRDBに格納してくれるイメージでしょうか。 今回はReferenceを読みながら、 1.1. Part 1 - The first Hibernate Applicationをやってみます! version: 4.3.8.Fi...

自己参照で双方向関連を持つデータを削除する(delete bidirectional self reference data)

双方向の関連をもつ自己参照テーブルのデータを消したいときに、以下のEntityの書き方では外部キー制約のためエラーとなってしまいました。 @Entity @Table(name="article") @PrimaryKeyJoinColumn @DynamicInsert @DynamicUpdate public class Article { @ManyToMany @JoinTable( name="article_related_article", joinColumns = { @JoinColumn(...

ISPN000055: Unexpected error in AsyncStoreCoordinator thread. AsyncCacheWriter is dead!

全文検索インデックスを再構築した時の「ISPN000055: Unexpected error in AsyncStoreCoordinator thread. AsyncCacheWriter is dead!」の対処法。 環境 Hibernate Search 4.5.1.Final Infinispan 6.0.2.Final  Stacktrace [AsyncStoreCoordinator-LuceneIndexesData] ERROR o.i.p.async.AsyncCacheWriter - ISPN000055: Unexpected error in AsyncStor...