๋ฐ˜์‘ํ˜•

๐Ÿ’พ Database 22

์ธ๋ฑ์Šค(4) : ์ƒ์„ฑ, ์‚ญ์ œ, ์‚ฌ์šฉ, ํ…Œ์ŠคํŠธํ•˜๊ธฐ + ์‹คํ–‰๊ณ„ํš ๋ณด๋Š”๋ฒ•

๋ชฉ์ฐจ  ์ด์ „ ๊ฒŒ์‹œ๋ฌผhttps://lotuus.tistory.com/168 ์ธ๋ฑ์Šค(3) : ์ธ๋ฑ์Šค ์ข…๋ฅ˜๋ชฉ์ฐจ ์ด์ „ ๊ฒŒ์‹œ๋ฌผhttps://lotuus.tistory.com/167 ์ธ๋ฑ์Šค(2) : ์ธ๋ฑ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ชฉ์ฐจ ์ด์ „ ๊ฒŒ์‹œ๋ฌผ https://lotuus.tistory.com/166 ์ธ๋ฑ์Šค(1) : ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ์ •์˜, ๋ฐ์ดํ„ฐ๋ชฉ์ฐจ  ์ธ๋ฑ์Šค ์™œ ์‚ฌlotuus.tistory.com    MySQL ๊ธฐ์ค€์œผ๋กœ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ์ธ๋ฑ์Šค๋Š” ์ƒ์„ฑ๊ณผ ์‚ญ์ œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (์ˆ˜์ • ๋ถˆ๊ฐ€) ์ƒ์„ฑํ•˜๊ธฐ-- B+Tree ์ธ๋ฑ์Šค (๊ธฐ๋ณธ ์ธ๋ฑ์Šค)CREATE INDEX idx_btree ON table_name (column_name);-- ํ•ด์‹œ ์ธ๋ฑ์Šค (Memory ์—”์ง„์—์„œ๋งŒ ์‚ฌ์šฉ)CREATE INDEX idx_has..

๐Ÿ’พ Database 2024.07.17

์ธ๋ฑ์Šค(3) : ์ธ๋ฑ์Šค ์ข…๋ฅ˜

๋ชฉ์ฐจ ์ด์ „ ๊ฒŒ์‹œ๋ฌผhttps://lotuus.tistory.com/167 ์ธ๋ฑ์Šค(2) : ์ธ๋ฑ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ชฉ์ฐจ ์ด์ „ ๊ฒŒ์‹œ๋ฌผ https://lotuus.tistory.com/166 ์ธ๋ฑ์Šค(1) : ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ์ •์˜, ๋ฐ์ดํ„ฐ๋ชฉ์ฐจ  ์ธ๋ฑ์Šค ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋‚˜์š”?๋ฌธ์ œ์ƒํ™ฉ๋ฐ์ดํ„ฐ 10์–ต๊ฐœ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.์•„๋ž˜ SQL๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐlotuus.tistory.com    ๋‹ค์–‘ํ•œ ๊ด€์ ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.   ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ •๋ ฌํ•˜๋‚˜์š”?Clustered Indexํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ง€์ •๋œ ์ปฌ๋Ÿผ์œผ๋กœ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์žฌ๋ฐฐ์—ดํ•˜๋Š” ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค.ํ…Œ์ด๋ธ”๋‹น ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ primary key๊ฐ€ ์„ค์ •๋œ ์ปฌ๋Ÿผ์€ ์ž๋™์œผ๋กœ Clustered Index๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.⇒ Prima..

๐Ÿ’พ Database 2024.07.17

์ธ๋ฑ์Šค(2) : ์ธ๋ฑ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ชฉ์ฐจ ์ด์ „ ๊ฒŒ์‹œ๋ฌผ https://lotuus.tistory.com/166 ์ธ๋ฑ์Šค(1) : ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ์ •์˜, ๋ฐ์ดํ„ฐ๋ชฉ์ฐจ  ์ธ๋ฑ์Šค ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋‚˜์š”?๋ฌธ์ œ์ƒํ™ฉ๋ฐ์ดํ„ฐ 10์–ต๊ฐœ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.์•„๋ž˜ SQL๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ• ๊นŒ์š”?SELECT * FROM Employees WHERE Name = 'Alice';๋ฐ์ดํ„ฐ๋ฒ lotuus.tistory.com   ์•ž์—์„œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, Full Table Scan ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.๊ทธ๋ ‡๋‹ค๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—”, ์–ด๋–ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธธ๋ž˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ์š”?์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์€ ๋Œ€ํ‘œ์ ์œผ๋กœ 3๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ,์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.HashTable..

