inflearn 11

[INFCON] ์ธํ”„์ฝ˜ 2022 ํ›„๊ธฐ

7์›” ๋ง์ฆˆ์Œ์— ์ฐธ๊ฐ€ ์‹ ์ฒญ์„ ํ–ˆ๋˜(๋–จ์–ด์กŒ์ง€๋งŒ...) 2022.08.26. ์‚ผ์ •๋™ COEX ๊ทธ๋žœ๋“œ ๋ณผ๋ฃธ์—์„œ ์—ด๋ฆฐ ์ธํ”„์ฝ˜์„ ์šฐ์—ฌ๊ณก์ ˆ ๋์— ๋‹ค๋…€์™”์Šต๋‹ˆ๋‹ค. ํ‹ฐ์ผ“์ด ์—†๋Š” ์ƒํ™ฉ์—์„œ ์ธํ”„์ฝ˜ ์ฐธ์—ฌ ํ›„ ๋Š๊ผˆ๋˜ ์ ๋“ค์„ ๊ฐ„๋žตํ•˜๊ฒŒ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. https://infcon.day/ ๊ณ„๊ธฐ ์ธํ”„์ฝ˜ ์ฐธ์„์„ ์‹ ์ฒญํ•œ๊ฒŒ 7์›” 26์ผ ๊ฒฝ์ด์—ˆ์œผ๋‹ˆ ๋ฒŒ์จ ์‹œ๊ฐ„์ด ์ด๋ ‡๊ฒŒ ์ง€๋‚ฌ๋„ค์š”. 8์›” 2์ผ๊ฒฝ ๋ฐœํ‘œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ๊ทธ๋•Œ ๋–จ์–ด์กŒ๋‹ค๋Š” ๋ฌธ์ž๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค... ใ… ใ…  ๊ทธ๋ ‡๊ฒŒ ์•„์‰ฝ๊ฒŒ ์ฐธ์„์„ ๋ชปํ•˜๋‚˜ ์‹ถ์–ด ๋ฐ˜ ํฌ๊ธฐํ•˜๊ณ  ์žˆ๋Š” ๋‹น์ฒจ๋œ ์ง€์ธ ์ค‘ ํ•œ๋ถ„์ด ๋‹น๊ทผ๋งˆ์ผ“๊ณผ ๊ฐ™์€ ๊ณณ์—์„œ ๊ตฌํ•ด๋ณด๋ผ๊ณ  ํ•˜์‹œ๋”๊ตฐ์š”! ๊ทธ๋ž˜์„œ ๋‹น๊ทผ๋งˆ์ผ“์— ํ‹ฐ์ผ“์„ ๊ตฌํ•œ๋‹ค๊ณ  ๋‚ด์šฉ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค๋งŒ... ์ง€์—ญ ํƒ“์ธ์ง€ ์•„๋‹ˆ๋ฉด ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ์˜ฌ๋ฆฐ ํƒ“์ธ์ง€ ์—ฐ๋ฝ์ด ๋”ฐ๋กœ ์—†๋”๊ตฐ์š” ใ…  ๊ทธ๋Ÿฐ ์ƒํƒœ์—์„œ ์ธํ”„์ฝ˜ ๋‹น์ผ์ธ 8์›” 26..

TIL 2022.10.11

[JPA] ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ

์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ @mappedBy FK๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ” Table User @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; Team @OneToMany(mappedBy = "team") private List users = new ArrayList(); 1(Team): N(User)์˜ ๊ด€๊ณ„์ผ ๊ฒฝ์šฐ jpa ์„ค์ •์„ ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ User์™€ Team๊ณผ ๊ฐ™์€ ๊ฐ์ฒด์— ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„ ์„ค์ • ์‹œ ์–ด๋Š ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด ์ฃผ์—ˆ์„ ๋•Œ ์‹ค์ œ DB์— ๋ฐ˜์˜์„ ํ•˜๋Š๋ƒ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๊ฒฝ์šฐ User๊ฐ€ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด User ๊ฐ์ฒด์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด ์ฃผ์–ด์•ผ DB์— ๊ฐ’์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค...

CS 2021.12.22

[JPA] ๊ธฐ๋ณธ ํ‚ค ๋งคํ•‘

