๐ŸŒ Backend/โœˆ๏ธŽ JPA

๋‹จ๊ณ„๋ณ„๋กœ ์„ฑ์žฅํ•˜์ž!
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. ๊ธฐ๋ณธ ํ‚ค ํ• ๋‹น ๋ฐฉ๋ฒ• (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..
DevPoong
'๐ŸŒ Backend/โœˆ๏ธŽ JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก