Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin...

FORTE
September 09, 2020

いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_3_sample

FORTE

September 09, 2020
Tweet

More Decks by FORTE

Other Decks in Technology

Transcript

  1. כׄ׭ח ׆ס勓؅䩘מ⺅זיַגד׀לֹ׵ֵ׽ֿכׇֹ׉ַױ׌ն詇脢ס FORTEنؚ ٜطך׌ն勓詇ך瑭ֿ剹ַגئ٭ف٭ئؕغ Kotlin ס䪫銉⻎☭霺ע 3 ⫖潨םסך ր㵅鴫!ئ٭ف٭ئؕغ Kotlinցبٛ٭ثכ׊י׵砩ֿ♕ַג־םכ䘼זיַױ׌ն♀

    ㎇ע⯼㎇ױךכꇙַրץכחסؓوٛآ٭ب٘٤؅㴞䧯׈׎׾ױךցךעםׂր׆׿ ؅ئ٭ف٭ئؕغ Kotlin ך׷׾מעלֹ׊ג׼ַַסցמ瞩ֻ׾┞⫖כםזיַ ױ׌ն نٝ٭ّ٠٭ؠע SpringBoot ךס闋鞃כםזיַױ׌ն勓剹׵⯼詇ױךכ⻎׋ׂ WindowsյMac ╋㸐䗎ך׌ն 劤衼ךⰻ㺁 ♀㎇עַ؀ַ؀㵅鴫!כַֹ׆כךյ⯼詇ױך؅ꄼ׊י瞉脢ֿ雧׊יײגַכ䘼ז יַג׆כ؅雧׊יײױ׊גն⪽✄溷מע姌ס 3 חך׌ն • SpringBoot סف٭ة٘٤ؓشو • JPA מ׻׾ط٭هٜ JOIN ס㕈狸 • نٜؒؕסؓشوٞ٭غ SpringBoot ךغ٦آّٝ،حف SpringBoot סف٭ة٘٤ؓشوע⯼詇؅㕂瞉׊יַ׾劄╚מ׵陧׿יֽ׽յ鞅脢 ־׼ס鮐ゼ׵ֵזג⫐㵼ך׊גն㕂瞉脢כ׊יעف٭ة٘٤םלס欎㘶ֿ㜟؂זי׊ ױֹכ鞃僻׊יַג⫐㵼ךעⳛ✑׊םַםלסゼ꾴ֿ溪气׌׾ג״յכי׵꾁ס浌ַ ゼ꾴ך׌ն ♀㎇עאס㸐⭦؅闋鞃׌׾׆כךյ阾ꃍֿ⺜ׂםזי׵㸐⭦׊׷׌ׂם׾׆כ؅ 柬זיַױ׌ն 2
  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
  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
  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
  5. 湡如 כׄ׭ח 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
  6. 湡如 痥 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