๐Ÿ’พ Database 2024.07.17

์ธ๋ฑ์Šค(1) : ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ์ธ๋ฑ์Šค์˜ ์ •์˜, ์ธ๋ฑ์Šค์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ

๋ชฉ์ฐจ  ์ธ๋ฑ์Šค ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋‚˜์š”?๋ฌธ์ œ์ƒํ™ฉ๋ฐ์ดํ„ฐ 10์–ต๊ฐœ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.์•„๋ž˜ SQL๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ• ๊นŒ์š”?SELECT * FROM Employees WHERE Name = 'Alice';๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” Full Table Scan ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. Full Table Scanํ…Œ์ด๋ธ”์˜ ์ฒซ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ–‰๊นŒ์ง€ ๋ชจ๋“  ํ–‰์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.๋‹จ์  : ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.   ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?์ฑ… ๋’ท๋ฉด์˜ ์ƒ‰์ธ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.๐Ÿ’ก ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.  ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆœ์„œ๋Œ€๋กœ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.์ธ๋ฑ์Šค๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€์ธ๋ฑ์Šค๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ..

๐Ÿ’พ Database 2024.07.17

[JPA] ๊ฐ’ ํƒ€์ž…(๊ธฐ๋ณธ๊ฐ’, @Embedded, ๊ฐ’ํƒ€์ž… ์ปฌ๋ ‰์…˜)

