๐ŸŒ Backend

๋‹จ๊ณ„๋ณ„๋กœ ์„ฑ์žฅํ•˜์ž!
๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
1. ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์—์„œ ์ง€์›๋˜๋Š” ํ‚ค์›Œ๋“œ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ดํŽด๋ณด์•˜๋‹ค. public interface MemberRepository extends JpaRepository { List findByGenderAndAgeGreaterThan(String gender, int age); } ์œ„์™€ ๊ฐ™์ด Member ๊ฐ์ฒด์˜ gender state๊ฐ€ ์ž…๋ ฅ๋œ gender์™€ ๊ฐ™๊ณ  age ์ƒํƒœ๊ฐ€ ์ž…๋ ฅ๋œ age๋ณด๋‹ค ํฐ Member๋ฅผ ์ฐพ๋Š” ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. Method Name์€ ๋งŒ์•ฝ ์—”ํ‹ฐํ‹ฐ์˜ ๋ณ€์ˆ˜ Name์ด ๋ฐ”๋€Œ๋ฉด ๊ฐ™์ด ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค! (์•ˆํ•˜๋ฉด ์—๋Ÿฌ๋‚จ) 2. ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ ๊ธฐ๋Šฅ ์นด์šดํŒ…(COUNT): count~By ๋ฐ˜ํ™˜ํƒ€์ž…์€ long ํƒ€์ž… ์กด์žฌ์—ฌ๋ถ€(EXISTS): exists~By ๋ฐ˜ํ™˜ํƒ€์ž…์€ boolean ํƒ€..
1. EntityManagerFactory์™€ EntityManager๋ฅผ ๋จผ์ € ์•Œ์•„๋ณด์ž EntityManager๋ž€ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋Œ€ํ•˜์—ฌ ์ปค๋„ฅ์…˜ ํ’€์—์„œ ์ปค๋„ฅ์…˜์„ ์–ป๊ณ  DB์— ์ ‘๊ทผํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. EntityManagerFactory๋ž€ ๋ง ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ๋งˆ๋‹ค EntityManger๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณต์žฅ์ด๋‹ค. 2. ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ญ˜๊นŒ ๊ทธ๋ž˜์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์—”ํ‹ฐํ‹ฐ์˜ Life Cycle์„ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ์ด๋‹ค. EntityManager๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ PersistenceContext๊ฐ€ ๊ฐ™์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. 3. Entity Life Cycle ๋น„์˜์†(new/transient): ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ๊ด€๊ณ„์—†๋Š” ์ƒˆ๋กœ์šด ์ƒํƒœ ์˜์†(managed): ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ ์ค€์˜์†(detached): ์›..
์ด๋ฒˆ์— ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ด์„œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. 1. ๋‘ ๊ฐ€์ง€ ์ „์†ก ๋ฐฉ์‹ HTML Form์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์€ ํฌ๊ฒŒ 1. x-www-form-urlencoded Http Body์— bookname=jpabook&quantity=31 ์™€ ๊ฐ™์ด key-valueํ˜•์‹์„ &๋กœ ์—ฐ๊ฒฐ์ง€์–ด ๋ฌธ์ž๋ฅผ ์ „์†กํ•œ๋‹ค. 2. multipart/form-data ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ์™€ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. multipart/form-data์— ๋Œ€ํ•ด์„œ ๋” ์•Œ์•„๋ณด์ž. 2. multipart/form-data ํผ ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„๋กœ submit ๋  ๋•Œ ์ธ์ฝ”๋”ฉ ๋˜๋Š” ๋ฐฉ์‹์„ ์ง€์ •ํ•˜๋Š” enctype(encryptiontype)์„ ํ•ด๋‹น ๋ฐฉ์‹์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ H..
1. ๊ธฐ๋ณธ ํ‚ค ํ• ๋‹น ๋ฐฉ๋ฒ• (1) ์ง์ ‘ ํ• ๋‹น์˜ ๊ฒฝ์šฐ @Id private Long id; (2) ์ž๋™ ์ƒ์„ฑ ํ• ๋‹น์˜ ๊ฒฝ์šฐ @Id @GeneratedValue(strategy = GenerationType.IDENTITY OR AUTO OR SEQUNCE OR TABLE) private Long id; 2. ์ž๋™ ์ƒ์„ฑ ํ• ๋‹น ์ „๋žต (1) IDENTITY PK ์ƒ์„ฑ์„ DB์— ์œ„์ž„ํ•œ๋‹ค. DB๊ฐ€ ์•Œ์•„์„œ AUTO INCREMENT๋กœ ๊ด€๋ฆฌํ•ด์ค€๋‹ค. entityManger.persist()๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ์ฆ‰์‹œ INSERT ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜์–ด DB์— ๋ฐ˜์˜๋˜๊ณ  DB์—์„œ PK๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ž๋™ ํ• ๋‹นํ•˜๋ฉฐ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ 1์ฐจ ์บ์‹œ์— ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ์ด๊ฑธ ์•Œ๋ฉด ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ๋„ persist()์ดํ›„์—๋Š” SELECT ์ฟผ๋ฆฌ๋กœ ID..
Spring MVC์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋˜ ์ค‘ DispatcherServlet์—์„œ Handler๋ฅผ ๋งคํ•‘ํ•˜๋Š”๊ฑด ์•Œ๊ฒ ๋Š”๋ฐ ์–ธ์ œ url๊นŒ์ง€ ๋งคํ•‘ํ•ด์„œ ํ•ด๋‹น method๋ฅผ ์‹คํ–‰ํ•˜๋Š”๊ฑฐ์ง€? ๋ผ๊ณ  ๊ถ๊ธˆ์ฆ์ด ๋“ค์–ด์„œ ์•Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์œ„์˜ ๊ณผ์ •์„ ์ดํ•ดํ•˜๋ ค๋ฉด ๋จผ์ € FrontController์˜ ์—ญํ• ์„ ํ•˜๋Š” ๋จผ์ € DispatcherServlet์˜ doDispatch()๋ฅผ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (1) DispatcherServlet์˜ doDispatch() ์œ„์˜ ํŒŒ๋ž€์ค„์„ ๋ณด๋ฉด getHandler() ๋ฅผ ํ†ตํ•ด request์— ๋งž๋Š” handler๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ํ•œ๋ฒˆ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (2) DispatcherServlet์˜ getHandler() ์šฐ์„  HandlerExecutionChain์„ returnํ•˜๋ฉฐ HandlerMapping..
DevPoong
'๐ŸŒ Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)