ORM (Object-Relational Mapping)
ORM์ ๊ฐ์ฒด ๊ด๊ณ ๋งคํ์ ์๋ฏธํ๋๋ฐ Java์ ๊ฐ์ ๊ฐ์ฒด์งํฅ ์ธ์ด์์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ํ
์ด๋ธ์ ์๋์ผ๋ก ๋งคํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
ORM์ ์ฌ์ฉํ์ง ์์ ๋ ์ดํ๋ฆฌ์ผ์ด์
์์ ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด(ํด๋์ค)๋ค์ ํ
์ด๋ธ๊ณผ ๋งคํ๋๊ฒ ์ค๊ณ๋์ง ์๊ธฐ ๋๋ฌธ์ ํ
์ด๋ธ๊ณผ ๋ถ์ผ์น๊ฐ ์กด์ฌํ ์ ๋ฐ์ ์๋ค.
ORM์ ์ํฐํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๋ฉฐ ์ง์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋ ๋ฉ์๋๋ฅผ ์คํํจ์ผ๋ก์จ CRUD๋ฅผ ์คํํ ์ ์๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
JPA (Java Persistence API)
JPA๋ ORM์ Java์์ ๊ตฌํํ ์ ์๋๋ก ์ค๊ณ๋ ์ธํฐํ์ด์ค๋ผ๊ณ ํ ์ ์๋ค.
์ค์ ๋ก JPA๋ฅผ ์ ์ํ javax.persistence๋ ๋๋ถ๋ถ interface, enum, exception, annotation ๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์์ ๊ฐ์ ์ด์ ๋๋ฌธ์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค. ์ด๋ฅผ ๊ตฌํํ ๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ๋๋๋ฐ, ๊ฐ์ฅ ๋ํ์ ์ธ ๊ตฌํ์ฒด๊ฐ Hibernate์ด๋ค.
JPA์ ์ฃผ์ํ ํน์ง
1.
ORM์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค
2.
ORM์ ์ํ ๋ช
์ธ์ด๊ธฐ ๋๋ฌธ์ ํน์ ๊ตฌํ์ฒด์ ์ข
์๋์ง ์๋๋ค.
3.
๊ธฐ๋ณธ์ ์ธ CRUD ์์
์ ๊ฐ๋จํ ์ฒ๋ฆฌํ๋ฉฐ, ํธ๋์ญ์
๋ฐ ์ง์ฐ ๋ก๋ฉ ๋ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
Hibernate
ํ์ด๋ฒ๋ค์ดํธ๋ JPA๋ฅผ ๊ตฌํํ ORM ํ๋ ์์ํฌ์ด๋ค. ์๋ ์ฝ๋๋ ๊ฐ๋จํ ํ์ด๋ฒ๋ค์ดํธ ์์ ์ด๋ค.
์ํฐํฐ ํด๋์ค
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getters and Setters
}
Java
๋ณต์ฌ
ํ์ด๋ฒ๋ค์ดํธ ์ฝ๋
public class HibernateExample {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
// Create
User user = new User();
user.setName("John");
user.setEmail("john@example.com");
session.save(user);
// Read
User retrievedUser = session.get(User.class, user.getId());
System.out.println("Retrieved User: " + retrievedUser.getName());
transaction.commit();
session.close();
sessionFactory.close();
}
}
Java
๋ณต์ฌ
Spring Data JPA
Spring Data JPA๋ Spring์์ ์ ๊ณตํ๋ ๋ชจ๋ ์ค ํ๋์ด๋ค.
JPA(์: Hibernate)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ด๊ธฐ ์ํด ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ์ด๋ค.
Spring Data JPA๋ JPA๋ฅผ ๊ตฌํํ ๊ตฌํ์ฒด๊ฐ ์๋๊ธฐ ๋๋ฌธ์ Hibernate์ ๊ฐ์ ๊ตฌํ์ฒด๊ฐ ๋ฐ๋์ ํ์ํ๋ค. (Spring Data JPA๋ ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ ํ์ง ์๋๋ค.)