์ธ์ฆ์ ํ์์ฑ HTTP ํต์ ์ ์์ฒญ๊ณผ ์๋ต์ด ์ข
๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ ๋๋ Connectionless ํน์ฑ๊ณผ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด ์ด๋ ํ ์ํ๋ ์ ์งํ์ง ์๋ Statelessํ ์ฒ๋ฆฌ ๋ฐฉ์์ด๋ค. ๋ฐ๋ผ์, ๋ก๊ทธ์ธ์ ์ ์งํ๊ธฐ ์ํด์ ์ฟ ํค, ์ธ์
, ํ ํฐ์ ์ฌ์ฉํ๋ค. Connectionless ํ๋กํ ์ฝ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ์ ๋๋ ์ฒ๋ฆฌ ๋ฐฉ์ Stateless ํ๋กํ ์ฝ ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ง์ง ์๋ ์๋ฒ ์ฒ๋ฆฌ ๋ฐฉ์์ด๋ค. 1. ์ฟ ํค ๐ช ์ฟ ํค๋ Key-Value ํ์์ ๋ฌธ์์ด๋ก ์ฌ์ฉ์์๊ฒ ๋งก๊ฒจ๋ ๋๋ ๊ณต๊ฐ ๊ฐ๋ฅํ ์ ๋ณด๋ฅผ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ์ํจ๋ค. ์ฟ ํค ๋์ ๋ฐฉ์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์์ฒญ์ ๋ํด ์๋ตํ ๋, ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ๋ ์์ ์ ๋ณด๋ฅผ Response Header์ set-cooki..
๐ 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..