---
title: Spring Data JPAによるデータアクセス徹底入門 #jsug
tags:  #java #spring #jpa  
author: [tada](https://www.docswell.com/user/MasatoshiTada)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/ML7L3L1VER.jpg?width=480
description: JSUG Spring Fest 2017での発表資料です。
published: May 26, 22
canonical: https://www.docswell.com/s/MasatoshiTada/ZX3W25-spring-data-jpa
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/ML7L3L1VER.jpg)

1
1JWPUBMೝఆߨࢣ͕‫͑ڭ‬Δʂ
4QSJOH%BUB+1&quot;ʹΑΔ
σʔλΞΫηεపఈೖ໳
‫ ג‬ΧαϨΞϧଟాਅහ
+46(4QSJOH&#039;FTU
೥݄೔ ۚ
(C) CASAREAL, Inc. All rights reserved.


# Page. 2

![Page Image](https://bcdn.docswell.com/page/54EMDMWNEW.jpg)

&lt;࣭໰&gt;03ϚούʔɺԿΛ࢖ͬͯ·͔͢ʁ
ᶃ +1&quot;PS)JCFSOBUF
ᶄ .Z#BUJT
ᶅ 4QSJOH+%#$
ᶆ ͦͷଞ
2
(C) CASAREAL, Inc. All rights reserved.


# Page. 3

![Page Image](https://bcdn.docswell.com/page/ZPER4VY4E9.jpg)

&lt;࣭໰&gt;ͳͥ+1&quot;Λબͼ·͔ͨ͠ʁ
ᶃ ඪ४ٕज़͔ͩΒ
ᶄ ੈͷதʹ৘ใ͕ଟ͍͔Β
ᶅ ཁ݅ʹద͍͔ͯͨ͠Β
ᶆ ͦͷଞ
3
(C) CASAREAL, Inc. All rights reserved.


# Page. 4

![Page Image](https://bcdn.docswell.com/page/NP7X2ZGZJX.jpg)

͜ͷηογϣϯʹ͍ͭͯ
▸ 4QSJOH%BUB+1&quot;ͷ‫ૅج‬஌ࣝΛஸೡʹղઆʂ
▸ +1&quot;੒෼͕ଟΊͰ͢😅
▸ ຊ೔ͷαϯϓϧίʔυ͸(JU)VCʹ͋Γ·͢
▸ IUUQTHJUIVCDPN.BTBUPTIJ5BEBTQSJOHEBUB
KQBEBJUPLBJ
4
(C) CASAREAL, Inc. All rights reserved.


# Page. 5

![Page Image](https://bcdn.docswell.com/page/637KM84VED.jpg)

ࣗ‫঺ݾ‬հ
▸ ଟాਅහʢ!TVLF@NBTBʣ
▸ ‫ݚ‬मτϨʔφʔ!ΧαϨΞϧ
▸ 4QSJOH+BWB&amp;&amp;
▸ 1JWPUBMೝఆߨࢣʢࠃ಺Ͱ͸਺ਓʣ
▸ +46(ελοϑɺ(6(+ӡӦϝϯόʔ
5
(C) CASAREAL, Inc. All rights reserved.


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4LJ3Y2DQ75.jpg)

ΧαϨΞϧձࣾ঺հ
▸ ৭Μͳϓϩάϥϛϯά‫ޠݴ‬ͷ‫ݚ‬मΛ΍ͬͯ·͢ʂ
6
(C) CASAREAL, Inc. All rights reserved.


# Page. 7

![Page Image](https://bcdn.docswell.com/page/V8JD5ZPWJG.jpg)

$PSF4QSJOH
▸ 1JWPUBMೝఆτϨʔχϯά
▸ ओཁςΫϊϩδʔΛ໢ཏ
▸ ಺෦ͷ࢓૊Έ·Ͱৄࡉʹֶशʢ%*͚ͩͰ೔ؒʣ
▸ ࣍ճ࣮ࢪ෼͔Β4QSJOHʹରԠʂ
▸ ೥݄೔ʙ೔ɺ೔ʙ೔ͷ‫ܭ‬೔ؒ
▸ IUUQTXXXDBTBSFBMDPKQMTTFSWJDFPQFOTFNJOBSQJWPUBM
Q
7
(C) CASAREAL, Inc. All rights reserved.


# Page. 8

![Page Image](https://bcdn.docswell.com/page/4VEPGDNXE8.jpg)

ͦͷଞͷ4QSJOHؔ࿈τϨʔχϯάҰཡ
‫ݚ‬म໊
೔਺
Spring Web
4೔ؒ
Spring MVCͷ‫͔ૅج‬ΒԠ༻·Ͱ
2೔ؒ
Spring Bootͷ‫͔ૅج‬ΒԠ༻·Ͱ
Spring Boot
Developer
Spring Cloud
Services
3೔ؒ
આ໌
Spring CloudʹΑΔMicroservices
։ൃ
8
(C) CASAREAL, Inc. All rights reserved.


# Page. 9

![Page Image](https://bcdn.docswell.com/page/L27V61K3JQ.jpg)

&lt;ࠂ஌&gt;1JWPUBM$MPVE&#039;PVOESZ೔ϋϯζΦϯ
▸ ݄೔ ໦ 
▸ 1JWPUBM$MPVE&#039;PVOESZΛར༻ͨ͠ΞϓϦέʔ
γϣϯ։ൃΛମ‫͢·͖Ͱݧ‬ʂ
▸ ແྉ
▸ IUUQTXXXDBTBSFBMDPKQMTTFSWJDF
FWFOUTFNJOBSMJOFVQGT
9
(C) CASAREAL, Inc. All rights reserved.


# Page. 10

![Page Image](https://bcdn.docswell.com/page/Z5JGN2QYEL.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
10
(C) CASAREAL, Inc. All rights reserved.


# Page. 11

![Page Image](https://bcdn.docswell.com/page/V47QQPK67P.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
11
(C) CASAREAL, Inc. All rights reserved.


# Page. 12

![Page Image](https://bcdn.docswell.com/page/DKE4NYPMJ1.jpg)

4QSJOH%BUB+1&quot;ͱ͸ʁ
▸ 4QSJOH%BUB+1&quot;4QSJOH%BUB +1&quot;
12
(C) CASAREAL, Inc. All rights reserved.


# Page. 13

![Page Image](https://bcdn.docswell.com/page/PL71569YJG.jpg)

4QSJOH%BUBͱ͸ʁ
▸ ༷ʑͳσʔλΞΫηεٕज़Λಉ͡Α͏
ʹѻ͑ΔΑ͏ʹ͢ΔϓϩδΣΫτ
▸ &quot;1*Λந৅Խɾ‫ڞ‬௨Խ
▸ ൃੜ͢Δྫ֎Λ‫ڞ‬௨ྫ֎ʹม‫׵‬
▸ ϦϙδτϦΠϯλϑΣʔεͰ؆୯ʹॻ͚Δ
▸ +1&quot;ɺ(FNpSFɺ.POHP%#ɺ3FEJTɺ
$BTTBOESBͳͲଟ͘ͷٕज़ʹରԠ
13
(C) CASAREAL, Inc. All rights reserved.


# Page. 14

![Page Image](https://bcdn.docswell.com/page/8G7W5WQ1E2.jpg)

+1&quot;ͱ͸ʁ
▸ +BWB&amp;&amp;ͷҰ෦ͱͯ͠ඪ४Խ
͞ΕͨσʔλΞΫηεٕज़ͷ
࢓༷
▸ ࣮ମ͸+43ͱ͍͏จॻ
▸ ܾ·ͬͯΔͷ͸ΠϯλϑΣʔεɾ
Ξϊςʔγϣϯɾྫ֎͕΄ͱΜ
Ͳ
14
(C) CASAREAL, Inc. All rights reserved.


# Page. 15

![Page Image](https://bcdn.docswell.com/page/W4JZN5WXJ3.jpg)

+1&quot;࣮૷ϥΠϒϥϦ
ࠓճ͸ίϨ
ᶃ )JCFSOBUF
▸ 03Ϛούʔͷ૲෼͚తଘࡏ
▸ 4QSJOH%BUB+1&quot;͸‫ج‬ຊతʹίϨ
ᶄ &amp;DMJQTF-JOL
▸ +1&quot;ͷࢀর࣮૷
▸ (MBTT&#039;JTI8FC-PHJDͳͲʹ಺แ
※ଞͷ࣮૷͸JPA 2.1(Java EE 7)ʹ
ɹରԠ͍ͯ͠ͳ͍
15
(C) CASAREAL, Inc. All rights reserved.


# Page. 16

![Page Image](https://bcdn.docswell.com/page/KYE689GPJV.jpg)

+1&quot;ͷಛ௃
▸ %#੡඼ʹґଘ͠ͳ͍ૢ࡞͕‫ه‬ड़Ͱ͖Δ
▸ ΤϯςΟςΟΛςʔϒϧͱରͰ࡞Δ
▸ ʮ4&amp;-&amp;$5ͷ݁ՌͱରʯͰ͸ͳ͍ͷͰ஫ҙʂ
▸ ରଟͷΑ͏ͳϦϨʔγϣϯΛද‫͖Ͱݱ‬Δ
16
(C) CASAREAL, Inc. All rights reserved.


# Page. 17

![Page Image](https://bcdn.docswell.com/page/5GE59NVP74.jpg)

4QSJOH%BUB+1&quot;Λ࢖͓͏
▸ 4QSJOH#PPUͷ৔߹
&lt;dependency&gt;
&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
&lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
&lt;/dependency&gt;
17
(C) CASAREAL, Inc. All rights reserved.


# Page. 18

![Page Image](https://bcdn.docswell.com/page/V972253Z7R.jpg)

4QSJOH%BUB+1&quot;Λ࢖͓͏
▸ ඇ4QSJOH#PPUͷ৔߹
&lt;dependency&gt;
&lt;groupId&gt;org.springframework.data&lt;/groupId&gt;
&lt;artifactId&gt;spring-data-jpa&lt;/artifactId&gt;
&lt;version&gt;2.0.1.RELEASE&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
&lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt;
&lt;version&gt;5.2.12.Final&lt;/version&gt;
&lt;/dependency&gt;
18
(C) CASAREAL, Inc. All rights reserved.


# Page. 19

![Page Image](https://bcdn.docswell.com/page/5DJYYK1NJM.jpg)

42-ϩάͷग़ྗ͸ඞਢʂ
▸ τϥϒϧγϡʔςΟϯάͰॏཁʂ
▸ 4QSJOH#PPUɿBQQMJDBUJPOQSPQFSUJFTʹԼ‫ه‬Λઃఆ
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=\
trace
▸ ඇ4QSJOH#PPUɿMPHCBDLYNMʹԼ‫ه‬Λઃఆ
&lt;logger name=&quot;org.hibernate.SQL&quot; level=&quot;DEBUG&quot; /&gt;
&lt;logger name=&quot;org.hibernate.type.descriptor.sql.BasicBinder&quot;
level=&quot;TRACE&quot; /&gt;
※hibernate.show_sql=trueͩͱϩάͷϑΥʔϚοτΛࢦఆͰ͖ͳ͍ͷͰ͜ΕΒͷํ๏͕Φεεϝ
(C) CASAREAL, Inc. All rights reserved.
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/2V7NPR2VE8.jpg)

42-ϩάΛಡΈ΍͘͢͢Δ
▸ վߦ΍Πϯσϯτ͕ೖΔΑ͏ʹͳΔ
▸ 4QSJOH#PPUɿBQQMJDBUJPOQSPQFSUJFTʹԼ‫ه‬Λઃఆ
spring.jpa.properties.hibernate.format_sql=true
▸ ඇ4QSJOH#PPUɿ+BWB$POpHʹԼ‫ه‬Λ‫ه‬ड़
▸ IUUQTHJUIVCDPN.BTBUPTIJ5BEBTQSJOHGPSTQSJOHCPPUCMPCNBTUFS
TQSJOHTSDNBJOKBWBDPNFYBNQMFQFSTJTUFODFDPOpH
+QB$POpHKBWB-
20
(C) CASAREAL, Inc. All rights reserved.


# Page. 21

![Page Image](https://bcdn.docswell.com/page/GYJ93M1VJ3.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
21
(C) CASAREAL, Inc. All rights reserved.


# Page. 22

![Page Image](https://bcdn.docswell.com/page/5GJ8ML44JD.jpg)

+1&quot;ͷΞʔΩςΫνϟ
&amp;OUJUZ
.BOBHFS
&#039;BDUPSZ
ӬଓԽίϯςΩετ
ੜ੒
&amp;OUJUZ
&amp;OUJUZ
&amp;OUJUZ
&amp;OUJUZ
&amp;OUJUZ
.BOBHFS
DB
ΫϥΠΞϯτ
ϓϩάϥϜ
22
(C) CASAREAL, Inc. All rights reserved.


# Page. 23

![Page Image](https://bcdn.docswell.com/page/MLJL3L6V7R.jpg)

ΤϯςΟςΟ
▸ ‫ج‬ຊతʹςʔϒϧͱ
ରͰ࡞Δ
▸ ʮ4&amp;-&amp;$5จͱରʯ
Ͱ͸ͳ͍ʂ
@Entity
public class Product {
@Id
private Integer id;
private String name;
// setter/getter
}
▸ ओΩʔϑΟʔϧυඞ
ਢ
23
(C) CASAREAL, Inc. All rights reserved.


# Page. 24

![Page Image](https://bcdn.docswell.com/page/547MDM5N7W.jpg)

&amp;OUJUZ.BOBHFS
▸ ΤϯςΟςΟͷʮঢ়ଶʯΛૢ࡞͢Δ૭‫ޱ‬
▸ ʮ$36%ૢ࡞ͷ૭‫ޱ‬ʯͰ͸ͳ͍ͷͰ஫ҙʂ
▸ ‫݁ࡧݕ‬Ռ͸ӬଓԽίϯςΩετʢ‫ޙ‬ड़ʣʹอଘ
▸ Πϯελϯε͸
τϥϯβΫγϣϯ୯Ґ
24
(C) CASAREAL, Inc. All rights reserved.


# Page. 25

![Page Image](https://bcdn.docswell.com/page/ZP7R4V3479.jpg)

&amp;OUJUZ.BOBHFS&#039;BDUPSZ
▸ &amp;OUJUZ.BOBHFSΛੜ੒͢Δ
▸ Πϯεϯλϯε͸ΞϓϦέʔγϣϯͰͭͷΈ
ʢʹγϯάϧτϯʣ
25
(C) CASAREAL, Inc. All rights reserved.


# Page. 26

![Page Image](https://bcdn.docswell.com/page/NPJX2Z4ZEX.jpg)

ӬଓԽίϯςΩετ
▸ ΤϯςΟςΟͷΩϟογϡͷΑ͏ͳ΋ͷ
▸ ΤϯςΟςΟ͕ӬଓԽίϯςΩετʹ‫·ؚ‬Ε͍ͯΔ͔
Ͳ͏͔͕ඇৗʹॏཁ
▸ τϥϯβΫγϣϯ୯ҐͰ
ੜ੒ɾഁ‫͞غ‬ΕΔ
26
(C) CASAREAL, Inc. All rights reserved.


# Page. 27

![Page Image](https://bcdn.docswell.com/page/63JKM8ZV7D.jpg)

ΤϯςΟςΟͷʮঢ়ଶʯ
ঢ়ଶ
NEW
આ໌
new͞Εͨ͹͔Γ
MANAGED ӬଓԽίϯςΩετͰ؅ཧ͞Ε͍ͯΔ
DETACHED ӬଓԽίϯςΩετ͔Β෼཭͞Ε͍ͯΔ
REMOVED ࡟আ͕༧໿͞Ε͍ͯΔ
27
(C) CASAREAL, Inc. All rights reserved.


# Page. 28

![Page Image](https://bcdn.docswell.com/page/4LE3Y2XQJ5.jpg)

&amp;OUJUZ.BOBHFSͷϝιου
ϝιου
આ໌
find()
ओΩʔ‫ࡧݕ‬
persist()
1݅ͷӬଓԽ
remove()
1݅ͷ࡟আ
merge()
ӬଓԽίϯςΩετ؅ཧԼʹ͢Δ
detach()
ӬଓԽίϯςΩετ؅ཧ֎ʹ͢Δ
flush()
มߋΛDB΁൓ө
clear()
ӬଓԽίϯςΩετΛΫϦΞ
refresh()
ΤϯςΟςΟͷ಺༰ΛDB࠷৽ʹ্ॻ͖
28
(C) CASAREAL, Inc. All rights reserved.


# Page. 29

![Page Image](https://bcdn.docswell.com/page/V8ED5Z2WEG.jpg)

˒ॏཁ˒ΤϯςΟςΟͷঢ়ଶભҠ
ӬଓԽίϯςΩετ
persist()
/&amp;8
ঢ়ଶ
detach()
clear()
%&amp;5&quot;$)&amp;%
ঢ়ଶ
.&quot;/&quot;(&amp;%
ঢ়ଶ
remove()
merge()
detach()
clear()
3&amp;.07&amp;%
ঢ়ଶ
find()
JPQL
flush()
refresh()
flush()
29
(C) CASAREAL, Inc. All rights reserved.


# Page. 30

![Page Image](https://bcdn.docswell.com/page/4V7PGD1X78.jpg)

ओΩʔ‫ࡧݕ‬
▸ ‫ج‬ຊతʹશϑΟʔϧυʹ૬౰͢Δྻ͕‫͞ࡧݕ‬ΕΔ
EntityManager em = …;
// ୈ1Ҿ਺ʹΤϯςΟςΟΫϥεɺୈ2Ҿ਺ʹओΩʔ஋
Product product = em.find(Product.class, 1);
select
product0_.id as id1_5_0_,
product0_.category_id as category4_5_0_,
product0_.name as name2_5_0_,
product0_.price as price3_5_0_,
product0_.vendor_id as vendor_i5_5_0_
from
product product0_
where
product0_.id=?
(C) CASAREAL, Inc. All rights reserved.
͜ΜͳSQL͕
ൃߦ͞ΕΔ
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/L2JV61Y3EQ.jpg)

௥Ճ
▸ ‫ج‬ຊతʹશϑΟʔϧυ͕*/4&amp;35͞ΕΔ
▸ */4&amp;35͠ͳ͍ϑΟʔϧυʹ͸!5SBOTJFOUΛ෇Ճ͢Δ
Product product = new Product(“Ε͍ͧ͏͜”, 100000L);
em.persist(product);
insert
into
product
(category_id, name, price, vendor_id, id)
values
(?, ?, ?, ?, ?)
31
(C) CASAREAL, Inc. All rights reserved.


# Page. 32

![Page Image](https://bcdn.docswell.com/page/Z5EGN29Y7L.jpg)

ߋ৽
▸ .&quot;/&quot;(&amp;%ঢ়ଶͷΤϯςΟςΟʹTFUUFSͰ஋Λ
ߋ৽ˠ൓ө
// find()Ͱ‫͢ࡧݕ‬ΔͱMANAGEDঢ়ଶ
Product product = em.find(Product.class, 1);
// ஋ͷߋ৽
product.setName(&quot;ߋ৽‫ޙ‬ͷ໊લ&quot;);
// ߋ৽ͷ൓ө(ίϛοτͰ΋OK)
em.flush();
32
(C) CASAREAL, Inc. All rights reserved.


# Page. 33

![Page Image](https://bcdn.docswell.com/page/V4JQQPW6JP.jpg)

ߋ৽
select … from product product0_ where product0_.id=?
binding parameter [1] as [INTEGER] - [1]
update product
set category_id=?, name=?, price=?, vendor_id=?
where id=?
binding parameter [1] as [INTEGER] - [1]
binding parameter [2] as [VARCHAR] - [ߋ৽‫ޙ‬ͷ໊લ]
binding parameter [3] as [BIGINT] - [100000]
binding parameter [4] as [INTEGER] - [1]
binding parameter [5] as [INTEGER] - [1]
33
(C) CASAREAL, Inc. All rights reserved.


# Page. 34

![Page Image](https://bcdn.docswell.com/page/DK74NYKME1.jpg)

NFSHF ʹΑΔߋ৽
▸ OFXͨ͠ΤϯςΟςΟΛNFSHF ͢Δ
Product product = new Product();
product.setId(1);
product.setName(“ߋ৽‫ޙ‬ͷ໊લ&quot;);
// merge()Ͱ΋ߋ৽Ͱ͖Δ
em.merge(product);
em.flush();
34
(C) CASAREAL, Inc. All rights reserved.


# Page. 35

![Page Image](https://bcdn.docswell.com/page/PLJ156XYEG.jpg)

NFSHF ʹΑΔߋ৽
▸ 4&amp;-&amp;$5จʴ61%&quot;5&amp;จ͕ൃߦ͞ΕΔ
select … from product product0_ where product0_.id=?
binding parameter [1] as [INTEGER] - [1]
update product
set category_id=?, name=?, price=?, vendor_id=?
where id=?
binding parameter [1] as [INTEGER] - [null]
binding parameter [2] as [VARCHAR] - [ߋ৽‫ޙ‬ͷ໊લ]
binding parameter [3] as [BIGINT] - [null]
binding parameter [4] as [INTEGER] - [null]
binding parameter [5] as [INTEGER] - [1]
35
(C) CASAREAL, Inc. All rights reserved.


# Page. 36

![Page Image](https://bcdn.docswell.com/page/8GJW5WN172.jpg)

NFSHF ͷམͱ݀͠
▸ Ҿ਺ΤϯςΟςΟͷίϐʔ͕࡞ΒΕɺͦΕ͕໭
Γ஋͔ͭ.&quot;/&quot;(&amp;%ঢ়ଶʹͳΔ
▸ Ҿ਺ࣗମ͸.&quot;/&quot;(&amp;%ঢ়ଶʹͳΒͳ͍ͷͰ஫ҙ
Product mergedProduct = em.merge(product);
// ໭Γ஋͸MANAGEDঢ়ଶ
assertTrue(em.contains(mergedProduct));
// Ҿ਺ͷঢ়ଶ͸มΘΒͳ͍
assertFalse(em.contains(product));
36
(C) CASAREAL, Inc. All rights reserved.


# Page. 37

![Page Image](https://bcdn.docswell.com/page/W4EZN53XE3.jpg)

࡟আ
▸ .&quot;/&quot;(&amp;%ঢ়ଶͷΤϯςΟςΟΛSFNPWF ͢Δ
// find()Ͱ‫͢ࡧݕ‬ΔͱMANAGEDঢ়ଶ
Product product = em.find(Product.class, 30);
// REMOVEDঢ়ଶʹ͢Δ
em.remove(product);
// ߋ৽ͷ൓ө(ίϛοτͰ΋OK)
em.flush();
37
(C) CASAREAL, Inc. All rights reserved.


# Page. 38

![Page Image](https://bcdn.docswell.com/page/KY7689XPEV.jpg)

࡟আ
select … from product product0_ where product0_.id=?
binding parameter [1] as [INTEGER] - [30]
delete from product where id=?
binding parameter [1] as [INTEGER] - [30]
38
(C) CASAREAL, Inc. All rights reserved.


# Page. 39

![Page Image](https://bcdn.docswell.com/page/5G759NXPJ4.jpg)

࡟আͷΩϟϯηϧ
▸ EFUBDI ·ͨ͸DMFBS Ͱ%&amp;5&quot;$)&amp;%ঢ়ଶʹ͢Δ
// find()Ͱ‫͢ࡧݕ‬ΔͱMANAGEDঢ়ଶ
Product product = em.find(Product.class, 30);
// REMOVEDঢ়ଶʹ͢Δ
em.remove(product);
// DETACHEDঢ়ଶʹ͢Δ
em.detach(product);
// DETACHEDঢ়ଶͳͷͰDBʹ൓ө͞Εͳ͍
em.flush();
39
(C) CASAREAL, Inc. All rights reserved.


# Page. 40

![Page Image](https://bcdn.docswell.com/page/V9J225XZJR.jpg)

·ͱΊ
▸ ΤϯςΟςΟͷʮঢ়ଶʯʹ஫ҙ
▸ pOE ͰओΩʔ‫ࡧݕ‬
▸ QFSTJTU Ͱ௥Ճ
▸ ߋ৽͸pOE  TFUUFSͰߋ৽
▸ SFNPWF Ͱ࡟আ
40
(C) CASAREAL, Inc. All rights reserved.


# Page. 41

![Page Image](https://bcdn.docswell.com/page/5DEYYK8NEM.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
41
(C) CASAREAL, Inc. All rights reserved.


# Page. 42

![Page Image](https://bcdn.docswell.com/page/2VJNPRQV78.jpg)

+12-ͱ͸ʁ
▸ 42-ϥΠΫͳจ๏Ͱ4&amp;-&amp;$561%&quot;5&amp;%&amp;-&amp;5&amp;
Λ‫ه‬ड़͢Δ
▸ */4&amp;35͸ແ͍
▸ %#੡඼ʹґଘ͠ͳ͍ΫΤϦ͕‫ه‬ड़Մೳ
▸ %#‫ݻ‬༗‫ػ‬ೳʹ͍ͭͯ͸‫ޙ‬ड़
42
(C) CASAREAL, Inc. All rights reserved.


# Page. 43

![Page Image](https://bcdn.docswell.com/page/GYE93MDVE3.jpg)

‫ج‬ຊతͳ࢖͍ํ
▸ ୯Ұ‫ࡧݕ‬
TypedQuery&lt;Product&gt; query = em.createQuery(
&quot;SELECT p FROM Product p WHERE p.id = :id&quot;,
Product.class);
query.setParameter(&quot;id&quot;, 1);
Product product = query.getSingleResult();
▸ ෳ਺‫ࡧݕ‬
TypedQuery&lt;Product&gt; query = em.createQuery(
&quot;SELECT p FROM Product p WHERE p.id &lt;= :maxId&quot;
+ &quot; ORDER BY p.id&quot;, Product.class);
query.setParameter(&quot;maxId&quot;, 5);
List&lt;Product&gt; list = query.getResultList();
43
(C) CASAREAL, Inc. All rights reserved.


# Page. 44

![Page Image](https://bcdn.docswell.com/page/5GE8ML34ED.jpg)

࣮ߦ͢Δͱ42-ʹ຋༁͞ΕΔ
▸ ͲΜͳ42-͕ൃߦ͞ΕΔ͔͸+1&quot;࢓༷Ͱະఆٛ
ʹ‫׬‬શʹ࣮૷ґଘʢԼ‫ه‬͸)JCFSOBUFͷྫʣ
select
product0_.id as id1_5_,
product0_.category_id as category4_5_,
product0_.name as name2_5_,
product0_.price as price3_5_,
product0_.vendor_id as vendor_i5_5_
from
product product0_
where
product0_.id=?
(C) CASAREAL, Inc. All rights reserved.
44


# Page. 45

![Page Image](https://bcdn.docswell.com/page/MLEL3LVVJR.jpg)

+12-ͷ‫ج‬ຊจ๏
SELECT ࣝผม਺ FROM ΤϯςΟςΟ໊ [AS] ࣝผม਺
WHERE ࣝผม਺.ϓϩύςΟ໊ &lt;= :ύϥϝʔλ໊
▸ ࣝผม਺ʹΤϯςΟςΟͷผ໊ʢඞਢʣ
▸ ΤϯςΟςΟ໊΍ϓϩύςΟ໊͸ɺ
େจࣈখจࣈΛ‫۠ʹີݫ‬ผ͢ΔͷͰ஫ҙʂ
▸ 4&amp;-&amp;$5౳͸۠ผ͠ͳ͍͕େจࣈͷํ͕ؒҧ͑ʹ͍͘
45
(C) CASAREAL, Inc. All rights reserved.


# Page. 46

![Page Image](https://bcdn.docswell.com/page/54JMDMGNJW.jpg)

ίϯετϥΫλࣜ
▸ ඇΤϯςΟςΟͳΫϥεʹ΋ϚοϐϯάՄೳ
▸ ओͳ༻్͸ू‫ܭ‬
SELECT new com.example.demo.dto.CountDto(
od.product.id, COUNT(od))
FROM OrderDetail od GROUP BY od.product.id
ύοέʔδ໊෇͖ͳͷ͕ਏ͍ʜ
46
(C) CASAREAL, Inc. All rights reserved.


# Page. 47

![Page Image](https://bcdn.docswell.com/page/ZPJR4VZ4J9.jpg)

ͦͷଞͷ+12-Ͱग़དྷΔ͜ͱᶃ
▸ ݁߹ʢ*//&amp;3+0*/ɺ-&amp;&#039;5065&amp;3+0*/ɻৄࡉ͸‫ޙ‬
ड़ʣ
▸ #&amp;58&amp;&amp;/ɺ*/ɺ-*,&amp;ɺ&amp;9*454ɺ&quot;--ɺ&quot;/:ɺ$&quot;4&amp;
▸ (3061#:ɺ)&quot;7*/(
▸ ू‫਺ؔܭ‬ʢ.&quot;9 ɺ.*/ ɺ$06/5 ɺ46. ɺ
&quot;7( ͷͭʣ
▸ ෭໰߹ͤʢ8)&amp;3&amp;۟ͱ)&quot;7*/(۟ͰͷΈʣ
47
(C) CASAREAL, Inc. All rights reserved.


# Page. 48

![Page Image](https://bcdn.docswell.com/page/NPEX2Z9Z7X.jpg)

ͦͷଞͷ+12-Ͱग़དྷΔ͜ͱᶄ
▸ จࣈྻؔ਺ʢ$0/$&quot;5 ɺ46#453*/( ɺ53*. ɺ
-08&amp;3 ɺ611&amp;3 ɺ-&amp;/(5) ɺ-0$&quot;5&amp; ʣ
▸ ࢉज़ؔ਺ʢ&quot;#4 ɺ4235 ɺ.0% ɺ4*;&amp; ɺ
*/%&amp;9 ʣ
▸ ೔࣌ؔ਺ʢ$633&amp;/5@%&quot;5&amp;ɺ$633&amp;/5@5*.&amp;ɺ
$633&amp;/5@5*.&amp;45&quot;.1ʣ
▸ %#‫ݻ‬༗ؔ਺ͷ‫ͼݺ‬ग़͠ʢ‫ޙ‬ड़ʣ
48
(C) CASAREAL, Inc. All rights reserved.


# Page. 49

![Page Image](https://bcdn.docswell.com/page/63EKM8PVJD.jpg)

+12-Ͱग़དྷͳ͍͜ͱ
▸ */4&amp;35
▸ ू߹ԋࢉʢ6/*0/ɺ6/*0/&quot;--ɺ
*/5&amp;34&amp;$5ɺ&amp;9$&amp;15ʣ
▸ &#039;30.۟Ͱͷ෭໰߹ͤ
49
(C) CASAREAL, Inc. All rights reserved.


# Page. 50

![Page Image](https://bcdn.docswell.com/page/4L73Y24QE5.jpg)

·ͱΊ
▸ 42-ϥΠΫͳจ๏Ͱ%#ʹґଘ͠ͳ͍ΫΤϦΛ‫ه‬
ड़Մೳ
▸ Ͱ͖Δ͜ͱɾͰ͖ͳ͍͜ͱΛ͔ͬ͠Γҙࣝ͢΂
͠
50
(C) CASAREAL, Inc. All rights reserved.


# Page. 51

![Page Image](https://bcdn.docswell.com/page/V87D5ZQW7G.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
51
(C) CASAREAL, Inc. All rights reserved.


# Page. 52

![Page Image](https://bcdn.docswell.com/page/4VJPGDLXJ8.jpg)

ϦϨʔγϣϯΛද‫͢ݱ‬Δ
▸ !0OF5P0OF
▸ !0OF5P.BOZ
▸ !.BOZ5P0OF
▸ !.BOZ5P.BOZ
@Entity
public class Product {
…
@ManyToOne
@JoinColumn(name=&quot;vendor_id&quot;)
private Vendor vendor;
}
@Entity
public class Vendor {
…
}
52
(C) CASAREAL, Inc. All rights reserved.


# Page. 53

![Page Image](https://bcdn.docswell.com/page/L2EV61Q37Q.jpg)

ϑΣονͱ͸
▸ ͋ΔΤϯςΟςΟΛಡΈࠐΜͩ࣌ɺϦϨʔγϣϯઌ
ͷΤϯςΟςΟΛ͍ͭಡΈࠐΉ͔
ᶃ &amp;&quot;(&amp;3ϑΣονɿଈ࣌ಡΈࠐΈ
▸ ಉ࣌ʹಡΈࠐΉʢ)JCFSOBUFͩͱ+0*/ɺ&amp;DMJQTF-JOLͩͱ
4&amp;-&amp;$5จ͕ෳ਺ಉ࣌ʹൃߦʣ
ᶄ -&quot;;:ϑΣονɿ஗ԆಡΈࠐΈ
▸ ඞཁʹͳͬͨ࣌ʢHFUUFS͕‫ݺ‬͹Εͨ࣌ʣʹಡΈࠐΉ
53
(C) CASAREAL, Inc. All rights reserved.


# Page. 54

![Page Image](https://bcdn.docswell.com/page/Z57GN2WYJL.jpg)

ϑΣονͷࢦఆํ๏
▸ !9YY5P9YYͷGFUDIଐੑʹࢦఆ͢Δ
▸ !9YY5P.BOZˠσϑΥϧτͰ-&quot;;:
▸ !9YY5P0OFˠσϑΥϧτͰ&amp;&quot;(&amp;3
@Entity
public class Product {
…
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name=&quot;vendor_id&quot;)
private Vendor vendor;
}
54
(C) CASAREAL, Inc. All rights reserved.


# Page. 55

![Page Image](https://bcdn.docswell.com/page/V4EQQP36EP.jpg)

-&quot;;:ϑΣονͷྫ
@Entity public class Product {
@ManyToOne(fetch = FetchType.LAZY)
private Vendor vendor;
}
Product p = em.find(Product.class, 1);
Vendor v = p.getVendor();
String n = v.getName() // ͜͜Ͱ΋SELECT
2ճ
SELECT
select (ྻলུ) from product product0_
where product0_.id=?
select (ྻলུ) from vendor vendor0_
where vendor0_.id=?
55
(C) CASAREAL, Inc. All rights reserved.


# Page. 56

![Page Image](https://bcdn.docswell.com/page/DKJ4NY1M71.jpg)

-&quot;;:ϑΣονͷ஫ҙ఺
▸ ӬଓԽίϯςΩετഁ‫ޙغ‬ʢ㲈τϥϯβΫγϣϯ
ऴྃ‫ޙ‬ʣʹϑΣον͢Δͱྫ֎͕ൃੜ͢Δ
em.getTransaction().begin();
Product p = em.find(Product.class, 1);
em.getTransaction().rollback();
Vendor v = p.getVendor();
String n = v.getName(); // ͜͜Ͱྫ֎ൃੜ
56
(C) CASAREAL, Inc. All rights reserved.


# Page. 57

![Page Image](https://bcdn.docswell.com/page/PLE156GY7G.jpg)

&amp;&quot;(&amp;3ϑΣονͷྫ
@Entity public class Product {
@ManyToOne(fetch = FetchType.EAGER)
private Vendor vendor;
}
1ճͷΈ
SELECT
Product p = em.find(Product.class, 1);
Vendor v = p.getVendor(); // ‫ʹط‬ಡΈࠐΈࡁΈ
select (ྻলུ) from product product0_
left outer join vendor vendor2_
on product0_.vendor_id=vendor2_.id
where product0_.id=?
57
(C) CASAREAL, Inc. All rights reserved.


# Page. 58

![Page Image](https://bcdn.docswell.com/page/8GEW5WK1J2.jpg)

ϑΣον͸‫ج‬ຊ-&quot;;:ʂ
▸ &amp;&quot;(&amp;3ʹ͢Δͱෆཁͳσʔλ·ͰಡΈࠐΉ͔Β
▸ !0OF5P.BOZͰେྔͷσʔλΛಡΈࠐΉͱ͔‫ڪ‬ා
ʢʹ/ ໰୊ʣ
▸ -&quot;;:͔Β&amp;&quot;(&amp;3ʹಈతʹมߋ͍ͨ͠৔߹͸ɺ
+12-ͷ+0*/&#039;&amp;5$)จΛར༻͢Δ
58
(C) CASAREAL, Inc. All rights reserved.


# Page. 59

![Page Image](https://bcdn.docswell.com/page/W47ZN5ZX73.jpg)

/ ໰୊͕‫͜ى‬Δྫ
// order_summary΁ͷSELECT͕ൃߦ͞ΕΔʢ1ճʣ
List&lt;OrderSummary&gt; list = em.createQuery(
&quot;SELECT os FROM OrderSummary os&quot;,OrderSummary.class)
.getResultList();
for (OrderSummary os : list) {
// ·ͩorder_detail͸ಡΈࠐ·Ε͍ͯͳ͍
System.out.println(os);
for (OrderDetail od : os.getOrderDetailList()) {
// ͜͜Ͱorder_detail΁ͷSELECT͕ൃߦ͞ΕΔ(Nճ)
System.out.println(od);
}
}
59
(C) CASAREAL, Inc. All rights reserved.


# Page. 60

![Page Image](https://bcdn.docswell.com/page/KYJ689ZP7V.jpg)

୯ͳΔ+0*/͸ҙຯ͕ͳ͍
// order_summary΁ͷSELECT͕ൃߦ͞ΕΔʢ1ճʣ
List&lt;OrderSummary&gt; list = em.createQuery(
&quot;SELECT os FROM OrderSummary os&quot; +
&quot; JOIN os.orderDetailList&quot;, OrderSummary.class)
.getResultList();
for (OrderSummary os : list) {
// ·ͩorder_detail͸ಡΈࠐ·Ε͍ͯͳ͍
System.out.println(os);
for (OrderDetail od : os.getOrderDetailList()) {
// ͜͜Ͱorder_detail΁ͷSELECT͕ൃߦ͞ΕΔ(Nճ)
System.out.println(od);
}
}
(C) CASAREAL, Inc. All rights reserved.
60


# Page. 61

![Page Image](https://bcdn.docswell.com/page/5GJ59NWPE4.jpg)

୯ͳΔ+0*/͸ҙຯ͕ͳ͍
select
ordersumma0_.id as id1_3_,
ordersumma0_.customer_id as customer3_3_,
ordersumma0_.order_timestamp as order_ti2_3_
from
order_summary ordersumma0_
inner join
order_detail orderdetai1_
on ordersumma0_.id=orderdetai1_.summary_id
where
ordersumma0_.id=?
JOINͯ͠Δ͚Ͳ
order_summaryͷྻ
͔͠औಘͯ͠ͳ͍
61
(C) CASAREAL, Inc. All rights reserved.


# Page. 62

![Page Image](https://bcdn.docswell.com/page/4LE3Y246J5.jpg)

+0*/&#039;&amp;5$)จͰղܾʂʁ
▸ -&quot;;:ʹͳ͍ͬͯΔϦϨʔγϣϯΛಈతʹ&amp;&quot;(&amp;3
ʹมߋͯ͘͠ΕΔ
// order_summary΁ͷSELECT͕ൃߦ͞ΕΔʢ1ճʣ
List&lt;OrderSummary&gt; list = em.createQuery(
&quot;SELECT os FROM OrderSummary os&quot; +
&quot; JOIN FETCH os.orderDetailList&quot; +
, OrderSummary.class)
.getResultList();
62
(C) CASAREAL, Inc. All rights reserved.


# Page. 63

![Page Image](https://bcdn.docswell.com/page/V8ED5ZQMEG.jpg)

+0*/&#039;&amp;5$)จͰղܾʂʁ
select
ordersumma0_.id as id1_3_0_,
orderdetai1_.id as id1_2_1_,
ordersumma0_.customer_id as customer3_3_0_,
ordersumma0_.order_timestamp as order_ti2_3_0_,
orderdetai1_.amount as amount2_2_1_,
orderdetai1_.product_id as product_3_2_1_,
orderdetai1_.summary_id as summary_4_2_0__,
orderdetai1_.id as id1_2_0__
from
order_summary ordersumma0_
inner join
order_detail orderdetai1_
on ordersumma0_.id=orderdetai1_.summary_id
where
ordersumma0_.id=?
JOINͯ͠
શྻऔಘ
63
(C) CASAREAL, Inc. All rights reserved.


# Page. 64

![Page Image](https://bcdn.docswell.com/page/4V7PGDLQ78.jpg)

දࣔ͢Δͱɾɾɾ
OrderSummary{id=1, orderTimestamp=2017-04-01T10:00}
OrderDetail{id=1, amount=2}
OrderDetail{id=2, amount=2}
OrderDetail{id=3, amount=2}
OrderSummary{id=1, orderTimestamp=2017-04-01T10:00}
OrderDetail{id=1, amount=2}
OrderDetail{id=2, amount=2}
OrderDetail{id=3, amount=2}
OrderSummary{id=1, orderTimestamp=2017-04-01T10:00}
OrderDetail{id=1, amount=2}
OrderDetail{id=2, amount=2}
OrderDetail{id=3, amount=2}
OrderSummary{id=2, orderTimestamp=2017-04-01T10:00}
OrderDetail{id=4, amount=2}
OrderDetail{id=5, amount=2}
ɾɾɾ
ಉ͡σʔλ͕
Կճ΋ʂʁ
64
(C) CASAREAL, Inc. All rights reserved.


# Page. 65

![Page Image](https://bcdn.docswell.com/page/L2JV61QPEQ.jpg)

+0*/&#039;&amp;5$) %*45*/$5Ͱղܾʂ
// order_summary΁ͷSELECT͕ൃߦ͞ΕΔʢ1ճʣ
List&lt;OrderSummary&gt; list = em.createQuery(
&quot;SELECT DISTINCT os FROM OrderSummary os&quot; +
&quot; JOIN FETCH os.orderDetailList&quot; +
, OrderSummary.class)
.getResultList();
65
(C) CASAREAL, Inc. All rights reserved.


# Page. 66

![Page Image](https://bcdn.docswell.com/page/Z5EGN2WQ7L.jpg)

+0*/&#039;&amp;5$) %*45*/$5Ͱղܾʂ
select distinct
ordersumma0_.id as id1_3_0_,
distinct͕෇͕͘
orderdetai1_.id as id1_2_1_,
ordersumma0_.customer_id as customer3_3_0_,
SQLͷ݁Ռ͸
ordersumma0_.order_timestamp as order_ti2_3_0_,
orderdetai1_.amount as amount2_2_1_,
͜ͷ৔߹͸ಉ͡
orderdetai1_.product_id as product_3_2_1_,
orderdetai1_.summary_id as summary_4_2_0__,
orderdetai1_.id as id1_2_0__
from
order_summary ordersumma0_
inner join
order_detail orderdetai1_
on ordersumma0_.id=orderdetai1_.summary_id
where
ordersumma0_.id=?
66
(C) CASAREAL, Inc. All rights reserved.


# Page. 67

![Page Image](https://bcdn.docswell.com/page/V4JQQP3WJP.jpg)

දࣔ͢Δͱɾɾɾ
OrderSummary{id=1, orderTimestamp=2017-04-01T10:00}
OrderDetail{id=3, amount=2}
OrderDetail{id=1, amount=2}
OrderDetail{id=2, amount=2}
OrderSummary{id=2, orderTimestamp=2017-04-01T10:00}
OrderDetail{id=5, amount=2}
OrderDetail{id=6, amount=2}
OrderDetail{id=4, amount=2}
OrderSummary{id=9, orderTimestamp=2017-04-01T10:00}
OrderSummary{id=7, orderTimestamp=2017-04-01T10:00}
OrderSummary{id=6, orderTimestamp=2017-04-01T10:00}
OrderSummary{id=5, orderTimestamp=2017-04-01T10:00}
OrderSummary{id=4, orderTimestamp=2017-04-01T10:00}
OrderSummary{id=3, orderTimestamp=2017-04-01T10:00}
OrderSummary{id=8, orderTimestamp=2017-04-01T10:00}
OrderSummary{id=10, orderTimestamp=2017-04-01T10:00}
σʔλͷॏෳ͕
ແ͘ͳͬͨʂ
67
(C) CASAREAL, Inc. All rights reserved.


# Page. 68

![Page Image](https://bcdn.docswell.com/page/DK74NY11E1.jpg)

+12-ͷ%*45*/$5۟
▸ 42-ͷ%*45*/$5۟ʴ-JTUͷॏෳ΋࡟আ͢Δ
68
(C) CASAREAL, Inc. All rights reserved.


# Page. 69

![Page Image](https://bcdn.docswell.com/page/PLJ156G5EG.jpg)

ωετͨ͠+0*/&#039;&amp;5$)
▸ )JCFSOBUFͰͷΈΤΠϦΞεΛ෇͚Δ͜ͱ͕ग़དྷ
Δ
// order_summaryɺorder_detailɺproduct͕JOIN͞ΕΔ
OrderSummary orderSummary = em.createQuery(
&quot;SELECT os FROM OrderSummary os&quot; +
&quot; JOIN FETCH os.orderDetailList od&quot; + ΤΠϦΞε
&quot; JOIN FETCH od.product p&quot; +
&quot; WHERE os.id = :id&quot;, OrderSummary.class)
.setParameter(&quot;id&quot;, 1)
.getSingleResult();
69
(C) CASAREAL, Inc. All rights reserved.


# Page. 70

![Page Image](https://bcdn.docswell.com/page/8GJW5WKW72.jpg)

ωετͨ͠+0*/&#039;&amp;5$)
select
ordersumma0_.id as id1_3_0_,
orderdetai1_.id as id1_2_1_,
product2_.id as id1_4_2_,
ordersumma0_.customer_id as customer3_3_0_,
ordersumma0_.order_timestamp as order_ti2_3_0_,
orderdetai1_.amount as amount2_2_1_,
orderdetai1_.product_id as product_3_2_1_,
orderdetai1_.summary_id as summary_4_2_0__,
orderdetai1_.id as id1_2_0__,
product2_.category_id as category4_4_2_,
product2_.name as name2_4_2_,
product2_.price as price3_4_2_,
product2_.vendor_id as vendor_i5_4_2_
from
order_summary ordersumma0_
inner join
order_detail orderdetai1_
on ordersumma0_.id=orderdetai1_.summary_id
inner join
product product2_
on orderdetai1_.product_id=product2_.id
where
ordersumma0_.id=?
3ͭͷදΛ
JOINͯ͠
શྻऔಘ
70
(C) CASAREAL, Inc. All rights reserved.


# Page. 71

![Page Image](https://bcdn.docswell.com/page/W4EZN5Z2E3.jpg)

·ͱΊ
▸ &#039;FUDI5ZQF͸-&quot;;:Λࢦఆ͠Α͏ʂ
▸ +0*/&#039;&amp;5$)จ %*45*/$5۟Ͱ/ ໰୊Λղ
ܾͰ͖Δʂ
▸ ωετͨ͠+0*/&#039;&amp;5$)͸)JCFSOBUFͷΈʂ
71
(C) CASAREAL, Inc. All rights reserved.


# Page. 72

![Page Image](https://bcdn.docswell.com/page/KY768986EV.jpg)

&lt;খ‫&gt;ࢭٳ‬ઈࢍɺࣾһืूதʂ
▸ ޷͖ͳٕज़Λੈʹ޿Ί͍ͨ
ਓʂ
▸ 4QSJOHɺJ04‫ืٸ‬
▸ ։ൃҎ֎ͷखஈͰ
ٕज़ʹؔΘΓ͍ͨਓʂ
▸ ຖ೔ఆ࣌Ͱ‫ؼ‬Γ͍ͨਓʂ
https://www.casareal.co.jp/recruit/jobs/
ls_teacher.php
▸ ϗϫΠτ‫͢Ͱۀا‬
72
(C) CASAREAL, Inc. All rights reserved.


# Page. 73

![Page Image](https://bcdn.docswell.com/page/5G759N95J4.jpg)

&lt;খ‫&gt;ࢭٳ‬೥౓৽ਓ‫ݚ‬मʂ
https://www.casareal.co.jp/ls/service/shinjinseminar/course01
▸ Ϟμϯͳٕज़
✕Ϟμϯͳ‫ڥ؀‬
✕ΞδϟΠϧ
▸ 3FBDU
4QSJOH#PPU
(JU$*5%%
Ϋϥ΢υ
%PDLFS
73
(C) CASAREAL, Inc. All rights reserved.


# Page. 74

![Page Image](https://bcdn.docswell.com/page/V9J2252GJR.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
74
(C) CASAREAL, Inc. All rights reserved.


# Page. 75

![Page Image](https://bcdn.docswell.com/page/5DEYYKYGEM.jpg)

+1&quot;Ͱར༻Ͱ͖Δ%#‫ݻ‬༗‫ػ‬ೳ
▸ ωΠςΟϒ42-
▸ +12-͔Βͷ%#‫ݻ‬༗ؔ਺‫ͼݺ‬ग़͠
▸ ετΞυϓϩγʔδϟ
▸ ΠϯσοΫε
75
(C) CASAREAL, Inc. All rights reserved.


# Page. 76

![Page Image](https://bcdn.docswell.com/page/2VJNPRP878.jpg)

ωΠςΟϒ42▸ Ϛοϐϯάઌ͸ඞͣΤϯςΟςΟΫϥε
▸ ‫ج‬ຊతʹશྻͷ4&amp;-&amp;$5͕ඞཁ
▸ δΣωϦΫε͕࢖͑ͳ͍
Query query = em.createNativeQuery(
&quot;select id, name, price, vendor_id&quot;
+ &quot; from product where id = :id&quot;, Product.class);
query.setParameter(&quot;id&quot;, 1);
Product product = (Product) query.getSingleResult();
76
(C) CASAREAL, Inc. All rights reserved.


# Page. 77

![Page Image](https://bcdn.docswell.com/page/GYE93M3XE3.jpg)

ΤϯςΟςΟʹϚοϐϯά͠ͳ͍ํ๏
▸ ໭Γ஋Λ0CKFDU&lt;&gt;ʹ͢Δ
Query query = em.createNativeQuery(
&quot;select id, name from product where id = :id&quot;);
query.setParameter(&quot;id&quot;, 1);
// 0൪໨͕idɺ1൪໨͕name
Object[] objs = (Object[]) query.getSingleResult();
Integer productId = (Integer) objs[0];
String productName = (String) objs[1];
Ωϟετ͕ඞཁ
77
(C) CASAREAL, Inc. All rights reserved.


# Page. 78

![Page Image](https://bcdn.docswell.com/page/5GE8MLM9ED.jpg)

!4RM3FTVMU4FU.BQQJOH
▸ ωΠςΟϒ42-ͷ݁ՌΛ೚ҙͷΫϥεʹϚοϐ
ϯάग़དྷΔ
▸ ͨͩ͠ɺ‫ه‬ड़͸͔ͳΓ৑௕ʢ࣍ϖʔδʣ
78
(C) CASAREAL, Inc. All rights reserved.


# Page. 79

![Page Image](https://bcdn.docswell.com/page/MLEL3L3MJR.jpg)

!4RM3FTVMU4FU.BQQJOH
@Entity
@SqlResultSetMapping(
name = &quot;product_id_name&quot;, // ‫ͼݺͰޙ‬ग़࣌͢ͷ໊લ
classes = {
@ConstructorResult(targetClass = ProductDto.class,
columns = {
@ColumnResult(name = &quot;id&quot;),
@ColumnResult(name = &quot;name&quot;)
}
ΤϯςΟςΟΫϥεʹ
)
}
෇Ճ͢Δ͜ͱʹ஫ҙ
)
public class Product { … }
※@SqlResultSetMappingsΛར༻͢Ε͹ɺෳ਺ͷ@SqlResultSetMappingΛࢦఆՄೳ
(C) CASAREAL, Inc. All rights reserved.
79


# Page. 80

![Page Image](https://bcdn.docswell.com/page/54JMDMD6JW.jpg)

!4RM3FTVMU4FU.BQQJOH
public class ProductDto {
ΤϯςΟςΟͰͳ͍
private Integer id;
private String name;
೚ҙͷΫϥε
public ProductDto(Integer id, String name) { … }
}
Query query = em.createNativeQuery(
&quot;select id, name from product where id = :id&quot;,
&quot;product_id_name&quot;); // @SqlResultSetMappingͷnameଐੑ
query.setParameter(&quot;id&quot;, 1);
ProductDto productDto =
(ProductDto) query.getSingleResult();
80
(C) CASAREAL, Inc. All rights reserved.


# Page. 81

![Page Image](https://bcdn.docswell.com/page/ZPJR4V4NJ9.jpg)

+12-͔Βͷ%#‫ݻ‬༗ؔ਺‫ͼݺ‬ग़͠
▸ &#039;6/$5*0/ ؔ਺໊ Ҿ਺ Ҿ਺ ʜ
// H2 DatabaseͷLEFTؔ਺Λར༻
TypedQuery&lt;Product&gt; query = em.createQuery(
&quot;SELECT p FROM Product p&quot;
+ &quot; WHERE FUNCTION(&#039;LEFT&#039;, p.name, 2) = &#039;ύϚ&#039;&quot;,
Product.class);
List&lt;Product&gt; productList = query.getResultList();
81
(C) CASAREAL, Inc. All rights reserved.


# Page. 82

![Page Image](https://bcdn.docswell.com/page/NPEX2Z287X.jpg)

ετΞυϓϩγʔδϟ
▸ DSFBUF4UPSFE1SPDFEVSF2VFSZ
StoredProcedureQuery query =
em.createStoredProcedureQuery(&quot;ϓϩγʔδϟ໊&quot;,
ΤϯςΟςΟ.class);
query.setParameter(&quot;ύϥϝʔλ໊&quot;, ύϥϝʔλ஋);
List&lt;ΤϯςΟςΟ&gt; list =
(List&lt;ΤϯςΟςΟ&gt;) query.getResultList();
※ετΞυϓϩγʔδϟʹৄ͘͠ͳ͍ͨΊචऀ͸ະ‫͢Ͱূݕ‬ɻͥͻࢼͯ͠ϑΟʔυόοΫ͍ͩ͘͞ʂ
82
(C) CASAREAL, Inc. All rights reserved.


# Page. 83

![Page Image](https://bcdn.docswell.com/page/63EKM8MLJD.jpg)

ΠϯσοΫε
▸ !*OEFY
@Entity
@Index(members = {&quot;name&quot;})
public class Product {
…
}
※ΠϯσοΫεʹৄ͘͠ͳ͍ͨΊචऀ͸ະ‫͢Ͱূݕ‬ɻͥͻࢼͯ͠ϑΟʔυόοΫ͍ͩ͘͞ʂ
※@IndicesΛར༻ͯ͠ෳ਺ͷ@IndexΛࢦఆՄೳ
83
(C) CASAREAL, Inc. All rights reserved.


# Page. 84

![Page Image](https://bcdn.docswell.com/page/4L73Y2Y6E5.jpg)

%#‫ݻ‬༗‫ػ‬ೳͷར༻͸࠷ऴखஈ
▸ ʮ%#੡඼͕มΘͬͯ΋ίʔυͷมߋ͕ඞཁͳ͍ʯ
ͱ͍͏+1&quot;ͷϝϦοτ͕ࣦΘΕΔ
▸ ར༻ͤ͟ΔΛಘͳ͍Օॴ͸ɺυΩϡϝϯτͱ͔
ʹ࢒͓͍ͯͨ͠΄͏͕Α͍
▸ ͦ͏͠ͳ͍ͱ਺೥‫ʹޙ‬%#ΛҠ২͢Δ͜ͱʹͳͬͨͱ
͖େม
84
(C) CASAREAL, Inc. All rights reserved.


# Page. 85

![Page Image](https://bcdn.docswell.com/page/V87D5Z5M7G.jpg)

·ͱΊ
▸ %#‫ݻ‬༗‫ػ‬ೳ΋ͦͦ͜͜࢖͑Δ
▸ ͨͩ͠ɺ΄Ͳ΄Ͳʹ͠·͠ΐ͏
85
(C) CASAREAL, Inc. All rights reserved.


# Page. 86

![Page Image](https://bcdn.docswell.com/page/4VJPGDGQJ8.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
86
(C) CASAREAL, Inc. All rights reserved.


# Page. 87

![Page Image](https://bcdn.docswell.com/page/L2EV616P7Q.jpg)

4QSJOH%BUB+1&quot;ͷԼ४උ
▸ -PDBM$POUBJOFS&amp;OUJUZ.BOBHFS&#039;BDUPSZ#FBO
Λ#FBOఆٛ
▸ &amp;OUJUZ.BOBHFS&#039;BDUPSZ͕ࣗಈͰ#FBOͱͳΔ
▸ 4QSJOH#PPUͰ͸ఆٛࡁΈ
▸ ৄࡉ͸੿ஶʮ4QSJOHGPS4QSJOH#PPUʯ΁
▸ IUUQTTQFBLFSEFDLDPNNBTBUPTIJUBEBTQSJOHGPS
TQSJOHCPPUOVNCFSKTVH
87
(C) CASAREAL, Inc. All rights reserved.


# Page. 88

![Page Image](https://bcdn.docswell.com/page/Z57GN2NQJL.jpg)

4QSJOH%BUB+1&quot;ͷศར‫ػ‬ೳ
▸ 3FQPTJUPSZΠϯλϑΣʔε࡞Δ͚ͩ
▸ ϝιου໊͔Βͷ+12-ࣗಈੜ੒
▸ ‫ڞ‬௨ඇνΣοΫྫ֎΁ͷม‫׵‬
▸ ‫ࠪ؂‬ରԠ
▸ %BUFBOE5JNF&quot;1* +43 ରԠ
88
(C) CASAREAL, Inc. All rights reserved.


# Page. 89

![Page Image](https://bcdn.docswell.com/page/V4EQQPQWEP.jpg)

3FQPTJUPSZΠϯλϑΣʔε
▸ +QB3FQPTJUPSZΛ‫ܧ‬ঝͨ͠ΠϯλϑΣʔεΛ࡞
Δ͚ͩͰɺ‫ج‬ຊతͳ$36%ॲཧ͸࡞੒‫ྃ׬‬
public interface ProductRepository
extends JpaRepository&lt;Product, Integer&gt; {
// த͸ۭͰOK
}
※@RepositoryΞϊςʔγϣϯ͸ඞཁ͋Γ·ͤΜ
89
(C) CASAREAL, Inc. All rights reserved.


# Page. 90

![Page Image](https://bcdn.docswell.com/page/DKJ4NYN171.jpg)

+QB3FQPTJUPSZͷओͳϝιου
▸ HFU0OF JE pOE#Z*E JE pOE&quot;MM pOE&quot;MM TPSU 
pOE&quot;MM JET pOE&quot;MM QBHFBCMF 
▸ TBWF FOUJUZ ˞௥Ճ΋ߋ৽΋Մೳ
▸ EFMFUF#Z*E JE EFMFUF FOUJUZ 
▸ DPVOU FYJTUT#Z*E JE
4QSJOH%BUBͰϝιου໊͕
େ෯ʹมߋ͞ΕͨͷͰ஫ҙʂ
90
(C) CASAREAL, Inc. All rights reserved.


# Page. 91

![Page Image](https://bcdn.docswell.com/page/PLE156557G.jpg)

3FQPTJUPSZΠϯλϑΣʔεͷར༻
@Service
public class ProductService {
private final ProductRepository repo;
@Autowired // ϓϩΩγ͕࡞ΒΕͯDI͞ΕΔ
public ProductService(ProductRepository repo) {
this.repo = repo;
}
}
@Transactional
public void insert(Product product) {
repo.save(product);
}
※@AutowiredΞϊςʔγϣϯ͸Spring 4.3Ҏ߱Ͱ͸লུՄೳ
ʢίϯετϥΫλ͕1͚ͭͩͷ৔߹ͷΈʣ
(C) CASAREAL, Inc. All rights reserved.
91


# Page. 92

![Page Image](https://bcdn.docswell.com/page/8GEW5W5WJ2.jpg)

!2VFSZ
▸ 3FQPTJUPSZΠϯλϑΣʔεʹɺ೚ҙͷ+12-Λ࣮
ߦ͢ΔϝιουΛ௥ՃͰ͖Δ
▸ OBUJWF2VFSZUSVFͱ͢Ε͹ωΠςΟϒ42-΋ॻ͚Δ
public interface ProductRepository
extends JpaRepository&lt;Product, Integer&gt; {
@Query(&quot;SELECT p FROM Product p JOIN FETCH p.vendor&quot;
+ &quot; WHERE p.id = :id&quot;)
Product findByIdJoinFetch(@Param(&quot;id&quot;) Integer id);
}
92
(C) CASAREAL, Inc. All rights reserved.


# Page. 93

![Page Image](https://bcdn.docswell.com/page/W47ZN5N273.jpg)

!.PEJGZJOH
▸ !2VFSZͰ61%&quot;5&amp;จ΍%&amp;-&amp;5&amp;จΛࢦఆͨ͠
৔߹͸ඞཁ
public interface ProductRepository
extends JpaRepository&lt;Product, Integer&gt; {
@Modifying
@Query(&quot;UPDATE Product p SET p.name = :name&quot;
+ &quot; WHERE p.id = :id&quot;)
void updateName(@Param(&quot;name&quot;) String name,
@Param(&quot;id&quot;) Integer id);
}
93
(C) CASAREAL, Inc. All rights reserved.


# Page. 94

![Page Image](https://bcdn.docswell.com/page/KYJ689967V.jpg)

!-PDL
▸ -PDL.PEF5ZQFΛࢦఆָͯ͠‫؍‬తϩοΫɾ൵‫؍‬
తϩοΫΛࢦఆՄೳ
public interface ProductRepository
extends JpaRepository&lt;Product, Integer&gt; {
@Lock(LockModeType.PESSIMISTIC_READ)
@Query(&quot;SELECT p FROM Product p JOIN FETCH p.vendor&quot;
+ &quot; WHERE p.id = :id&quot;)
Product findByIdJoinFetch(@Param(&quot;id&quot;) Integer id);
}
※ϩοΫͷৄࡉ͸Լ‫ࢀه‬র
https://www.slideshare.net/masatoshitada7/jpa20140518-ccc-r15-jjug-ccc
(C) CASAREAL, Inc. All rights reserved.
94


# Page. 95

![Page Image](https://bcdn.docswell.com/page/5GJ59NN5E4.jpg)

!&amp;OUJUZ(SBQI
▸ &amp;OUJUZ(SBQIΛར༻ͨ͠ಈతͳϑΣονͷมߋ
͕Մೳ
public interface ProductRepository
extends JpaRepository&lt;Product, Integer&gt; {
@EntityGraph(&quot;άϥϑ໊&quot;)
@Query(&quot;SELECT p FROM Product p JOIN FETCH p.vendor&quot;
+ &quot; WHERE p.id = :id&quot;)
Product findByIdJoinFetch(@Param(&quot;id&quot;) Integer id);
}
※ΤϯςΟςΟάϥϑͷৄࡉ͸Լ‫ࢀه‬র
https://blog.ik.am/entries/350
95
(C) CASAREAL, Inc. All rights reserved.


# Page. 96

![Page Image](https://bcdn.docswell.com/page/V9E2255GER.jpg)

ϝιου໊͔Βͷ+12-ࣗಈੜ੒
▸ ϧʔϧʹैͬͯϝιου໊Λ‫ه‬ड़͢Ε͹ɺ
!2VFSZͰ+12-Λ‫ه‬ड़͢Δඞཁͳ͠
public interface ProductRepository
extends JpaRepository&lt;Product, Integer&gt; {
// nameʹҾ਺ͷจࣈྻ͕‫·ؚ‬Ε͍ͯΔ΋ͷΛ‫͢ࡧݕ‬Δ
List&lt;Product&gt; findByNameContaining(String keyword);
}
96
(C) CASAREAL, Inc. All rights reserved.


# Page. 97

![Page Image](https://bcdn.docswell.com/page/5D7YYKKG7M.jpg)

ϝιου໊͔Βͷ+12-ࣗಈੜ੒
select
product0_.id as id1_4_,
product0_.category_id as category4_4_,
product0_.name as name2_4_,
product0_.price as price3_4_,
product0_.vendor_id as vendor_i5_4_
from
product product0_
where
product0_.name like ?
binding parameter [1] as [VARCHAR] - [%ύϚ%]
97
(C) CASAREAL, Inc. All rights reserved.


# Page. 98

![Page Image](https://bcdn.docswell.com/page/2VENPRR8J8.jpg)

ϝιου໊ʹ࢖͑ΔΩʔϫʔυʢҰ෦ʣ
▸ &quot;OE 0S #FUXFFO -FTT5IBO 
-FTT5IBO&amp;RVBM -JLF /PU-JLF 4UBSUJOH8JUI 
&amp;OEJOH8JUI $POUBJOJOH 0SEFS#Z ʜ
▸ ৄࡉ͸ϦϑΝϨϯεࢀর
▸ IUUQTEPDTTQSJOHJPTQSJOHEBUBKQBEPDT
DVSSFOUSFGFSFODFIUNMKQBRVFSZ
NFUIPETRVFSZDSFBUJPO
98
(C) CASAREAL, Inc. All rights reserved.


# Page. 99

![Page Image](https://bcdn.docswell.com/page/GY793MMX73.jpg)

‫ڞ‬௨ඇνΣοΫྫ֎΁ͷม‫׵‬
▸ +1&quot;Ͱൃੜͨ͠ྫ֎͸%BUB&quot;DDFTT&amp;YDFQUJPO
ͷαϒΫϥεʹม‫͞׵‬ΕΔ
▸ ͲΜͳσʔλΞΫηεٕज़Λ࢖͍ͬͯΔ͔Λ্Ґ૚ʹ
ҙࣝͤ͞ͳ͍
%BUB&quot;DDFTT&amp;YDFQUJPO
%BUB*OUFHSJUZ7JPMBUJPO
&amp;YDFQUJPO
#BE4RM(SBNNBS
&amp;YDFQUJPO
ɾɾɾ
99
(C) CASAREAL, Inc. All rights reserved.


# Page. 100

![Page Image](https://bcdn.docswell.com/page/5G78MLL97D.jpg)

‫ࠪ؂‬ରԠ
▸ ࡞੒ऀɺ࡞੒೔࣌ɺߋ৽ऀɺߋ৽೔࣌Λࣗಈత
ʹ%#ʹอଘͰ͖Δ
@Entity public class Hoge {
@CreatedBy String createdUser;
@CreatedDate LocalDateTime createdDate;
@LastModifiedBy String modifiedUser;
@LastModifiedDate LocalDateTime lastModifiedDate;
}
100
(C) CASAREAL, Inc. All rights reserved.


# Page. 101

![Page Image](https://bcdn.docswell.com/page/ML7L3LLMER.jpg)

‫ࠪ؂‬ରԠʹඞཁͳઃఆ
Spring Security͔Β
@Component
Ϣʔβʔ໊Λऔಘͯ͠΋OK
public class MyAuditorAware
implements AuditorAware&lt;String&gt; {
@Override
public Optional&lt;String&gt; getCurrentAuditor() {
return Optional.of(&quot;user01&quot;);}
}
@SpringBootApplication
@EnableJpaAuditing(auditorAwareRef = &quot;myAuditorAware&quot;)
public class SpringDataJpaDaitokaiApplication { … }
101
(C) CASAREAL, Inc. All rights reserved.


# Page. 102

![Page Image](https://bcdn.docswell.com/page/54EMDMM6EW.jpg)

‫ࠪ؂‬ରԠʹඞཁͳઃఆʢ͖ͭͮʣ
▸ TSDNBJOSFTPVSDFT.&amp;5&quot;*/&#039;PSNYNMʹԼ‫ه‬Λ‫ه‬ड़
▸ ύεͱϑΝΠϧ໊Λ͜Εʹ͢ΔͱɺࣗಈͰಡΈࠐ·ΕΔ
&lt;entity-mappings&gt;
&lt;persistence-unit-metadata&gt;
&lt;persistence-unit-defaults&gt;
&lt;entity-listeners&gt;
&lt;entity-listener
class=&quot;org.springframework.data.jpa.domain.support.AuditingEntityListene
r&quot; /&gt;
&lt;/entity-listeners&gt;
&lt;/persistence-unit-defaults&gt;
&lt;/persistence-unit-metadata&gt;
&lt;/entity-mappings&gt;
102
(C) CASAREAL, Inc. All rights reserved.


# Page. 103

![Page Image](https://bcdn.docswell.com/page/ZPER4VVNE9.jpg)

%BUFBOE5JNF&quot;1* +43 ରԠ
▸ +TS+QB$POWFSUFSTΫϥε
▸ -PDBM%BUFΫϥεͳͲͷ&quot;UUSJCVUF$POWFSUFS͕͋Β͔
͡Ίఏ‫͞ڙ‬Ε͍ͯΔ
▸ TFU1BDLBHF5P4DBO ͳͲͰ
PSHTQSJOHGSBNFXPSLEBUBKQBDPOWFSUUISFFUFOύ
οέʔδΛࢦఆ͢Ε͹0,
▸ 4QSJOH#PPUͰ͸&quot;VUP$POpHVSBUJPOର৅ʹͳ͍ͬͯΔ
103
(C) CASAREAL, Inc. All rights reserved.


# Page. 104

![Page Image](https://bcdn.docswell.com/page/NP7X2ZZ8JX.jpg)

ͦͷଞͷ‫ػ‬ೳʢࢼͯ͠ͳ͍ʣ
▸ !1SPDFEVSF QSPDFEVSF/BNFϓϩγʔδϟ
໊ 
▸ &amp;YBNQMF.BUDIFSʹΑΔλΠϓηʔϑ‫ه‬ड़
▸ +QB$POUFYU
104
(C) CASAREAL, Inc. All rights reserved.


# Page. 105

![Page Image](https://bcdn.docswell.com/page/637KM88LED.jpg)

·ͱΊ
▸ ศརͰ͢Ͷʂ
▸ 3FQPTJUPSZΠϯλϑΣʔε࡞Δ͚ͩ
▸ ϝιου໊͔Βͷ+12-ࣗಈੜ੒
▸ ‫ڞ‬௨ඇνΣοΫྫ֎΁ͷม‫׵‬
▸ ‫ࠪ؂‬ରԠ
▸ %BUFBOE5JNF&quot;1* +43 ରԠ
105
(C) CASAREAL, Inc. All rights reserved.


# Page. 106

![Page Image](https://bcdn.docswell.com/page/4LJ3Y22675.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
106
(C) CASAREAL, Inc. All rights reserved.


# Page. 107

![Page Image](https://bcdn.docswell.com/page/V8JD5ZZMJG.jpg)

0QFO*O7JFX͕σϑΥϧτ
▸ &amp;OUJUZ.BOBHFSͷϥΠϑαΠΫϧ͕Ϗϡʔ·Ͱͱ
ͳ͍ͬͯΔʢʹϏϡʔͰͷ-B[ZϑΣονՄೳʣ
4QSJOH#PPUͷσϑΥϧτ
௨ৗͷ4QSJOH
7JFX
$POUSPMMFS
4FSWJDF
3FQPTJUPSZ
http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/reference/htmlsingle/#boot-features-jpa-inweb-environment
(C) CASAREAL, Inc. All rights reserved.
107


# Page. 108

![Page Image](https://bcdn.docswell.com/page/4VEPGDDQE8.jpg)

0QFO*O7JFXΛΦϑʹ͢Δํ๏
▸ BQQMJDBUJPOQSPQFSUJFTʹԼ‫ه‬ͷ‫ه‬ड़Λ௥Ճ͢Δ
ͱɺ௨ৗͷ4QSJOHͱಉ͡ʢτϥϯβΫγϣϯ୯
ҐʣʹͳΔ
spring.jpa.open-in-view=false
108
(C) CASAREAL, Inc. All rights reserved.


# Page. 109

![Page Image](https://bcdn.docswell.com/page/L27V611PJQ.jpg)

/BNJOH4USBUFHZ
▸ 4QSJOH1IZTJDBM/BNJOH4USBUFHZ͕σϑΥϧ
τͰద༻ࡁΈ
▸ Ωϟϝϧέʔε㲗εωʔΫέʔεͷ૬‫ޓ‬ม‫׵‬͸ࣗಈͰ
ߦΘΕΔ
@Entity public class Hoge {
// Spring BootͰ͸@Columnෆཁ
@Column(name=“foo_bar”) String fooBar;
}
http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/reference/htmlsingle/#howto-configurehibernate-naming-strategy
(C) CASAREAL, Inc. All rights reserved.
109


# Page. 110

![Page Image](https://bcdn.docswell.com/page/Z5JGN22QEL.jpg)

/BNJOH4USBUFHZͷมߋํ๏
▸ BQQMJDBUJPOQSPQFSUJFTʹԼ‫ه‬ͷ‫ه‬ड़Λ௥Ճ
spring.jpa.hibernate.naming.physical-strategy=StrategyΫϥεͷFQCN
spring.jpa.hibernate.naming.implicit-strategy=StrategyΫϥεͷFQCN
110
(C) CASAREAL, Inc. All rights reserved.


# Page. 111

![Page Image](https://bcdn.docswell.com/page/V47QQPPW7P.jpg)

!&amp;OUJUZ4DBO
▸ ΤϯςΟςΟΫϥεͷύοέʔδ΍ɺ$POWFSUFS
ΫϥεͷύοέʔδΛࢦఆ
▸ +BWB$POpHΫϥεʹ෇Ճ͢Δ
@SpringBootApplication
@EntityScan(basePackages = {
&quot;com.example.demo.persistence.entity&quot;,
&quot;org.springframework.data.jpa.convert.threeten&quot;})
public class SpringDataJpaDaitokaiApplication { … }
http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/reference/htmlsingle/#howto-separate-entitydefinitions-from-spring-configuration
(C) CASAREAL, Inc. All rights reserved.
111


# Page. 112

![Page Image](https://bcdn.docswell.com/page/DKE4NYY1J1.jpg)

ᶃ +1&quot;4QSJOH%BUB+1&quot;ͱ͸ʁ
ᶄ +1&quot;ΤϯςΟςΟͷঢ়ଶ؅ཧ
ᶅ +BWB1FSTJTUFODF2VFSZ-BOHVBHF +12- 
ᶆ ϦϨʔγϣϯͱ/ ໰୊ରࡦ
ᶇ %#੡඼‫ݻ‬༗‫ػ‬ೳͷར༻
ᶈ 4QSJOH%BUB+1&quot;ͷར༻
ᶉ 4QSJOH#PPUར༻࣌ͷ஫ҙ఺
ᶊ +1&quot;͸ʮ࢖͑Δʯͷ͔ʁ
112
(C) CASAREAL, Inc. All rights reserved.


# Page. 113

![Page Image](https://bcdn.docswell.com/page/PL715665JG.jpg)

+1&quot;͸ʮ࢖͑Δʯ͔ʁ
▸ ʮ࢖͑Δɻͨͩ͠ਖ਼͍͠஌͕ࣝඞཁɺ͔ͭγνϡ
ΤʔγϣϯΛબͿʯͱ͍͏ͷ͕‫ݸ‬ਓతͳҙ‫Ͱݟ‬
͢
113
(C) CASAREAL, Inc. All rights reserved.


# Page. 114

![Page Image](https://bcdn.docswell.com/page/8G7W5WWWE2.jpg)

+1&quot;Λ࢖͍͍ͬͯ৚݅
ᶃ %#Λ৽‫ʹن‬ઃ‫͖Ͱܭ‬Δ
ᶄ ू߹ԋࢉ΍&#039;30.۟Ͱͷ෭໰߹ͤͳͲɺ
ෳࡶͳ42-͸ཁ݅తʹগͳ͍
ᶅ ʮύʔϑΣΫτ+BWB&amp;&amp;ʯΛಡഁͨ͠ਓ͕
ϓϩδΣΫτʹਓҎ্͍Δ
ͭͰ΋౰ͯ͸·Βͳ͍߲໨͕͋Ε͹ɺ
ଞͷ03ϚούʔΛ࢖ͬͨํ͕͍͍͔΋😅
114
(C) CASAREAL, Inc. All rights reserved.


# Page. 115

![Page Image](https://bcdn.docswell.com/page/W4JZN552J3.jpg)

ඞಡॻ੶
▸ 4QSJOHపఈೖ໳
▸ ֓ཁΛ஌ΔͳΒ͜ͷຊʂ
▸ ύʔϑΣΫτ+BWB&amp;&amp;
▸ +1&quot;Λৄࡉ·Ͱ஌ΕΔʂ
▸ 4QSJOH%BUB+1&quot;ϓϩάϥϛ
ϯάೖ໳
▸ 4QSJOH%BUB+1&quot;ͷ֤‫ػ‬ೳΛֶ
शʂ
115
(C) CASAREAL, Inc. All rights reserved.


# Page. 116

![Page Image](https://bcdn.docswell.com/page/KYE689V6JV.jpg)

ඞಡࢿྉ
▸ ͸·Δʂ+1&quot;ʢॳֶऀ޲͚ϥΠτ൛ʣ !TVLF@NBTB 
▸ IUUQTXXXTMJEFTIBSFOFUNBTBUPTIJUBEBKQB
▸ ͸·Δʂ+1&quot; !NBLJOH͞Μ 
▸ IUUQTXXXTMJEFTIBSFOFUNBLJOHYKQB
▸ +1&quot;ͷಉ࣮࣌ߦ੍‫ͱޚ‬ϩοΫ !TVLF@NBTB 
▸ IUUQTXXXTMJEFTIBSFOFUNBTBUPTIJUBEBKQBDDDSKKVH
DDD
▸ !PQFOHM@͞Μͷ2JJUB‫ࣄه‬Ұ࿈
▸ IUUQRJJUBDPNPQFOHMJUFNTGGBFDC
116
(C) CASAREAL, Inc. All rights reserved.


# Page. 117

![Page Image](https://bcdn.docswell.com/page/5GE59ND574.jpg)

ϦϑΝϨϯε
▸ 5FSBTPMVOB։ൃΨΠυϥΠϯ
▸ IUUQUFSBTPMVOBPSHHJUIVCJPHVJEFMJOF3&amp;-&amp;&quot;4&amp;KB
&quot;SDIJUFDUVSF*O%FUBJM%BUB&quot;DDFTT%FUBJM%BUB&quot;DDFTT+QBIUNM
▸ 4QSJOH%BUB+1&quot;
▸ IUUQTEPDTTQSJOHJPTQSJOHEBUBKQBEPDTDVSSFOUSFGFSFODFIUNM
▸ )JCFSOBUF6TFS(VJEF
▸ IUUQEPDTKCPTTPSHIJCFSOBUFPSNVTFSHVJEFIUNM@TJOHMF
)JCFSOBUF@6TFS@(VJEFIUNM
▸ +1&quot; +43 
▸ IUUQTKDQPSHBCPVU+BWBDPNNVOJUZQSPDFTTpOBMKTSJOEFYIUNM
117
(C) CASAREAL, Inc. All rights reserved.


# Page. 118

![Page Image](https://bcdn.docswell.com/page/V972258G7R.jpg)

&amp;OKPZ4QSJOH%BUB+1&quot;
▸ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
118
(C) CASAREAL, Inc. All rights reserved.


