Hamutaro - Hamtaro 4

Backend/Java 25

[JPA] JPA ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ 1 - 1:N, N:1, N:N

JPA ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘JPA๋กœ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘์ด๋‹ค.RDB๋Š” ํ…Œ์ด๋ธ”๊ณผ FK๋กœ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ , JPA๋Š” ์ด๋ฅผ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. 1:N (One-To-Many)ํ•˜๋‚˜ -> ์—ฌ๋Ÿฌ ๊ฐœ ๊ด€๊ณ„์˜ˆ์‹œํšŒ์› 1๋ช… -> ์ฃผ๋ฌธ ์—ฌ๋Ÿฌ ๊ฐœ๊ฒŒ์‹œ๊ธ€ 1๊ฐœ -> ๋Œ“๊ธ€ ์—ฌ๋Ÿฌ ๊ฐœํŠน์ง•FK๋Š” ํ•ญ์ƒ N(๋‹ค) ์ชฝ์— ์กด์žฌ์‹ค์ œ๋กœ ๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ชฝ์€ ๋Œ€๋ถ€๋ถ„ N์ชฝ1์ชฝ์—์„œ 1:N ๋‹จ๋ฐฉํ–ฅ ๋งคํ•‘์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ๋งคํ•‘ ์˜ˆ์‹œ (์–‘๋ฐฉํ–ฅ)N:1 + 1:N ์–‘๋ฐฉํ–ฅ ์กฐํ•ฉ@Entityclass Member { @OneToMany(mappedBy = "member") private List orders = new ArrayList();}@Entityclass Order { @ManyToOne @JoinColu..

Backend/Java 2025.11.12

[JPA] JPA (Java Persistence API) ๋ž€?

JPA ๋ž€?์ž๋ฐ”์—์„œ ๊ฐ์ฒด๋ฅผ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ ์ž๋™์œผ๋กœ ๋งคํ•‘ํ•ด์ฃผ๋Š” ORM(Object-Relational Mapping) ๊ธฐ์ˆ SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์ €์žฅ,์กฐํšŒ,์ˆ˜์ •,์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ JPA๋ฅผ ์‚ฌ์šฉํ• ๊นŒ? MyBatis์ฒ˜๋Ÿผ SQL ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋ฉด ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค SQL ์ˆ˜์ •ํ•ด์•ผ ํ•จํ•˜์ง€๋งŒ JPA๋Š” ์—”ํ‹ฐํ‹ฐ์™€ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•ด๋‘๋ฉด SQL์€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋จ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ JPA ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๊ตฌ์„ฑ ์š”์†Œ์„ค๋ช…EntityDB ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค RepositoryCRUD๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์ŠคEntitiyManagerJPA์˜ ํ•ต์‹ฌ ๊ฐ์ฒด. ์—”ํ‹ฐํ‹ฐ ์ €์žฅ, ์กฐํšŒ ๊ด€๋ฆฌPersistence Context์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ 1์ฐจ ์บ์‹œ..

Backend/Java 2025.11.07

[Java] ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ(Primitive) ํƒ€์ž…๊ณผ ๋ ˆํผ๋Ÿฐ์Šค(Reference) ํƒ€์ž…

Primitive TypeJava์˜ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…์€ 8๊ฐ€์ง€byte, short, int, long, float, double, char, boolean์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋จ (์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์›€)๊ฐ’์ด ์ƒ์„ฑ๋˜๋ฉด ์Šคํƒ ์˜์—ญ์— ์ง์ ‘ ํ• ๋‹น๋˜๋ฉฐ, ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์‚ฌ๋ผ์งint number = 10;  Null์„ ๋‹ด์„ ์ˆ˜ ์—†์Œint number = null; //๋ถˆ๊ฐ€๋Šฅ์ œ๋„ค๋ฆญ ํƒ€์ž… ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋ŠฅList number; //๋ถˆ๊ฐ€๋Šฅ   Reference Type๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ํƒ€์ž…ํด๋ž˜์Šค, ๋ฐฐ์—ด, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋จ (ํฐ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฐ€๋Šฅ, ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ๊ธด ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์— ์ ํ•ฉ)๋™์ ์œผ๋กœ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๋ฉฐ, ๊ฐ์ฒด๊ฐ€ ํ•„์š”์—†์„ ๋•Œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ •๋ฆฌ๋จHello Wo..

Backend/Java 2024.12.07

[Java] ์ŠคํŠธ๋ฆผ์˜ filter()๋กœ ์›ํ•˜๋Š” ์กฐ๊ฑด์˜ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋งํ•˜๊ธฐ

stream()Java8๋ถ€ํ„ฐ ๋„์ž…์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›์ปฌ๋ ‰์…˜, ๋ฐฐ์—ด, ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ํ•จ์ˆ˜ํ˜• ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จimport java.util.Arrays;import java.util.List;public class StreamExample { public static void main(String[] args){ List names = Arrays.asList("Alice", "Bob", "Charlie"); //stream ์ƒ์„ฑ ๋ฐ ์ค‘๊ฐ„ ์—ฐ์‚ฐ, ์ตœ์ข… ์—ฐ์‚ฐ names.stream() .filter(name -> name.startsWith("A")) // 'A'๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด๋ฆ„ ํ•„ํ„ฐ๋ง .ma..

Backend/Java 2024.09.09

[Java] Spring๊ณผ SpringBoot์˜ ์ฐจ์ด์ 

์„ค์ • ๋ฐ ๊ตฌ์„ฑ์Šคํ”„๋ง(Spring) : ์„ค์ •์ด ๋ณต์žก, ์ˆ˜๋™์œผ๋กœ ๋‹ค์–‘ํ•œ ์„ค์ •์„ ํ•ด์•ผํ•จ. bean ์„ค์ •, ์˜์กด์„ฑ ์ฃผ์ž… ์ค‘ ๋งŽ์€ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์„ค์ • ํŒŒ์ผ์ด ์ปค์ง€๊ฑฐ๋‚˜ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ.์Šคํ”„๋ง๋ถ€ํŠธ(SpringBoot) : ์„ค์ •์„ ๊ฐ„์†Œํ™”ํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•จ. ์ž๋™ ๊ตฌ์„ฑ์„ ํ†ตํ•ด ๊ธฐ๋ณธ ์„ค์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ. ๋‚ด์žฅ ์„œ๋ฒ„์Šคํ”„๋ง(Spring) : ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ฐ์บฃ์ด๋‚˜ ์ œํ‹ฐ๊ฐ™์€ ์™ธ๋ถ€ ์„œ๋ฒ„์— ๋ฐฐํฌํ•ด์•ผํ•จ. ์„œ๋ฒ„ ์„ค์ •์„ ๋”ฐ๋กœ ํ•ด์•ผ ํ•จ.์Šคํ”„๋ง๋ถ€ํŠธ(SpringBoot) : ํ†ฐ์บฃ๊ฐ™์€ ๋‚ด์žฅ ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‰ฝ๊ฒŒ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ. ๋”ฐ๋กœ ์™ธ๋ถ€ ์„œ๋ฒ„ ์„ค์น˜์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ JAR ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ. ์Šคํƒ€ํ„ฐ ํŒจํ‚ค์ง€์Šคํ”„๋ง(Spring) : ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ์ง์ ‘ ํ•ด์•ผ ํ•จ. ์—ฌ๋Ÿฌ ..

Backend/Java 2024.09.03

[JAVA] ๋ฐฐ์—ด ์ •๋ ฌ ๋ฉ”์„œ๋“œ Arrays.sort

https://codegym.cc/ko/groups/posts/ko.1107.java--- Java์—์„œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ •๋ ฌ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ด๊ณ  ํ•„์š”ํ•œ ์ž‘์—… ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํŠน์ • ์ˆœ์„œ๋กœ ์ผ๋ถ€ ์š”์†Œ ์ง‘ํ•ฉ์˜ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” Java์—์„œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œcodegym.cc ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๋ณด๋ฉด ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.์ด๋Ÿด ๋•Œ Arrays.sort ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค. Arrays.sort ์ž๋ฐ”์—์„œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Œ์‚ฌ์šฉํ•˜๋ ค๋ฉด 'java.util.Arrays' ํด๋ž˜์Šค๋ฅผ import ํ•ด์•ผ ํ•จ1. ๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด ์ •๋ ฌ์ •์ˆ˜, ์‹ค์ˆ˜, ๋ฌธ์ž ๋“ฑ ๊ธฐ๋ณธ ๋ฐ์ด..

Backend/Java 2024.08.29

[Java] Math ํด๋ž˜์Šค : Math.pow(), Math.sqrt()

Math ํด๋ž˜์Šค๋ž€? ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์ •์  ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šคimport๋ฌธ ์—†์ด๋„ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋Š” static์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด์„œ ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ Math.pow() ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ณ„์‚ฐ๋ฐ˜ํ™˜ํƒ€์ž…์ด double์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜ ํ•„์š”public static double pow(double a, double b) public class MathPowExample { public static void main(String[] args) { double result1 = Math.pow(2, 3); // ๊ฒฐ๊ณผ: 8.0 System.out.println("2์˜ 3์ œ๊ณฑ: " ..

Backend/Java 2024.08.22

[Java] ๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ

indexOf ํŠน์ • ๋ฌธ์ž ๋˜๋Š” ๋ฌธ์ž์—ด์ด ์ฒ˜์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” index๋ฅผ ๋ฐ˜ํ™˜, ์ฐพ๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜ํ•จString str = "Hello, World!";int index = str.indexOf("World"); // 7int charIndex = str.indexOf('o'); // 4 charAt ๋ฌธ์ž์—ด์˜ ํŠน์ • ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•จString str = "Hello";char c = str.charAt(1); // 'e' substring ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•จ์‹œ์ž‘ index๋Š” ํฌํ•จ, ์ข…๋ฃŒ index๋Š” ํฌํ•จ๋˜์ง€ ์•Š์ŒString str = "Hello, World!";String sub = str.substring(7); // "World!"String sub2 = str..

Backend/Java 2024.08.13

[JAVA] StringBuilder ์ฃผ์š” ๋ฉ”์†Œ๋“œ

StringBuilder๋ž€? Java์—์„œ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค StringBuilder์˜ ์ฃผ์š” ๋ฉ”์†Œ๋“œ append()๋ฌธ์ž์—ด, ๋ฌธ์ž, ์ˆซ์ž, boolean ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ StringBuilder ๊ฐ์ฒด์˜ ๋์— ์ถ”๊ฐ€ StringBuilder sb = new StringBuilder("Hello");sb.append(" World");System.out.println(sb.toString()); // ์ถœ๋ ฅ: "Hello World"  insert()์ง€์ •๋œ ์œ„์น˜์— ๋ฌธ์ž์—ด ๋˜๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‚ฝ์ž… StringBuilder sb = new StringBuilder("Hello");sb.insert(5, " World");System.out.println(sb.toString()); // ์ถœ..

Backend/Java 2024.07.24

[JAVA] final ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด์„œ

final ํ‚ค์›Œ๋“œ์˜ ์‚ฌ์šฉ1. final ๋ณ€์ˆ˜   - ์ดˆ๊ธฐํ™” ํ›„ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ. ์ƒ์ˆ˜์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋…final int MAX_HEIGHT = 100;MAX_HEIGHT = 200; // ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ   * ํ•„์š”ํ•œ ์ด์œ    - ์ƒ์ˆ˜ ์„ ์–ธ : ์ƒ์ˆ˜ ๊ฐ’์„ ์„ ์–ธํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€   - ๋ณด์•ˆ ๋ฐ ๋ฌด๊ฒฐ์„ฑ : ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”๋œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€   * final๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ    - ์ค‘์š”ํ•œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์–ด, ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ์ง์ด ๊นจ์ง€๊ฑฐ๋‚˜ ์˜ˆ์ƒ์น˜๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค 2. final ๋ฉ”์„œ๋“œ    - final ๋ฉ”์„œ๋“œ๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋“œํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉclass Parent { ..

Backend/Java 2024.06.25