๋ชฉ์ฐจ ๊ธฐ๋ณธ๊ฐ’ ํƒ€์ž… ๋‹จ์ˆœํžˆ ๊ฐ’์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์ด๋‚˜ ๊ฐ์ฒด์ด๋‹ค. ์‹๋ณ„์ž๊ฐ€ ์—†๊ณ  ๊ฐ’๋งŒ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ ์ถ”์  ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ž„๋ฒ ๋””๋“œํƒ€์ž… ์—”ํ‹ฐํ‹ฐ์ด์ง€๋งŒ, ๊ธฐ๋ณธ๊ฐ’์ฒ˜๋Ÿผ ๋‹จ์ˆœํžˆ ๊ฐ’์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. = ๋ณ€๊ฒฝ ์ถ”์  ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. @Embeddable : ๊ฐ’์„ ์ •์˜ํ•˜๋Š” ๊ณณ์— ํ‘œ์‹œ @Embedded : ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์— ํ‘œ์‹œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํ•„์ˆ˜๋กœ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผํ•œ๋‹ค. @Entity public class Member{ @Id @GeneratedValue @Column(name="member_id") private Long id;//๊ฐ’ ํƒ€์ž… private String name;//๊ฐ’ ํƒ€์ž… private String city; private String street; private String zipcode; } cit..

๐Ÿ’พ Database 2022.02.22

[JPA] ํ”„๋ก์‹œ์™€ ์ฆ‰์‹œ๋กœ๋”ฉ, ์ง€์—ฐ๋กœ๋”ฉ / ์˜์†์„ฑ ์ „์ด์™€ ๊ณ ์•„๊ฐ์ฒด

๋ชฉ์ฐจ em.getReference() ๋ฉ”์„œ๋“œ @Entity public class Member{ @Id @GeneratedValue @Column(name="member_id") private Long id; private String name; @ManyToOne @JoinColumn(name="team_id") private Team team; private static void printMember(Member member){ System.out.println("member : " + member); } private static void printMemberAndTeam(Member member){ System.out.println("member : " + member); System.out.pr..

๐Ÿ’พ Database 2022.02.21

[JPA] ์ƒ์†๊ด€๊ณ„ ๋งคํ•‘, ๊ณตํ†ต ์†์„ฑ ๋งคํ•‘

๋ชฉ์ฐจ ๊ฐ์ฒด์˜ ์ƒ์†๊ด€๊ณ„ extends๋กœ ์ง€์›ํ•ด์ค€๋‹ค. @Entity public class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; private String name; private int price; private int stockQuantity; } @Entity public class Album extends Item{ private String artist; } @Entity public class Movie extends Item{ private String director; private String actor; } @Entity public class Book extends Item{ private String..

๐Ÿ’พ Database 2022.02.21

[JPA] ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘(๋‹ค๋Œ€์ผ, ์ผ๋Œ€์ผ, ๋‹ค๋Œ€๋‹ค)

๋ชฉ์ฐจ ๋‹ค๋Œ€์ผ / N:1 / @ManyToOne / N์ด ์ฃผ์ธ์ธ ๊ฒฝ์šฐ ์™ธ๋ž˜ํ‚ค๊ฐ€ ์žˆ๋Š” ์ชฝ์ด ์ฃผ์ธ N์ด ์ฃผ์ธ : @ManyToOne, @JoinColumn(name = "~") (์–‘๋ฐฉํ–ฅ์ธ ๊ฒฝ์šฐ) 1์ด ์„œ๋ธŒ : @OneToMany(mappedBy = "~") ์ผ๋Œ€๋‹ค / 1:N / @OneToMany / 1์ด ์ฃผ์ธ์ธ ๊ฒฝ์šฐ ์™ธ๋ž˜ํ‚ค๊ฐ€ ์žˆ๋Š” ์ชฝ์ด ์ฃผ์ธ...์ด์–ด์•ผํ•˜๋Š”๋ฐ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์˜ ์ฐจ์ด ๋•Œ๋ฌธ์— ๋ฐ˜๋Œ€ํŽธ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŠน์ดํ•œ ๊ตฌ์กฐ 1์ด ์ฃผ์ธ : @OneToMany, @JoinColumn(name = "~") (์–‘๋ฐฉํ–ฅ์ธ ๊ฒฝ์šฐ) N์ด ์„œ๋ธŒ : @ManyToOne, @JoinColumn(name = "~", insertable = false, updatable = false) (์‚ฌ์šฉํ•˜์ง€๋ง์ž) ๋‹จ์ ! - ์—”ํ‹ฐํ‹ฐ๊ฐ€ ..

๐Ÿ’พ Database 2022.02.21

[JPA]์˜์†์„ฑ ๊ด€๋ฆฌ : ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹

๋ชฉ์ฐจ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ? ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ฐœ๋…์ด๋‹ค. ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด์„œ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•œ๋‹ค. - J2EE ๊ฐ™์€ ํ™˜๊ฒฝ ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ €์™€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ 1:1 ๊ด€๊ณ„. ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ € ์•ˆ์— ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ 1๊ฐœ ์žˆ๋‹ค. - ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ €์™€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ 1:N ๊ด€๊ณ„. ์—ฌ๋Ÿฌ ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด 1๊ฐœ์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•œ๋‹ค. ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ๊ตฌ์กฐ 1. Mapํ˜•ํƒœ์˜ 1์ฐจ ์บ์‹œ ๊ณต๊ฐ„ : transaction.commit()์ „๊นŒ์ง€ ๊ฐ’์„ ๋ชจ์•„๋†“๋Š”๋‹ค. 2. ์“ฐ๊ธฐ์ง€์—ฐ SQL์ €์žฅ์†Œ : transaction.commit()์ „๊นŒ์ง€ SQL๋ฌธ๋“ค์„ ๋ชจ์•„๋†“๋Š”๋‹ค. em.persist(memberA) ํ•˜๋ฉด - insert SQL๋ฌธ์„ ์“ฐ๊ธฐ์ง€์—ฐ SQL์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ณ , - member..

๐Ÿ’พ Database 2022.02.21

[JPA] ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘

๋ชฉ์ฐจ ๋ชฉํ‘œ : "๊ฐ์ฒด์˜ ์ฐธ์กฐ์™€ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค๋ฅผ ๋งคํ•‘" ์‹œ๋‚˜๋ฆฌ์˜ค - ํšŒ์›๊ณผ ํŒ€์€ ๋‹ค๋Œ€์ผ ๊ด€๊ณ„์ด๋‹ค. - N๋ช…์˜ ํšŒ์›์€ 1๊ฐœ์˜ ํŒ€์— ์†Œ์†๋  ์ˆ˜ ์žˆ๋‹ค. - 1๊ฐœ์˜ ํŒ€์€ N๋ช…์˜ ํšŒ์›์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ํ…Œ์ด๋ธ”์— ๋งž์ถ”์–ด ๋ชจ๋ธ๋ง : ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด์— ๊ตฌํ˜„ Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setName("member1"); member.setTeamId(team.getId());//โญโญโญ ์‹๋ณ„์ž ์ €์žฅ em.persist(member); Member findMember = em.find(Member.class, member.getId()); Team findT..

๐Ÿ’พ Database 2022.02.20
๋ฐ˜์‘ํ˜•