この記事は Java EE Advent Calendar 2015 - Qiita の15日目のエントリーです。 昨日は@den2snさんで、Javaバッチの実行環境 EEなのかSEなのか でした。 明日は@glory_ofさんです。 ゼロダウンタイムデプロイとは 読んで字のごとく、サービスの停止時間無しにアプリケーションを配備する事ですね。 無停止リリースとか無停止デプロイ、(ちょっとニュアンス違うけど)ローリングアップデートなどという言われ方もします。Erlang界隈ではホットデプロイという呼ばれ方をするようです。 実現方法は色々あります。自分の知っている限りで、以下に書き出してみました。 PaaSを利用する方法 Google App Engine や AWS Elastic Beanstalk にはアプリのバージョン管理機能があるので、これを利用すれば安全にアプリを入れ替えられます
Springでは既にJava8で導入された新日付型(以下、JSR-310日付型)をサポートしていますが、実際に使用する際には各コンポーネントで設定が必要だったり、フォーマットを指定したかったりするので設定方法をまとめておきます。 サンプルはこちら。 https://github.com/tag1216/example-spring-boot-jsr310 合わせてSpringの各コンポーネントで標準で対応していない型(以下、非標準型)を扱う方法を軽く解説します。 構成 Spring Boot(1.3.0.RELEASE) Spring MVC Spring Data JPA Jackson Spring Data JPA 非標準型の対応方法 Entityクラスやクエリーメソッドの引数で非標準型を使うには、AttributeConverterインターフェースの実装クラスを作成して標準型への変
@Data @Entity @EntityListeners(AuditingEntityListener.class) --(1) public class Vendor implements Serializable { @Id @Column(name="vendor_id") private int vendorId; @Column(name="vendor_name") private int vendorName; @CreatedBy --(2) @Column(name="created_by") private String createdBy; @CreatedDate --(3) @Column(name="created_on") private LocalTime createdOn; @LastModifiedBy --(2) @Column(name="up
どうもえいやです。今回の技術ブログを担当します。 前回はGebの話をしました。皆もうブラウザテストは自動化出来たかな。 今回は、前回と変わって当社のWebアプリケーションのバックエンド開発言語となっているJavaの話です。 ラムダ式使ってる? Java8がリリースされてずいぶんと経ちますが、皆さんの現場ではJava8の力はちゃんと発揮されているでしょうか。 先日、同僚が出かけたJavaのイベントでは、講演者が参加者に向けて、「Lambda式を使っている人は手を上げてみてください」と求めて見たところ、ほとんど手が上がらなかったそうです。 当社では、エンジニアは全員Scalaが書けるということになっていますので、Javaの案件でも特に違和感(Scalaのそれに比べ、少し(?)不便なのは置いといて)なく使えているんですがねぇ。。。 とまれ、Java8では、それまでのJava7から、言語仕様の面な
JPOUG Tech Talk Night #2 で話した内容に飲み会で質問された内容を加えています。
これはJava EE Advent Calendar 2013の21日目 昨日は[twitter:@Hachiro808]さんのThymeleafを業務で使いたいでした。 皆様はJPAのL2キャッシュというものをご存知でしょうか。 L2キャッシュとは エンティティをキャッシュし、複数のスレッド間でエンティティを使ってデータをやりとりする場合にいちいちデータベースにアクセスしなくて良くするためのキャッシュです。 普通にエンティティのキャッシュです。ちなみにL1キャッシュというのもありまして、そちらは同じスレッド内で同じエンティティを取得する場合に毎回DBにアクセスしに行かなくて良くするためのキャッシュです。 詳しくはOracleの人が書いた資料があったのでそちらを参照してください。 JPAのキャッシュを使ったアプリケーション高速化手法 超クセモノなL2キャッシュ とまあ、字面だけ見ると非常に
JPAだけで完結するのはさすがにムリがあったのでこういうタイトルにした。が、JPAプロバイダ固有のAPIのレベルではフェッチサイズを変更する効果を確認できた。 JDBCのsetFetchSize変更時の動きをstatspackで見てみる - kagamihogeの日記ではJDBCを直接使用していたが、このエントリではJPAプロバイダ(EclipseLink, Hibernate)固有のAPIを使用して100万行取得するコードの速度を、フェッチサイズ変更無しと100の時とでどのくらい速度差が生じるかを確認する。 環境 DB CentOS-6.4-x86_64 Oracle Database Express Edition 11g Release 2 Java Java SE Development Kit 7u45 Eclipse Kepler(4.3.1) SR1 IDE for Java
Hibernate を使ってデータベースに100,000行を挿入する愚直な方法は、このようなものです: Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Customer customer = new Customer(.....); session.save(customer); } tx.commit(); session.close();これは50,000番目の行のあたりで OutOfMemoryException で失敗するでしょう。 Hibernate がセッションレベルキャッシュで、新しく挿入されたすべての Customer インスタンスをキャッシュするからです。 この章では、こ
このエントリでは、Yegor Bugayenkoによる記事、ORM Is an Offensive Anti-Patternを紹介する。 (Yegorから和訳と転載の許可は得た。) 以下はその全文の和訳だが、意訳超訳が混じっているので、もとのニュアンスを知りたければ元記事を読んでもいいし、読まなくてもいい。 結論から言えば、ORMはオブジェクト指向プログラミングの原則の全てに違反するひどいアンチパターンだ。オブジェクトをバラバラに引き裂き、もの言わぬ受身なデータ入れに変えてしまう。 小さいWebアプリケーションから、数千のテーブルをCRUD操作するエンタープライズシステムまで、どんなアプリケーションにもORMが存在することはゆるせない。 代わりになるものは? SQLを話すオブジェクトだ。 ORMの仕組み オブジェクト関係マッピング (Object-relatinal mapping、ORM
元々はC#、最近はNode.jsがコーディングの主流だったのですが、仕事で久々にJavaを使うことになりました。Javaは10年以上前にJava AppletからJNIでPCの周辺機器を操作するようなものを作って以来です。ServletとかTomcatとかStrutsとかとは無縁に生きてきました。 というわけで、久々にJavaを使って見たら、Spring 3.0~ にRestTemplateとかいう余りに素敵なクラスがあって驚いて鼻血が出たので、驚きを記事にしてみました。 RestTemplate RestTemplateの何がすごいかというと、Rest APIを呼び出すのに1行だけで済んでしまうという点です。これまでなら、HttpConnectionをOpenして、そこからBufferedWriterで書き出して、ResponseをBufferedReaderで読み込んで、みたいなことを
Spring Boot 1.4からRestTemplateのBuilderクラス(org.springframework.boot.web.client.RestTemplateBuilder)が追加され、自動コンフィギュレーションされます。RestTemplateBuilderを利用すると、共通的なコンフィギュレーションを適用しつつ、個別のカスタマイズも簡単に適用することができるようになります。 Note: RestTemplateって何もの? RestTemplateは、Spring Frameworkが提供しているHTTPクライアントクラスです。デフォルトではJava標準のHttpURLConnectionが使われますが、Apache HttpClient、Netty 4、OkHTTP 2/3を利用してHTTP通信することもできます。 RestTemplateについては、TERASO
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く