@Id @GeneratedValue IDENTITY ์ „๋žต SEQUENCE ์ „๋žต TABLE ์ „๋žต ๋ฐฉ๋ฒ• ์ง์ ‘ ํ• ๋‹น : @Id ๋งŒ ์‚ฌ์šฉ ์ž๋™ ์ƒ์„ฑ : @GeneratedValue @Id @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private String id; User user = new User(); user.setId("Id_a") user.setUsername("A"); IDENTITY ์ „๋žต GenerationType.IDENTITY ๊ธฐ๋ณธ ํ‚ค ์ƒ์„ฑ์„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค. MYSQL, PostgreSQL, SQL Server, DB2์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ex) MySQL์˜ AUTO_ INCREMENT @Id @GeneratedValue(stra..

CS 2021.12.15

[HTTP] URI์™€ ์›น ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ ํ๋ฆ„

URI (Uniform Resource Idenfier) Unifor: ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ํ†ต์ผํ•œ ๋ฐ•์‹ Resource: ์ง€์›, URI๋กœ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ(์ œํ•œ ์—†์Œ) Identifier: ๋‹ค๋ฅธ ํ•ญ๋ชฉ๊ณผ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด URL Locator: ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ง€์ • foo :/ /xxx.xxx:8080 /over/there ? name=jason # nose ... scheme / authority / path / query / fragment scheme - ์ฃผ๋กœ ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ. protocol - ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ž์›์— ์ ‘๊ทผํ•  ๊ฒƒ์ธ๊ฐ€ ํ•˜๋Š” ์•ฝ์† ๋ฐ ๊ทœ์น™ โ€‹ ex) http, https, ftp ๋“ฑ http๋Š” 80, https 443 ํฌํŠธ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉ. scheme://[userInfo@]..

CS 2021.12.14

[HTTP] ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ

IP(์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ) ์ง€์ •ํ•œ IP ์ฃผ์†Œ(IP Address)์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ํŒจํ‚ท(Packet)์ด๋ผ๋Š” ํ†ต์‹  ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ IP ํŒจํ‚ท ์ •๋ณด ์ถœ๋ฐœ์ง€ ip ๋ชฉ์ ์ง€ ip ์ „์†ก ๋ฐ์ดํ„ฐ IP ํ”„๋กœํ† ์ฝœ์˜ ํ•œ๊ณ„ ๋น„์—ฐ๊ฒฐ์„ฑ ํŒจํ‚ท์„ ๋ฐ›์„ ๋Œ€์ƒ์ด ์—†๊ฑฐ๋‚˜ ์„œ๋น„์Šค ๋ถˆ๋Šฅ ์ƒํƒœ์—ฌ๋„ ํŒจํ‚ท ์ „์†ก ๋น„์‹ ๋ขฐ์„ฑ ์ค‘๊ฐ„์— ํŒจํ‚ท์ด ์‚ฌ๋ผ์ง€๋ฉด ์–ด๋–ป๊ฒŒ ๋  ๊ฒƒ์ธ๊ฐ€? ํŒจํ‚ท์ด ์ˆœ์„œ๋Œ€๋กœ ์˜ค์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋  ๊ฒƒ์ธ๊ฐ€? ํ”„๋กœ๊ทธ๋žจ ๊ตฌ๋ถ„ ๊ฐ™์€ IP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์—์„œ ํ†ต์‹ ํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‘˜ ์ด์ƒ์ด๋ฉด ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•  ๊ฒƒ์ธ๊ฐ€? ์œ„์˜ ๋ฌธ์ œ๋กœ ์ธํ•ด TCP UDP ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค TCP, UDP TCP์˜ ํŠน์ง• ์—ฐ๊ฒฐ์ง€ํ–ฅ - TCP 3 way handshake(๊ฐ€์ƒ์—ฐ๊ฒฐ) ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณด์ฆ(๋ฐ์ดํ„ฐ ์ „์†ก์ด ์ž˜ ๋˜์—ˆ๋‹ค๊ณ  ์‘๋‹ต์ด ์˜ต๋‹ˆ๋‹ค.) ์ˆœ์„œ ๋ณด์žฅ(์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅผ ์‹œ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅธ๊ฒƒ..

CS 2021.12.13

[JPA] ํ•„๋“œ์™€ ์ปฌ๋ฆผ๋งคํ•‘

๋งคํ•‘ ์–ด๋…ธํ…Œ์ด์…˜ @Column : ์ปฌ๋Ÿผ ๋งคํ•‘ ```@Temporal`` : ๋‚ ์งœ ํƒ€์ž… ๋งคํ•‘ @Enumerated : Enum ํƒ€์ž… ๋งคํ•‘ @Lob : BLOB, CLOB ๋งคํ•‘ @Transient : ํŠน์ • ํ•„๋“œ๋ฅผ ์ปฌ๋Ÿผ์— ๋งคํ•‘ํ•˜์ง€ ์•Š์„ ์‹œ(๋งคํ•‘ ๋ฌด์‹œ) @Enumerated ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์  EnumType.ORDINAL: enum ์ˆœ์„œ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ EnumType.STRING: enum ์ด๋ฆ„์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ Enum์˜ ๊ธฐ๋ณธ ์„ค์ •์€ EnumType.ORDINAL ์ž…๋‹ˆ๋‹ค. ์œ„์˜ ์„ค๋ช…์ฒ˜๋Ÿผ ORDINAL์€ DB์— ์ˆœ์„œ๋งŒ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ enum์— ๋‹ค๋ฅธ ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ ORDINAL์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ enumType์„ ORDINAL์ด ์•„๋‹Œ STRING์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ..

CS 2021.12.10

[JPA] ์—”ํ‹ฐํ‹ฐ๋งคํ•‘

์—”ํ‹ฐํ‹ฐ๋งคํ•‘ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ๋งคํ•‘: @Entity, @Table ํ•„๋“œ์™€ ์ปฌ๋Ÿผ ๋งคํ•‘: @Column ๊ธฐ๋ณธ ํ‚ค ๋งคํ•‘: @id ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘: @ManyToOne, @JoinColumn @Entity @Entity๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋Š” JPA๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” Entity๋ผ ์ง€์นญํ•ฉ๋‹ˆ๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘ํ•  ํด๋ž˜์Šค๋Š” @Entity๊ฐ€ ํ•„์ˆ˜์ ์œผ๋กœ ๋ถ™์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ƒ์„ฑ์ž ํ•„์ˆ˜ ์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. final, enum, interface, inner ํด๋ž˜์Šค๋Š” @Entity๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Table name catalog schema uniqueConstrains(DDL) ... @Entity // @Entity ์‚ฌ์šฉ๋ฐฉ๋ฒ• @Table(name = "USER") // @Table(name) ์‚ฌ์šฉ๋ฐฉ๋ฒ• public..

CS 2021.12.09

[JPA] ์ค€์˜์† ์ƒํƒœ

์ค€์˜์† ์ƒํƒœ EntityManager(์˜์†์„ฑ ์ปจํ…์ŠคํŠธ)์— ์˜ฌ๋ ค์ ธ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ ๋”์ด์ƒ JPA๊ฐ€ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. Method EntityManager.detach() EntityManager.clear() EntityManager.close() Code EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { User user = em.find(User.class, 1L); user.setName("AAAA"); em..

CS 2021.12.08

[jpa] ์˜์†์„ฑ์ปจํ…์ŠคํŠธ1

JPA์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ต์ˆ™์ง€ ์•Š์•„ ์ธ๊ฐ•์„ ๋“ค์œผ๋ฉด์„œ ์ •๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ฏ์„  ๊ฐœ๋…๋“ค์ด ๋งŽ์•„ ๊ฐœ์ธ์ ์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์ดํ•ดํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์ •๋ฆฌํ•œ ๋ถ€๋ถ„๋“ค์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€ ๋‚จ๊ฒจ ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Words ์˜์†์„ฑ: "entity"๋ฅผ ์—ฐ๊ตฌ์ €์žฅํ•˜๋Š” ํ™˜๊ฒฝ EntityManager.persist(entity) ์•ž์— ์ด์•ผ๊ธฐํ•œ persist๋Š” ์‚ฌ์‹ค db์— insert๋ฅผ ์ง์ ‘ ์‹œํ‚ค๋Š” ์ฟผ๋ฆฌ๋ฌธ์ด ์•„๋‹ˆ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. persist๋ฅผ ํ†ตํ•ด ํŠน์ •ํ•œ ์ค‘๊ฐ„ ๊ณต๊ฐ„์— ์ €์žฅํ•˜๊ณ  commit ์‹œ์— ์‹ค์ œ insert๊ฐ€ ์ด๋ฃจ์–ด ์ง‘๋‹ˆ๋‹ค. ์ค€์˜์†, ์‚ญ์ œ // ํšŒ์› ์—”ํ„ฐํ‹ฐ๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—์„œ ๋ถ„๋ฆฌ, ์ค€์˜์† ์ƒํƒœ em.detach(user); // ๊ฐ์ฒด๋ฅผ ์‚ญ..

CS 2021.12.07

[JPA] jpa ๊ธฐ๋ณธ ๋ฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

JPA ๊ธฐ์ดˆ์™€ ๋งคํ•‘ @Entity : JPA๊ฐ€ ๊ด€๋ฆฌํ•  ๊ฐ์ฒด๋ผ๋Š”๊ฒƒ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค(class ์œ„์— ์„ ์–ธ) @Id : DB PK์™€ ๋งคํ•‘ ํ•  ํ•„๋“œ๋ฅผ ์ง€์นญํ•ฉ๋‹ˆ๋‹ค(field ์œ„์— ์„ ์–ธ) EntityManager EntityManagerFactory: application ๋กœ๋”ฉ ์‹œ์ ์— ๋”ฑ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. EntityManger: transaction ๋งˆ๋‹ค ์ƒ์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. persistence.xml hibernate option ์„ค์ • ์€ ์•„๋ž˜์™€ ๊ฐ™์ด sql์„ ๋ณด์—ฌ์ฃผ๊ฒŒ ํ•˜๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค. Hibernate: /* insert hellojpa.User */ insert into User (name, id) values (?, ?) ์€ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋“ค์—ฌ์“ฐ๊ธฐ ๋ฐ ์ค„๋ฐ”๊ฟˆ ๋“ฑ์„ ํ•ด์„œ ๋ณด์—ฌ์ฃผ๊ฒŒ ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์€ ..

CS 2021.11.26
728x90
๋ฐ˜์‘ํ˜•