SlideShare a Scribd company logo
1 of 80
Download to read offline
はまる!JPA
(初学者向けライト版)
株式会社カサレアル 多田真敏
JJUG CCC 2015 Spring
2015/4/11(土)
(C) CASAREAL, Inc. All rights reserved. 1
このセッションについて
 ハッシュタグ
#ccc_cd2
 JPAについて基礎、および初学者の方が
間違えやすい「はまりポイント」を
解説します
(C) CASAREAL, Inc. All rights reserved. 2
自己紹介
 多田真敏(ただまさとし)
 (株)カサレアル
 大阪出身、香川育ちの31歳
 Java EE 7などを中心に研修講師やってます
 JJUG CCCは3回連続3回目の出場
 SNS
 Twitter:@suke_masa
 はてなブログ:Java EE 事始め!
 GitHub:https://github.com/MasatoshiTada
(C) CASAREAL, Inc. All rights reserved. 3
目次
① JPAの概要
② CRUD操作とエンティティの状態
③ 1対Nのリレーション
④ Java Persistence Query Language(JPQL)
(C) CASAREAL, Inc. All rights reserved. 4
①JPAの概要
(C) CASAREAL, Inc. All rights reserved. 5
JPA(Java Persistence API)
 Java EE標準のORマッパー
 .NETにも影響を与えている
ADO.NET Entity Framework
(C) CASAREAL, Inc. All rights reserved. 6
JPAの特徴:高生産性・高機能
 設定ファイル(XML)が少ない
Hibernateのようなマッピングファイルは不
要
CoC(設定より規約)によるもの
 1対Nなどのリレーションをエンティティ
で表現できる
 DB製品非依存な問合せが可能
(C) CASAREAL, Inc. All rights reserved. 7
JPAのバージョン
Java EE JPA JSR 説明
Java EE 5 1.0 220 EJBの一部
Java EE 6 2.0 317 EJBから独立
Java EE 7 2.1 338 ★今ここ!
Java EE 8 2.2? 338? Java SE 8対応?
(C) CASAREAL, Inc. All rights reserved. 8
仕様と実装
 JPAで決まっているのは仕様のみ
(≒インターフェイスの集合)
 実装
EclipseLink(参照実装)
GlassFish・WebLogicに内包
Hibernate
WildFly・JBossに内包。Springも。
その他の実装はJPA 2.1未対応
(C) CASAREAL, Inc. All rights reserved. 9
今回の開発環境
 EclipseLink 2.5.2
 Java DB(JDKに内包)
 JDK 8u40+Maven(Java SE環境)
 NetBeans 8.0.2
 JPA実装やDB製品、その他の環境によって、
挙動が若干異なることがあります
(C) CASAREAL, Inc. All rights reserved. 10
エンティティクラス
 IDEで自動生成可能
