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 ํ..
๐ Backend/โ๏ธ JPA
๋จ๊ณ๋ณ๋ก ์ฑ์ฅํ์!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..