Doma へようこそ Domaは、いくつかの優れた特長を備えたJava用のデータベースアクセスフレームワークです。 コンパイル時にアノテーション処理を使用してソースコードを検証および生成します。 エンティティ間の関連付けをサポートします。 型安全なCriteria APIを提供します。 "two-way SQL"と呼ばれるSQLテンプレートを含みます。 他のライブラリに依存せずに独立して実行されます。 Domaの開発をご支援ください Domaの開発とメンテナンスを続けていくために、ぜひご支援をお願いします。 いただいたご寄付は、バグ修正の迅速化やライブラリの改善、新機能の追加に活用させていただきます。 こちらで寄付ができます: https://opencollective.com/doma Domaを応援していただき、ありがとうございます。
背景 ここ最近、データアクセスはS2JDBC(2WaySQL)で開発をしていたということもあり、Spring Data JPAのようにクラスファイルの中に文字列として"select column1,column2 from table・・・"みたいな書き方に違和感を覚えていました。そんな時にDoma2の存在を知る機会があったので、ちょっとやってみようかなと思い試してみました。 ちなみに、今の現場ではSpring Boot + MyBatisでやっていますが、 パッと見た感じxmlでマッピング書くのがめんどくさそう xmlがjavaクラスへの依存を持ってしまっている(resultMapとか)、etc javaとSQLを分離したい そもそもあまり詳しくない ってのもあり、やっぱ慣れてる2WaySQLだなーって思っています。 ※他のO/Rマッパーをもう少し理解すれば考え方は変わってくるかもしれま
はじめに SpringBootでDOMA2使ってみようと思い環境構築してたら、意外と躓いたので、手順を記述しておきます。 SpringBoot2 DOMA2 H2 Eclipse4.7 設定 プロジェクト作成 Eclipse開いて パッケージ・エクスプローラーで右クリック 新規 プロジェクト Springスターター・プロジェクト 名前に「sample」と入力 ※任意 グループに「jp.co.sample」と入力 ※任意 パッケージに「jp.co.sample」と入力 ※任意 「次へ」を押下 「web」にチェック 「次へ」を押下 「完了」を押下 ※ここまで終了したらプロジェクトが動くか確認しておいたほうがいいかもしれません。 POM.xmlに依存関係記述 DOMAの依存関係 <dependency> <groupId>org.seasar.doma.boot</groupId> <artif
Spring Data JPAには、Repositoryインターフェースに宣言されたメソッドを、その名前からクエリを生成して自動的に生成してくれるお便利機能があります。どんな命名規則があるのか分からなかったのでメモ。 基本的にはマニュアルの要約です。 環境 Java ・・・ jdk1.8 Spring Boot ・・・ 1.3.5-RELEASE DB ・・・ MySQL 5.7 構文 以下の3つの要素を規則に従って組み合わせたメソッド名をRepositoryインターフェースに宣言することで、自動実装が利用可能になります。 プレフィックス(find...By read...By query...By count...By get...By) キーワード フィールド名 以下のエンティティを例に使います。 @Entity public class Employee implements Ser
シンプルな使い方 jsonで送信する 難しそうな使い方 fileを送信する やりたいこと 画面からsubmitまたはajaxでファイルを送信する。 問題点 処理の流れが ①画面でファイルを指定する ②画面でsubmitする ③Rest Templateへファイルを送信する この場合、ファイルオブジェクトの情報をRest Templateへ渡す必要がありますが、MultipartFileをそのまま渡すことはできなかった。 別のファイルを出力したりしないといけないのかと思っていました… Rest Templateのサンプル Sample package com.example.web; import java.io.IOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springfra
JPA(Java Persistence API)は、データベースから取得したデータをメモリ上に保持する仕様になっている。 そのため、不用意に大量のデータを取得すると、メモリ容量を圧迫してしまい、最悪の場合はOutOfMemoryErrorが起きる可能性がある。 本稿では、JPAの標準機能およびネイティブ機能のそれぞれについて、メモリ使用量を抑えながら大量データを取得する方法と、ネイティブ機能がうまく動作しない場合の回避策を紹介する。 JPAは読み込んだデータを一次キャッシュとして保持する JPAは、読み込んだEntityをPersistenceContext(永続化コンテキスト)と呼ぶ領域で管理する。 ここに格納された状態を一次キャッシュと呼び、一次キャッシュされたEntityをManagedな状態(JPAに管理された状態)と呼ぶ(なお、二次キャッシュもあるが割愛する)。 Persist
オブジェクト指向にもとづくクラス構造を、本来異質なRDBのテーブル構造に対応させることをOR(Object-Relational)マッピングといい、そのための仕掛けがORマッパーである。代表的なものがHibernateやJPAで、これらを使うことは、WEBアプリ界隈では常識といっていいものになっている。しかし、これを業務システム開発で利用するのは、特別な事情がない限りお勧めできない。 ORマッピングの技術は良いものと悪いものとをもたらした。良いものとしては、Ruby on Railsのような生産性の高い開発環境を挙げられる。じっさいRailsは、TwitterやGithubといった優れたサービスの基礎として社会に貢献した。いっぽう、業務システム開発の世界に対しては、ORマッパーはどちらかといえばハタ迷惑な影響ばかりをもたらしたと言わざるを得ない。テーブル構成が比較的単純に済むWEBアプリを
In this post I show how you, from a Spring Boot application, can control the timezone used by Hibernate when it communicates timestamps with the database. This post is inspired by a very similar recent post by Vlad Mihalcea [1], Hibernate Developer Advocate at Redhat. It’s basically the same subject – but with a Spring Boot focus. So read on, if you want to get a “ready-to-use” recipe for controll
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
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く