NetBeansが一番楽
IntelliJ IDEAは高機能だが少し手順が複雑
Eclipseは不安定
詳しい手順はこちら↓
http://masatoshitada.hatenadiary.jp/entry
/2014/05/11/153725
(C) CASAREAL, Inc. All rights reserved. 11
サンプルDBの構造(一部省略)
12
顧客ID
顧客名
住所
電話番号
・・・
顧客
製造者ID
製造者名
住所
電話番号
・・・
製造者
製品ID
製造者ID (FK)
種別コード (FK)
購入価格
・・・
製品
種別コード
説明
・・・
種別コード
注文No.
顧客ID (FK)
製品ID (FK)
数量
発送費用
注文日付
発送日付
・・・
注文
(C) CASAREAL, Inc. All rights reserved.
生成されたエンティティ(一部抜粋)
(C) CASAREAL, Inc. All rights reserved. 13
// 製造者エンティティ
@Entity
public class Manufacturer ・・・ {
@Id
private Integer manufacturerId;
private String name;
private String addressline1;
private String addressline2;
・・・
@OneToMany(・・・)
private List<Product> productList;
// setter/getter・・・
生成された設定ファイル
(persistence.xml)
(C) CASAREAL, Inc. All rights reserved. 14
<persistence version=“2.1” ・・・>
<persistence-unit name="samplePU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>hoge.entity.Product</class>
<class>hoge.entity.Manufacturer</class>
・・・
<properties>
<property name="javax.persistence.jdbc.url"
value="jdbc:derby://localhost:1527/sample"/>
<property name="javax.persistence.jdbc.user" value="app"/>
<property name="javax.persistence.jdbc.driver"
value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.password" value="app"/>
</properties>
</persistence-unit>
</persistence>
ログ出力の設定(EclipseLinkの場合)
 開発時は必ずログを出しましょう!
(C) CASAREAL, Inc. All rights reserved. 15
<persistence・・・>
<persistence-unit ・・・>
・・・
<properties>
・・・
<property name="eclipselink.logging.level”
value="FINE"/>
</properties>
・・・
②CRUD操作と
エンティティの状態
(C) CASAREAL, Inc. All rights reserved. 16
JPAの概念図
(C) CASAREAL, Inc. All rights reserved. 17
DB
永続化コンテキスト
entity
entity
entity
entity
Entity
Manager
entity
クライアント
プログラム
EntityManagerインターフェイス
 find()・・・主キー検索
 persist()・・・新規追加を予約する
 remove()・・・削除を予約する
 merge()・・・エンティティを永続化コンテキ
スト管理下に置く
 detach()・・・エンティティを永続化コンテキ
ストから切り離す
 flush()・・・永続化コンテキストの変更をDBに
反映する
(C) CASAREAL, Inc. All rights reserved. 18
永続化コンテキストとは?
 EntityManagerが管理するエンティティ
を保持する場所
 EntityManagerは、永続化コンテキスト
内のエンティティのみを管理する
(C) CASAREAL, Inc. All rights reserved. 19
エンティティの状態
① NEW状態
 エンティティのインスタンスがnewされてすぐ
② MANAGED状態
 エンティティが永続化コンテキストの管理下にある
③ DETACHED状態
 エンティティが永続化コンテキストの管理下から
切り離されている
④ REMOVED状態
 DBからの削除が予約されている
(C) CASAREAL, Inc. All rights reserved. 20
★重要★ エンティティの状態遷移
(C) CASAREAL, Inc. All rights reserved. 21
NEW
状態
MANAGED
状態
REMOVED
状態
DETACHED
状態
DB
persist()
remove()merge()
detach()
clear()
find()
flush()
refresh()
基本的な書き方
(C) CASAREAL, Inc. All rights reserved. 22
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("samplePU");
EntityManager em = emf.createEntityManager();
// 処理
em.close();
emf.close();
persistence.xmlの
persistence-unitの
name属性
主キー検索
(C) CASAREAL, Inc. All rights reserved. 23
Manufacturer m =
em.find(Manufacturer.class, 19985678);
System.out.println(m.getName());
[EL Fine]: sql: Connection(50826412)--SELECT MANUFACTURER_ID,
ADDRESSLINE1, ADDRESSLINE2, CITY, EMAIL, FAX, NAME, PHONE, REP,
STATE, ZIP FROM MANUFACTURER WHERE (MANUFACTURER_ID = ?)
bind => [19985678]
Happy End Searching
実行結果
エンティティクラス名と
主キー値を指定
SELECT文が発行される
新規追加
(C) CASAREAL, Inc. All rights reserved. 24
EntityTransaction tx = em.getTransaction();
tx.begin();
Manufacturer m = new Manufacturer();
m.setManufacturerId(1);
m.setName("HOGE");
em.persist(m);
em.flush();
tx.commit();
persist()で永続化
→flush()でDBに反映
→commit()で確定
新規追加
(C) CASAREAL, Inc. All rights reserved. 25
[EL Fine]: sql: Connection(1168076863)--INSERT INTO MANUFACTURER
(MANUFACTURER_ID, ADDRESSLINE1, ADDRESSLINE2, CITY, EMAIL, FAX,
NAME, PHONE, REP, STATE, ZIP) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
bind => [1, null, null, null, null, null, HOGE, null, null, null, null]
実行結果
INSERT文が発行される
レコードが追加される
更新
(C) CASAREAL, Inc. All rights reserved. 26
EntityTransaction tx = em.getTransaction();
tx.begin();
Manufacturer m = em.find(Manufacturer.class, 1);
m.setName("FUGA");
em.flush();
tx.commit();
find()で取ってくる
→setterで変更
→flush()でDBに反映
更新
(C) CASAREAL, Inc. All rights reserved. 27
[EL Fine]: sql: Connection(1168076863)--SELECT MANUFACTURER_ID,
ADDRESSLINE1, ADDRESSLINE2, CITY, EMAIL, FAX, NAME, PHONE, REP,
STATE, ZIP FROM MANUFACTURER WHERE (MANUFACTURER_ID = ?)
bind => [1]
[EL Fine]: sql: Connection(1168076863)--
UPDATE MANUFACTURER SET NAME = ? WHERE (MANUFACTURER_ID = ?)
bind => [FUGA, 1]
実行結果
変更した列のみ
UPDATEする
更新時の注意点
 対象のエンティティがMANAGED状態でな
いと、更新が反映されない
方法①:find()で検索したものを変更する
方法②:newしたエンティティをmerge()す
る
(C) CASAREAL, Inc. All rights reserved. 28
これでも更新可能
(C) CASAREAL, Inc. All rights reserved. 29
EntityTransaction tx = em.getTransaction();
tx.begin();
Manufacturer m = new Manufacturer();
m.manufacturerId(1);
m.setName("FUGA");
em.merge(m);
em.flush();
tx.commit();
newしてmerge()
これでも更新可能
(C) CASAREAL, Inc. All rights reserved. 30
[EL Fine]: sql: Connection(1168076863)--SELECT MANUFACTURER_ID,
ADDRESSLINE1, ADDRESSLINE2, CITY, EMAIL, FAX, NAME, PHONE, REP,
STATE, ZIP FROM MANUFACTURER WHERE (MANUFACTURER_ID = ?)
bind => [1]
[EL Fine]: sql: Connection(1168076863)--UPDATE MANUFACTURER SET
NAME = ? WHERE (MANUFACTURER_ID = ?)
bind => [FUGA, 1]
実行結果
merge()時にSELECT
→flush()時にUPDATE
EntityTransaction tx = em.getTransaction();
tx.begin();
Manufacturer m = new Manufacturer();
m.manufacturerId(1);
m.setName("FUGA");
em.remove(m);
em.flush();
tx.commit();
削除
(C) CASAREAL, Inc. All rights reserved. 31
削除
(C) CASAREAL, Inc. All rights reserved. 32
Exception in thread "main"
java.lang.IllegalArgumentException: Entity must
be managed to call remove:
com.example.entity.Manufacturer[ manufacturerId
=1 ], try merging the detached and try the remove
again.
実行結果
例外!?
はまりポイント①
 削除だけできません問題
(C) CASAREAL, Inc. All rights reserved. 33
【再確認】エンティティの状態遷移
(C) CASAREAL, Inc. All rights reserved. 34
NEW
状態
MANAGED
状態
REMOVED
状態
DETACHED
状態
DB
persist()
remove()merge()
detach()
clear()
コミット
find()
flush()
コミット
refresh()
MANAGED状態
じゃないと
remove()できない
EntityTransaction tx = em.getTransaction();
tx.begin();
Manufacturer m = new Manufacturer();
m.manufacturerId(1);
m.setName("FUGA");
em.merge(m);
em.remove(m);
em.flush();
tx.commit();
merge()して削除
(C) CASAREAL, Inc. All rights reserved. 35
merge()すれば
remove()できるはず!?
merge()して削除
(C) CASAREAL, Inc. All rights reserved. 36
Exception in thread "main"
java.lang.IllegalArgumentException: Entity must
be managed to call remove:
com.example.entity.Manufacturer[ manufacturerId
=1 ], try merging the detached and try the remove
again.
実行結果
同じ例外!?
MANAGEDになってない!?
はまりポイント②
 merge()できません問題
(C) CASAREAL, Inc. All rights reserved. 37
Javadocを確認
(C) CASAREAL, Inc. All rights reserved. 38
merge()に戻り値がある!?
JSR 338(JPA 2.1の仕様)を確認
 3.2.7.1 Merging Detached Entity State
エンティティXがDETACHED状態の場合、
Xと同じ識別子を持つMANAGED状態のX’にコピー
される
またはMANAGED状態のX’が新規生成される
(C) CASAREAL, Inc. All rights reserved. 39
merge()の引数のコピーがMANAGED状態になり、
それが戻り値となる
→引数自体はMANAGED状態にならない!
EntityTransaction tx = em.getTransaction();
tx.begin();
Manufacturer m = new Manufacturer();
m.manufacturerId(1);
m.setName("FUGA");
Manufacturer managedManu = em.merge(m);
em.remove(managedManu);
em.flush();
tx.commit();
削除プログラムを修正
(C) CASAREAL, Inc. All rights reserved. 40
merge()の戻り値をremove()
削除プログラムを修正
(C) CASAREAL, Inc. All rights reserved. 41
[EL Fine]: sql: Connection(1168076863)--SELECT MANUFACTURER_ID,
ADDRESSLINE1, ADDRESSLINE2, CITY, EMAIL, FAX, NAME, PHONE, REP,
STATE, ZIP FROM MANUFACTURER WHERE (MANUFACTURER_ID = ?)
bind => [1]
[EL Fine]: sql: Connection(1168076863)--DELETE FROM
MANUFACTURER WHERE (MANUFACTURER_ID = ?)
bind => [1]
実行結果
ちゃんと削除されてる!
別解
 別解①:find()で取得したエンティティ
をremove()する
find()したものはMANAGED状態
 別解②:DELETE文を使う
DBへのアクセスが1回で済む
(C) CASAREAL, Inc. All rights reserved. 42
もう少し詳しく
 merge()でもINSERTは可能
 persist()は主キー重複の際は例外発生、
merge()は主キー重複の際は例外にならず、
SELECT後にUPDATEする
 flush()時に、MANAGED状態のエンティティ
と、DBとの差分(変更分)を一気に反映す
る
 SQL発行タイミング等はJPA実装によって異
なる
(C) CASAREAL, Inc. All rights reserved. 43
③1対Nの
リレーション
(C) CASAREAL, Inc. All rights reserved. 44
リレーション
 @OneToMany、@ManyToOneで表現
(C) CASAREAL, Inc. All rights reserved. 45
@Entity
public class Manufacturer { // 製造者
@OneToMany(・・・)
private List<Product> productList;
・・・
@Entity
public class Product { // 製品
@ManyToOne(・・・)
private Manufacturer manufacturer;
・・・
カスケード
 関連のあるエンティティに対して、
道連れに同じ操作を行う
CascadeTypeはALL、DETACH、FLUSH、
PERSIST、REFRESH、REMOVEの6種類
(C) CASAREAL, Inc. All rights reserved. 46
@Entity
public class Manufacturer {
@OneToMany(cascade = CascadeType.ALL)
private List<Product> productList;
・・・
カスケードの活用例
 受注(1側)と受注明細(N側)を一括登録
(C) CASAREAL, Inc. All rights reserved. 47
受注 order = new 受注(・・・);
order.addDetail(new 受注明細(・・・));
order.addDetail(new 受注明細(・・・));
order.addDetail(new 受注明細(・・・));
// 3つの受注明細も同時にINSERTされる
em.persist(order);
フェッチ
 関連のあるエンティティを、
どのタイミングで読み込むか
 FetchType.EAGER:即時読み込み
 FetchType.LAZY:遅延読み込み
(C) CASAREAL, Inc. All rights reserved. 48
@Entity
public class Manufacturer {
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.EAGER)
private List<Product> productList;
・・・
よくあるサンプル
 社員(Employee)と部署(Department)
社員:部署はN:1
(C) CASAREAL, Inc. All rights reserved. 49
dept_id name
1 SALES
2 DEVELOP
emp_id name dept_id
101 Y.Aragaki 1
102 R.Matsui 1
103 E.Ikuta 2
104 R.Sakurai 2
部署を1つ削除
(C) CASAREAL, Inc. All rights reserved. 50
EntityTransaction tx = em.getTransaction();
Department d = em.find(Department.class, 1);
em.remove(d);
tx.commit();
部署ID=1の部署を削除
削除した結果
(C) CASAREAL, Inc. All rights reserved. 51
部署だけでなく、
社員も消えてる!?
はまりポイント③
 データ吹っ飛びました問題
(C) CASAREAL, Inc. All rights reserved. 52
何故こうなったのか
(C) CASAREAL, Inc. All rights reserved. 53
@Entity
public class Department {
・・・
@OneToMany(mappedBy = "department",
cascade = CascadeType.ALL,
fetch = FetchType.EAGER)
private List<Employee> employeeList;
CascadeType.ALL
かつ
FetchType.EAGER
何故こうなったのか
(C) CASAREAL, Inc. All rights reserved. 54
EntityTransaction tx = em.getTransaction();
Department d = em.find(Department.class, 1);
em.remove(d);
tx.commit(); このタイミングで、
関連する社員も
同時に読み込まれる
部署と道連れに
社員も削除される
ログ
(C) CASAREAL, Inc. All rights reserved. 55
SELECT DEPT_ID, NAME FROM DEPARTMENT WHERE
(DEPT_ID = ?)
bind => [1]
SELECT EMP_ID, NAME, DEPT_ID FROM EMPLOYEE WHERE
(DEPT_ID = ?)
bind => [1]
DELETE FROM EMPLOYEE WHERE (EMP_ID = ?)
bind => [101]
DELETE FROM EMPLOYEE WHERE (EMP_ID = ?)
bind => [102]
DELETE FROM DEPARTMENT WHERE (DEPT_ID = ?)
bind => [1]
解決策
 カスケードはALL禁止!
IDEで自動生成すると、ALLになっている
場合があるので注意
 フェッチは基本的にLAZY!
(C) CASAREAL, Inc. All rights reserved. 56
エンティティ自動生成時の注意点
 自動生成時に、デフォルトで
CascadeType.ALLになることがある
 自動生成後は、必ずカスケード設定を
確認しましょう!
(C) CASAREAL, Inc. All rights reserved. 57
動的にフェッチ戦略を変える方法
 時間の都合上、キーワードのみご紹介
方法①:JPQLでJOIN FETCH文を使う
方法②:Entity Graphを使う
(C) CASAREAL, Inc. All rights reserved. 58
動的にカスケード戦略を変える方法
 EclipseLinkの独自機能
https://wiki.eclipse.org/EclipseLink/Examp
les/JPA/Dynamic#Relationships より
試したかったけど、サンプルコードのリン
クが切れてて確認できず(泣)
 JPAの標準機能になってほしい!
(C) CASAREAL, Inc. All rights reserved. 59
OneToManyMapping mapping = ・・・;
mapping.setCascadeMerge(true);
④Java Persistence
Query Language
(JPQL)
(C) CASAREAL, Inc. All rights reserved. 60
JPQLとは?
 JPA専用の問合せ言語
 SQLに似て非なるもの
 SELECT文、UPDATE文、DELETE文の3種類
INSERT文は無い
(C) CASAREAL, Inc. All rights reserved. 61
JPQLのメリット
 DB製品のSQL方言などに依存せず、問合せ
を記述できるので、ポータビリティが高い
 ただし、検証は自己責任でお願いします
 事例(@kikutaro_さん)
 GlassFish+SQL Serverのアプリを、
組込GlassFish+Derbyに移殖
 https://speakerdeck.com/kikutaro/chu-
metefalse-java-ee-kai-fa-karaxue-ndakoto-
jjug-ccc-2014-spring
(C) CASAREAL, Inc. All rights reserved. 62
基本的な使い方
(C) CASAREAL, Inc. All rights reserved. 63
String jpql = “SELECT m FROM Manufacturer m ”
+ “WHERE m.name LIKE :name”;
TypedQuery<Manufacturer> query =
em.createQuery(jpql, Manufacturer.class);
query.setParameter(“name”, “B%”);
List<Manufacturer> list = query.getResultList();
for (Manufacturer m : list) {
System.out.println(m.getManufacturerId()
+ ":" + m.getName());
}
基本的な使い方
(C) CASAREAL, Inc. All rights reserved. 64
[EL Fine]: sql: Connection(1168076863)--SELECT MANUFACTURER_ID,
ADDRESSLINE1, ADDRESSLINE2, CITY, EMAIL, FAX, NAME, PHONE, REP,
STATE, ZIP FROM MANUFACTURER WHERE NAME LIKE ?
bind => [B%]
19971233:Bills Bank and Sons
19985590:Birders United
19955564:Birders United
19955565:Birders United
19984681:Birders United
19984682:Birders United
19941212:Birders United
19987296:Birders United
実行結果
SQLに変換して
実行される
よくある間違い
(C) CASAREAL, Inc. All rights reserved. 65
String jpql = “select m from manufacturer m ”
+ “where name like :name”;
これはJPQLではなく、
ほぼSQL!
Exception in thread "main"
java.lang.IllegalArgumentException: An exception occurred
while creating a query in EntityManager:
Exception Description: Problem compiling [select m from
manufacturer m where m.name like :name].
[14, 26] The abstract schema type 'manufacturer' is
unknown.
実行結果
はまりポイント④
 JPQLのつもりがSQL書いちゃった問題
(C) CASAREAL, Inc. All rights reserved. 66
SQLとJPQLの違い①
FROM句に別名が必須(識別変数)
(C) CASAREAL, Inc. All rights reserved. 67
○ SELECT m FROM Manufacturer m;
× SELECT Manufacturer FROM Manufacturer;
識別変数が必須
(identification variable)
SQLとJPQLの違い②
列抽出では識別変数が必須
(C) CASAREAL, Inc. All rights reserved. 68
○ SELECT m.manufacturerId, m.name
FROM Manufacturer m;
× SELECT manufacturerId, name
FROM Manufacturer m;
SQLとしては正しいが、
JPQLとしては正しくない
SQLとJPQLの違い③
JPQLは一部Case Sensitive
 SELECTなどのJPQLの予約語
→大文字・小文字は区別されない
 エンティティクラス名・プロパティ名など
→大文字・小文字が区別される
 識別変数→大文字・小文字は区別されない
(C) CASAREAL, Inc. All rights reserved. 69
○ SELECT m FROM Manufacturer m;
○ select m from Manufacturer m;
× select m from manufacturer m;
○ select M from Manufacturer m;
JPQLは基本的に
Case Sensitiveと
考えた方がいい!
SQLとJPQLの違い④
副問い合わせ
 JSR 338 4.6.16 Subqueries
副問い合わせはWHERE句またはHAVING句で
使用できる。
(C) CASAREAL, Inc. All rights reserved. 70
FROM句では副問い合わせが使えない!
※JSRには「今後のバージョンで考えるかも」と書いてある
JPQLのスペルミスを防ぐ方法①
NetBeansのJPQL実行ツール
 persistence.xmlを右クリック
→[JPQL問い合わせの実行]
Ctrl+Spaceで補完が可能
(C) CASAREAL, Inc. All rights reserved. 71
JPQLのスペルミスを防ぐ方法②
名前付きクエリ
 エンティティクラスに@NamedQueryを付加
 Ctrl+Spaceで補完が可能
 JPQLをエンティティに集約できるので便利
(C) CASAREAL, Inc. All rights reserved. 72
まとめ
(C) CASAREAL, Inc. All rights reserved. 73
まとめ
JPAのメリット
 Java EEの標準技術であること
 設定ファイルがほぼ不要
 カスケードによる一括処理
 EntityManagerやJPQLによる、
DB製品に依存しない問合せ
(C) CASAREAL, Inc. All rights reserved. 74
まとめ
JPAのはまりポイント
 エンティティの状態が大切!
merge()とremove()は特に注意!
 CascadeType.ALLは禁止!
 JPQLはSQLではありません!
 JPA実装やDB製品によって挙動が異なる
場合がありますので、必ずログを出して、
挙動を確かめながら開発しましょう!
(C) CASAREAL, Inc. All rights reserved. 75
紹介しきれなかった
はまりポイント
 EclipseLinkだと勝手にパラメータ化され
ちゃう問題
http://masatoshitada.hatenadiary.jp/entry
/2014/12/21/100818
 JOINしてるのに列が取れてない問題
 DISTINCTの意味が違う問題
(C) CASAREAL, Inc. All rights reserved. 76
さらに勉強したい方へ
 書籍
マスタリングJava EE 5 第2版
Beginning Java EE 6
Javaパフォーマンス←NEW!!
 公式資料
Java EE 7 Tutorial Chapter 37~44(英語)
JSR 338(英語)
(C) CASAREAL, Inc. All rights reserved. 77
さらに勉強したい方へ
 勉強会情報など
はまる!JPA(@makingさん)
金魚本に載ってないJPQLの話
(@megascusさん)
JPAの同時実行制御とロック(拙著)
 今日この後!
大規模な負荷でもドキドキしない為の
Java EE(@nagaseyasuhitoさん)
(C) CASAREAL, Inc. All rights reserved. 78
今回のソースコード
 GitHubにアップしています
https://github.com/MasatoshiTada/hamaru
-jpa-light
(C) CASAREAL, Inc. All rights reserved. 79
MVC 1.0(Java EE 8)の
サンプルもあります!
Enjoy JPA!!
 ご清聴ありがとうございました!
(C) CASAREAL, Inc. All rights reserved. 80

More Related Content

What's hot

イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション土岐 孝平
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) Hironobu Isoda
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetupこれで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線MeetupMasatoshi Tada
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャーssuser070fa9
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Ryosuke Uchitate
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 

What's hot (20)

イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetupこれで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
 
Metaspace
MetaspaceMetaspace
Metaspace
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 

Viewers also liked

Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
金魚本に載ってないJpqlの話 #glassfishjp
金魚本に載ってないJpqlの話 #glassfishjp金魚本に載ってないJpqlの話 #glassfishjp
金魚本に載ってないJpqlの話 #glassfishjpSatoshi Kubo
 
はまる!!JPA #glassfish_jp #javaee
はまる!!JPA #glassfish_jp #javaeeはまる!!JPA #glassfish_jp #javaee
はまる!!JPA #glassfish_jp #javaeeToshiaki Maki
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Masatoshi Tada
 
JPAの同時実行制御とロック20140518 #ccc_r15 #jjug_ccc
JPAの同時実行制御とロック20140518 #ccc_r15 #jjug_cccJPAの同時実行制御とロック20140518 #ccc_r15 #jjug_ccc
JPAの同時実行制御とロック20140518 #ccc_r15 #jjug_cccMasatoshi Tada
 
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho ltNetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho ltMasatoshi Tada
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2Masatoshi Tada
 
Getting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafGetting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafMasatoshi Tada
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallMasatoshi Tada
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Kohei Saito
 

Viewers also liked (10)

Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
金魚本に載ってないJpqlの話 #glassfishjp
金魚本に載ってないJpqlの話 #glassfishjp金魚本に載ってないJpqlの話 #glassfishjp
金魚本に載ってないJpqlの話 #glassfishjp
 
はまる!!JPA #glassfish_jp #javaee
はまる!!JPA #glassfish_jp #javaeeはまる!!JPA #glassfish_jp #javaee
はまる!!JPA #glassfish_jp #javaee
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
 
JPAの同時実行制御とロック20140518 #ccc_r15 #jjug_ccc
JPAの同時実行制御とロック20140518 #ccc_r15 #jjug_cccJPAの同時実行制御とロック20140518 #ccc_r15 #jjug_ccc
JPAの同時実行制御とロック20140518 #ccc_r15 #jjug_ccc
 
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho ltNetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
Getting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafGetting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with Thymeleaf
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 Fall
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
 

Similar to はまる!JPA(初学者向けライト版)

Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_cccPivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_cccMasatoshi Tada
 
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているKoichi Sakata
 
はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPAkawaba
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdiLt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdiNorito Agetsuma
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpYuji Kubota
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)Takuya Azumi
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強Kiyoshi Ogawa
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018Yoshio Terada
 

Similar to はまる!JPA(初学者向けライト版) (14)

Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_cccPivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
 
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
 
はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPA
 
Java class design
Java class designJava class design
Java class design
 
Miyazaki.js vol.2
Miyazaki.js vol.2Miyazaki.js vol.2
Miyazaki.js vol.2
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
Spring “BigData”
Spring “BigData”Spring “BigData”
Spring “BigData”
 
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdiLt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdi
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
 

More from Masatoshi Tada

基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装Masatoshi Tada
 
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説Masatoshi Tada
 
Java EE 8新機能解説 -Bean Validation 2.0編-
Java EE 8新機能解説 -Bean Validation 2.0編-Java EE 8新機能解説 -Bean Validation 2.0編-
Java EE 8新機能解説 -Bean Validation 2.0編-Masatoshi Tada
 
JSUG SpringOne 2017報告会
JSUG SpringOne 2017報告会JSUG SpringOne 2017報告会
JSUG SpringOne 2017報告会Masatoshi Tada
 
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるとにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるMasatoshi Tada
 
Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~
Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~
Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~Masatoshi Tada
 
Spring Data JPAによるデータアクセス徹底入門 #jsug
Spring Data JPAによるデータアクセス徹底入門 #jsugSpring Data JPAによるデータアクセス徹底入門 #jsug
Spring Data JPAによるデータアクセス徹底入門 #jsugMasatoshi Tada
 

More from Masatoshi Tada (7)

基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
 
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
 
Java EE 8新機能解説 -Bean Validation 2.0編-
Java EE 8新機能解説 -Bean Validation 2.0編-Java EE 8新機能解説 -Bean Validation 2.0編-
Java EE 8新機能解説 -Bean Validation 2.0編-
 
JSUG SpringOne 2017報告会
JSUG SpringOne 2017報告会JSUG SpringOne 2017報告会
JSUG SpringOne 2017報告会
 
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるとにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みる
 
Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~
Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~
Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~
 
Spring Data JPAによるデータアクセス徹底入門 #jsug
Spring Data JPAによるデータアクセス徹底入門 #jsugSpring Data JPAによるデータアクセス徹底入門 #jsug
Spring Data JPAによるデータアクセス徹底入門 #jsug
 

Recently uploaded

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Recently uploaded (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

はまる!JPA(初学者向けライト版)