1.JPA(Java Persistence API)
Java EE ์ Java SE ํ๋ซํผ์ ์ํ ์๋ฐ ํ์ค ORM API์ด๋ค
JPA๋ ์๋ฐ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๋งคํ์ ์ ๊ณตํด์ค๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ์ฝ๊ฒ ๋ณํํ๊ณ
๋ฐ๋๋ก ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์๊ฒ ํด์ค๋ค.
JPA๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ์ถ์ํํ์ฌ, ๊ฐ๋ฐ์๊ฐ ์ง์ SQL์ ์์ฑํ์ง ์์๋ ๋๋๋ก ๋๋๋ค.
2-1.๊ฐ์ฒด-๊ด๊ณ ๋งคํ (ORM)
JPA๋ ์๋ฐ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ ๊ฐ์ ๋งคํ์ ์ ์ํฉ๋๋ค.
์ด๋ฅผ ํตํด ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ฝ๋๋ก ์ ์ฅํ๊ณ ,
๋ฐ๋๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ฝ๋๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํ ์ ์์ต๋๋ค.
JPA๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ๋งคํ๋๋ ์ํฐํฐ ํด๋์ค๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
๊ฐ ์ํฐํฐ ํด๋์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ
์ด๋ธ๊ณผ ๋งคํ๋๋ฉฐ,
ํด๋์ค์ ๊ฐ ํ๋๋ ํ
์ด๋ธ์ ์ปฌ๋ผ๊ณผ ๋งคํ๋ฉ๋๋ค.
import javax .persistence .Entity ;
import javax .persistence .GeneratedValue ;
import javax .persistence .GenerationType ;
import javax .persistence .Id ;
@ Entity
public class User {
@ Id
@ GeneratedValue (strategy = GenerationType .IDENTITY )
private Long id ;
private String email ;
private String name ;
// getters and setters
}
๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ํ๋ ์ฟผ๋ฆฌ ์ธ์ด์
๋๋ค.
SQL๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ์ ๊ฐ์ง๋ฉฐ, ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
String jpql = "SELECT u FROM User u WHERE u.email = :email" ;
TypedQuery <User > query = em .createQuery (jpql , User .class );
query .setParameter ("email" , "example@example.com" );
List <User > users = query .getResultList ();
JPA์ ํต์ฌ ์ธํฐํ์ด์ค๋ก, ์ํฐํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ,
์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ฉฐ, ํธ๋์ญ์
์ ๊ด๋ฆฌํฉ๋๋ค.
EntityManagerFactory emf = Persistence .createEntityManagerFactory ("my-persistence-unit" );
EntityManager em = emf .createEntityManager ();