์๋์ ๊ฐ์ด ์์ฑํ์ ๋ ์ ์ฅ์ด ๋ ๊น?
์๋ฌ๊ฐ ์๊ธด๋ค. ์๋ํ๋ฉด JPA๋ ํธ๋ ์ ์ ์ด๋ ๋จ์๊ฐ ๋งค์ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ JPA์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํธ๋ ์ ์ ์์์ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
Member member = new Member();
member.setId(1L);
member.setName("AE");
em.persist(member);
em.close();
emf.close();
ํธ๋ ์ ์ ์ ์ถ๊ฐํ ์ฝ๋
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
Member member = new Member();
member.setId(2L);
member.setName("JE");
em.persist(member);
tx.commit();
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
}
emf.close();
}
์ ๋ฐ์ดํธํ ๊ฒฝ์ฐ์๋ ์ ์ฅ์ ํด์ผํ ๊น?
์๋์ ๊ฐ์ด persist๋ ํ์ง ์์๋ ๋๋ค ์๋ํ๋ฉด JPA๋ฅผ ํตํด์ Entity๋ฅผ ๊ฐ์ง๊ณ ์ค๋ฉด JPA๊ฐ ๊ด๋ฆฌํ๋ฉด์ ๋ณ๊ฒฝ์ด ๋์๋์ง ํธ๋ ์ ์ ์ ์ปค๋ฐํ๋ ์์ ์ ๋ค ์ฒดํฌ ํ์ฌ ๋ณ๊ฒฝ๋์์ ๋ ์ ๋ฐ์ดํธ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ค.
Member member = em.find(Member.class, 1L);
member.setName("HELLO");
tx.commit();
EntityManager ์ฌ์ฉ ์ฃผ์!
์ํฐํฐ ๋งค๋์ ํฉํ ๋ฆฌ๋ ํ๋๋ง ์์ฑํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ๊ณต์ ํ๋ค.
์ํฐํฐ ๋งค๋์ ๋ ์ฐ๋ ๋๊ฐ์ ๊ณต์ ํ์ง ์๋๋ค -> close()๋ก ๊ณ์ ๋ซ์์ฃผ์ด์ผ ํ๋ค. ( ์์ฒญ์ด ์ฌ๋๋ง๋ค ์ฐ๊ณ ๋ฒ๋ฆฌ๊ณ ๋ฅผ ๋ฐ๋ณต )
JPA์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ํธ๋ ์ ์ ์์์ ์คํํด์ผ ํ๋ค.
JPQL
JPA๋ฅผ ์ฌ์ฉํ๋ฉด ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ๋ฐํ๋ค.
๋ฌธ์ ๋ ๊ฒ์ ์ฟผ๋ฆฌ์ธ๋ฐ ๋ชจ๋ DB ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ๋ณํํด์ ๊ฒ์ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ํ ๋ฐ์ดํฐ๋ง DB์์ ๋ถ๋ฌ์ค๋ ค๋ฉด ๊ฒฐ๊ตญ ๊ฒ์ ์กฐ๊ฑด์ด ํฌํจ๋ SQL์ด ํ์ํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก JPQL์ด๋ผ๋ ๊ฐ์ฒด ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ์ ๊ณตํ๋ค. GROUP BY, HAVING, JOIN ๋ฑ ์ง์ ํ๊ณ , ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ์ฟผ๋ฆฌํ๋ค.
์๋์ ๊ฐ์ด ์ฌ์ฉํ๋๊ฒ์ด JPQL์ธ๋ฐ DB๋ฐฉ์ธ์(MySql, Oracle ๋ฑ) ๋ณ๊ฒฝํ๋ฉด ์ฟผ๋ฆฌ๋ฌธ๋ฒ๋ ์๋์ผ๋ก ๋ณ๊ฒฝ๋์ด ์คํ๋๋ค.
List<Member> result = em.createQuery("select m from Member m", Member.class)
.setFirstResult(5)
.setMaxResults(8)
.getResultList();
'๐ WEB > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
4. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ์ฐ๊ด๊ด๊ณ (0) | 2021.05.14 |
---|---|
3. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ์ํฐํฐ ๋งคํ (0) | 2021.05.13 |
2. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๋ด๋ถ ๋์ ๋ฐฉ์ (0) | 2021.05.13 |
0. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ (0) | 2021.05.11 |
JPA Pageable ์ฌ์ฉํ๊ธฐ (0) | 2021.02.03 |