Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_3_sample
FORTE
September 09, 2020
Technology
0
230
いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_3_sample
FORTE
September 09, 2020
Tweet
Share
More Decks by FORTE
See All by FORTE
いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_kotlin_3_2_sample
fortegp05
0
79
まいにち続ける技術【サンプル】 / tech_to_continue_on_daily
fortegp05
0
450
【無料サンプル】もっと実践!サーバーサイドKotlin / server_side_kotlin_2_sample
fortegp05
1
160
技術同人誌によって得られたもの / infra-workshop-20200301_What_was_obtained_in_the_book
fortegp05
0
86
【い03C】入門!実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_sample
fortegp05
0
1.4k
アウトプットの価値 / 20190621_01_value_of_output
fortegp05
0
56
IT業界あるあるBAR / 20190412_01_aruaru_bar
fortegp05
1
81
【無料サンプル】はじめる技術 つづける技術 / tech-to-begin-tech-to-continue-sample
fortegp05
0
570
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント / 20190319_toranoana_kotlin_lt
fortegp05
0
250
Other Decks in Technology
See All in Technology
NGINXENG JP#2 - 4-NGINX-エンジニアリング勉強会
hiropo20
0
120
日本ディープラーニング協会主催 NeurIPS 2022 技術報告会講演資料
tdailab
0
1.1k
OpenShiftのリリースノートを整理してみた
loftkun
2
380
NGINXENG JP#2 - 3-NGINX Plus・プロダクトのアップデート
hiropo20
0
240
USB PD で迎える AC アダプター大統一時代
puhitaku
2
1.9k
20230123_FinJAWS
takuyay0ne
0
120
JAWS-UG 横浜 #54 資料
takakuni
0
210
SSMパラメーターストアでクロススタック参照の罠を回避する
shuyakinjo
0
6.5k
マイクロサービス宣言から8年 振り返りとこれから / Eight Years After the Microservices Declaration A Look Back and A Look Ahead
eisuke
2
160
SPA・SSGでSSRのようなOGP対応!
simo123
2
150
【NGK2023S】 ノードエディタ形式の画像処理ツール「Image-Processing-Node-Editor」
kazuhitotakahashi
0
290
AWS Cloud Forensics & Incident Response
e11i0t_4lders0n
0
350
Featured
See All Featured
The Invisible Customer
myddelton
113
12k
Building Better People: How to give real-time feedback that sticks.
wjessup
346
17k
YesSQL, Process and Tooling at Scale
rocio
159
12k
The Art of Programming - Codeland 2020
erikaheidi
35
11k
Design by the Numbers
sachag
271
18k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
175
9.1k
Navigating Team Friction
lara
177
12k
A Modern Web Designer's Workflow
chriscoyier
689
180k
Building Applications with DynamoDB
mza
85
5k
Bash Introduction
62gerente
601
210k
Testing 201, or: Great Expectations
jmmastey
25
5.7k
5 minutes of I Can Smell Your CMS
philhawksworth
198
18k
Transcript
ְְ㹋騧!؟٦غ٦؟؎س Kotlin Vol.1 FORTE խ衼 2020-09-12 晛 aozora Project 涪遤
כׄח ׆ס勓䩘מ⺅זיַגד׀לֵֹֿכַׇֹױն詇脢ס FORTEنؚ ٜطךն勓詇ך瑭ֿ剹ַגئ٭ف٭ئؕغ Kotlin ס䪫銉⻎☭霺ע 3 ⫖潨םסך ր㵅鴫!ئ٭ف٭ئؕغ Kotlinցبٛ٭ثכי砩ֿ♕ַג־םכ䘼זיַױն♀
㎇ע⯼㎇ױךכꇙַրץכחסؓوٛآ٭ب٘٤㴞䧯ױךցךעםׂր׆ ئ٭ف٭ئؕغ Kotlin ךמעלֹגַַסցמ瞩ֻ┞⫖כםזיַ ױն نٝ٭ّ٠٭ؠע SpringBoot ךס闋鞃כםזיַױն勓剹⯼詇ױךכ⻎ׂ WindowsյMac ╋㸐䗎ךն 劤衼ךⰻ㺁 ♀㎇עַַ㵅鴫!כַֹ׆כךյ⯼詇ױךꄼי瞉脢ֿ雧יײגַכ䘼ז יַג׆כ雧יײױגն⪽✄溷מע姌ס 3 חךն • SpringBoot סف٭ة٘٤ؓشو • JPA מط٭هٜ JOIN ס㕈狸 • نٜؒؕסؓشوٞ٭غ SpringBoot ךغ٦آّٝ،حف SpringBoot סف٭ة٘٤ؓشوע⯼詇㕂瞉יַ劄╚מ陧יֽյ鞅脢 ־ס鮐ゼֵזג⫐㵼ךגն㕂瞉脢כיעف٭ة٘٤םלס欎㘶ֿ㜟זי ױֹכ鞃僻יַג⫐㵼ךעⳛ✑םַםלסゼ꾴ֿ溪气ג״յכי꾁ס浌ַ ゼ꾴ךն ♀㎇עאס㸐⭦闋鞃׆כךյ阾ꃍֿ⺜ׂםזי㸐⭦ׂם׆כ 柬זיַױն 2
JPA ח״ذ٦ـٕ JOIN ך㛇燉 ⯼詇ױךע┞㎇ס亣✑ךץכחסط٭هٜמ㸐י־䔔꼸םַؓوٛآ٭ب٘ ٤剹ַי׀ױגն־յ┾ס╚מ⮂㎇זיַ㝂ׂסؓوٛآ٭ب٘٤עյ┞ ㎇ס亣✑ך鏿俙סط٭هٜמ㸐י䔔꼸塌茣䭥זגؓوٛآ٭ب٘٤ס ֹֿ㝂ַךֹն אסג״յ♀㎇ע鏿俙סط٭هٜ JOIN
י亣✑偙岺ס㕈狸闋鞃יַױ նⷃ栃סط٭هٜ嗱筺յ鏿겧םؓوٛآ٭ب٘٤ئ٭ف٭ئؕ غ Kotlin ך銨槁ך׀ֹמםױն ם ֽ յ勓 剹 ך 闋 鞃 碃 ㎪ ע@OneToOneյ@ManyToOneյ@OneToManyյ @ManyToMany מ SELECT דׄכםױն剳偆⯸ꯙյN+1 ゼ꾴מחַ יע䪒ַױ؆סךֵ־״ׇ◗䪩ׂדַն *1 ؿ؋؎ٕך،حفٗ٦س Web ؓوٛآ٭ب٘٤ךע蔦䉁銨槁ג״סؓفذ٭氺⦐յ霄ַ鞃僻 骅־ם銨槁ג״מ氺⦐ⳛ氺ؓشوٞ٭غױն⯼詇ױךעط؞تعס ⭦槏ע闋鞃י׀ױגֿյ׆סنٜؒؕؓشوٞ٭غמꫀ闋鞃עיַױ؆ ךגն ♀㎇עهٚؗا־ Web ئ٭ف٭מ⟛㲽偙岺סײ闋鞃ױֿյ♀䔿ب ٛ٭ثֿꅼ؆ד䫐מע Amazon S3 ♑סؠٚؗغؤ٤مٖ٭طؔ٤ءئ٭لتמ ؓشوٞ٭غꅙ䶏םל闋鞃גַכ脝ֻיַױն 橆㞮 勓剹⯼詇כ⻎ׂ WindowsյMac ╋㸐䗎ךնIDE ؙظؔذמחַי⻎ IntelliJ IDEAյVS Code ךסⳛ✑牞霼יַױֿյ杅מ䔔꼸砈䨾עם ַעםסך⯼詇鞅؆ךַףゼ꾴םַעךնםֽ׆׆ךַֹⳛ✑牞霼עյ Mac ס IntelliJ IDEA ך✑䧯גوٞةؘؠع Mac ס VS CodeյWindows ס IntelliJ IDEAյVS Code ךⳛ✑牞霼גס䟨⽱כםױն1 ־יס欎㘶 ך牞霼יַׄךעםַסךֵ־״ׇ◗䪩ׂדַն 勓詇ס⫐㵼ך⮔־םַ掾ֵֿף䔿ꃍ⯼詇锶יַגדׂ־յץ詇 脢*2 ױךׇ┞㖥ׂדַնيتعؙنؚ٭عך㎇瞩יַגד׀ױն *1 ♀㎇闋鞃םַ槏氮מחַיע睗 2 皹ס劄䔿סؤّٚ䕣镣ׂדַ *2 Twwiter https://twitter.com/FORTEgp05 3
וז➂ぢַֽ 勓詇עր㵅鴫!ئ٭ف٭ئؕغ Kotlinցبٛ٭ثס┞⫖潨ր⪜ꪎ!㵅鴫!ئ٭ف٭ئؕ غ Kotlinց鞅؆ךַ⯼䳀כיַױն⪽✄溷מע Kotlin + Spring Boot +
JPA + Thymeleaf + ظ٭ذي٭تh2 Database םלךظ٭ذ✑䧯յ嗱筺յ剳 偆յ⯸ꯙַ CRUD ⭦槏ֿ⮔־յזג׆כֵֿյꪛ溪欎㘶םל ךמֵյֵַע蔦⮔ךֻ瓦䍲ס偙㸐骭鞅脢כיַױն אסג״յئ٭ف٭ئؕغ Kotlin כע?Spring Boot כע?ֻזאא Kotlin ז יםמ?鞅ײ偙־םַ˘כַֹ☭עץبٛ٭ث 1 ⫖潨ךֵր⪜ꪎ!㵅鴫!ئ٭ ف٭ئؕغ Kotlinցֽ鞅ײמם׆כֽ⳹״ױն姌ס QR ؤ٭غյٛ٤ؠ ־鮫⪜⺪茣ך!PR https://fortegp05.booth.pm/items/1560389 --[[path = ebook_qr_code_1.png (not exist)]]-- ㎫ 1: ⪜ꪎ!㵅鴫!ئ٭ف٭ئؕغ Kotlin ֿך劤ד䖤ֿה ׆ס勓ע Java םלך Web ꪛ溪ס篑닫ֵֿ☭⻔ׄמئ٭ف٭ئؕغ Kotlin SpringBootך姌㵅鴫יײ勓ךն׆ס勓鞅ײ箽כ姌סֹם枱䡢מ םױն • SpringBoot סف٭ة٘٤ؓشو – ف٭ة٘٤ؓشو✑噺ס偙岺ֿ⮔־ – ف٭ة٘٤ؓشوמ⛘ֹؙٚ٭砈䨾ס⟵婞 • JPA מط٭هٜ JOIN ס㕈狸 – JPA ךط٭هٜ JOIN 偙岺כ甦꿔 – ؙٚ٭ס㸐⭦ • نٜؒؕסؓشوٞ٭غ – نٜؒؕؓشوٞ٭غס㵅鍮偙岺 ֵםגסئ٭ف٭ئؕغ Kotlin ך׆זילֹזי㵅鍮ס כַֹ䘼ַמ 瞩ֻג׆؆םמַֹ׆כעֵױ؆ն 4
ֿך劤דכ鍑铡׃זְֿה 勓詇ךע SpringBoot ךס㵅鍮偙岺מחַיַׂח־闋鞃יַױֿյֵׂױ ך杅㴻ס㵅鍮偙岺ךֵ勓呬溷ם❈ַ偙نٝ٭ّ٠٭ؠס╚麃םלמחַיע闋鞃 יַױ؆ն 杅מ JPA מط٭هٜ JOIN
ע긊䊬מ鏿겧ךֵג״յ勓剹ךע㕈狸ꌃ⮔סײ 䪒ַױն⪽✄溷מע剳偆⯸ꯙյN+1 ゼ꾴מחַיע䪒ַױ؆סךֵ־״ ׇ◗䪩ׂדַն ױג闋鞃מע JPA Thymeleaf ❈氠יַױֿյ勓詇ךע闋鞃ױ؆ն ׂ־םַ!כַֹ偙עץ⯼詇ׇ镣מם׆כֽ⳹״ױն ֿך劤ך⢪ְ倯 ׆ס勓ע瞉脢ֿئ٭ف٭ئؕغ Kotlin ךրֵעלֹס־םց㳔ש╚ך 沼ゼמ䘼זג׆כ鞪ג׆כ䪫銉剹ס䓺ךؓؗعوشعגסךն 勓剹ע׆ס勓סכֽמףⳛׂסֿך׀յכַֹכ׆潨䭰י剹־ יַױն׆ס勓鞅״ף槏㺌♐篁ײֿי槏闋ך׀ֹמע剹־יַױ ؆ն׆ס勓⪜כיאסמ㞺מֵ׆כמ蕟⽱䭥זיַגדׄג䌗ַ ךն 勓詇ע Vol.1 ס⻏סכֽ 2 ♧ꮳ⮂◙㴻ךַױնאב 1 ⫖ממע 㸯ַ؆דׄל겏ױף 1 ⫖מםאֹםط٭ُ겏״י䩘ⳛ־יַ׀גַכ 䘼זיַױն 鞅ײ箽זג䠊䞯ꪨꇙַס䭰䷂յꃯⲎ锡劳םלע姌סـشبٖذء氠ַי Twitter ך⽌ַיַגדׄכ㯹ַךնץյ䠊䞯ֽ䔵היֽױն #ְְ㹋騧؟٦غ٦؟؎سKotlin ױג♀㎇ס⫐㵼ך IntelliJ IDEAյVS Code ㎷劔ך䔔꼸砈䨾ע杅מםַע םסךյ⯼詇鞅؆ךַףゼ꾴םַכ䘼ַױն勓詇ס⫐㵼ך⮔־םַ掾 ֵֿףץ詇脢*3 ױךׇ┞㖥ׂדַնيتعؙنؚ٭عך㎇瞩יַגד׀ ױն ⯜顑✲갪 勓剹מ阾鼥⫐㵼ע瞉脢ס䨾㺲篁縨ס⪪䑑锶闋ךעֵױ؆նױגյ勓剹 ע⺪茣םꮹ婞牞劻ֹמⲚ״יַױֿյ瞉脢ֿאס⫐㵼⟛隍סךע *3 Twwiter https://twitter.com/FORTEgp05 5
ֵױ؆նאסג״յ勓剹ס阾鼥⫐㵼מ㕈טַג鞅脢ס鉿掿յצ鞅脢ֿ錺זג䴮 㵬מחַי瞉脢עם؆鬬⚈鬘ֹסךעֵױ؆ն 6
湡如 כׄח 2 勓詇ס⫐㵼 . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 SpringBoot סف٭ة٘٤ؓشو . . . . . . . . . . . . . . . . . . 2 JPA מط٭هٜ JOIN ס㕈狸 . . . . . . . . . . . . . . . . . 3 نٜؒؕסؓشوٞ٭غ . . . . . . . . . . . . . . . . . . . . . . 3 欎㘶 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ל؆ם☭⻔ׄ־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ׆ס勓ך䕑׆כ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ׆ס勓ךע闋鞃םַ׆כ . . . . . . . . . . . . . . . . . . . . . . . . . 5 ׆ס勓ס❈ַ偙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 ⩸鬬◜꽃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 痥 1 畍 SpringBoot ךغ٦آّٝ،حف 9 1.1 ⯼䳀כםف٭ة٘٤ . . . . . . . . . . . . . . . . . . . . . . . . 9 1.1.1 ف٭ة٘٤┞镣㕂瞉免 . . . . . . . . . . . . . . . . . 9 1.2 䩘꽄ס嚣锡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3 build.gradle.kts 紬겏 . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.1 org.springframework.boot . . . . . . . . . . . . . . . . . 11 1.3.2 io.spring.dependency-management . . . . . . . . . . . . 11 1.3.3 jvm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.4 plugin.spring . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3.5 plugin.jpa . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.4 gradle ס剳偆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5 لٜغ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5.1 import javax.validation... ֿ闋尴ך׀םַ . . . . . . . . 14 1.5.2 Sort ֿؙٚ٭מם . . . . . . . . . . . . . . . . . . . . 15 1.5.3 flash().attribute ע㒘䭰㴻┮锡מ . . . . . . . . . . . . . . 15 1.6 ⫙لٜغכ劄箽牞霼 . . . . . . . . . . . . . . . . . . . . . . . . . 15 7
湡如 痥 2 畍 JPA ח״ذ٦ـٕ JOIN 鑐ׅ 17 2.1
وٞةؘؠعס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 1 㸐 1 ס JOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1 ؠٚتס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.2 H2 ظ٭ذي٭تס陭㴻 . . . . . . . . . . . . . . . . . . . 20 2.2.3 ظ٭ذס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.4 㵅鉿 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3 1 㸐㝂ס JOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.1 ؠٚت㴻聋 . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.2 ظ٭ذס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.3 㵅鉿 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.3.4 气䕉־ؠٚتמ㸐י㝂㸐 1 ךֵ陭㴻סꃯⲎ . . . . . 25 2.3.5 ⫙צ㵅鉿 . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.3.6 Classes ؠٚتס toString ס؛٭ف٭ٚؕغ . . . . . . . . 26 2.3.7 ┩䍲㵅鉿 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.4 㝂㸐 1 ס JOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.5 㝂㸐㝂ס JOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.5.1 ؠٚت㴻聋 . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.5.2 ظ٭ذס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . 30 2.5.3 㵅鉿 . . . . . . . . . . . . . . . . . . . . . . . . . . 31 痥 3 畍 ؿ؋؎ٕ،حفٗ٦س 33 3.1 وٞةؘؠعס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2 ؠٚتنٜؒؕס✑䧯 . . . . . . . . . . . . . . . . . . . . . . . . 34 3.2.1 HTML نٜؒؔס✑䧯 . . . . . . . . . . . . . . . . . . . 36 3.3 㵅鉿 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ֮הָֹ 39 䊬מؤ٭غ剹׀籽ׄ . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 劄䔿מםױגֿ˘ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 衼罏稱➜ 40 8