먼저 ORM에 대해 알아보겠습니다.
→ 즉, 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑한다는 뜻이며, 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면 됩니다.
JPA는 반복적인 CRUD SQL을 처리해주고 매핑된 관계로 SQL을 생성하고 실행합니다.
SQL이 아닌 객체 중심으로 개발할 수 있습니다.
패러다임의 불일치를 해결합니다.
// Album 객체저장
jpa.persist(album);
INSERT INTO ITEM (ID, NAME, PRICE) .....
INSERT INTO ALBUM (ARTIST) .....
```java
// JAVA 코드
String albumId = "id100";
Album album = jpa.find(Album.class, albumId);
// 변환된 쿼리
SELECT I.*, A.*
FROM ITEM I
JOIN ALBUM A ON I.ITEM_ID = A.ITEM_ID
```
class Member {
String id;
Team team;
String username;
}
class Team {
Long id;
String name;
}
Member member = new Member();
member.setId("100");
member.setUsername("dbjh");
Team team = new Team();
team.setName("dev_team");
member.setTeam(team);
jpa.persist(member);
INSERT INTO MEMBER (ID, TEAM_ID, USERNAME) ....
INSERT INTO TEAM (ID, NAME) ....
// JAVA 코드
Member member = jpa.find(Member.class, memberId);
Team team = member.getTeam();
// 변환된 쿼리
SELECT M.*, T.*
FROM MEMBER M
JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID
```
조회
참고로 JPA는 수정 메소드를 제공하지 않습니다.
수정이 필요할 때는 JPA가 매핑된 객체(테이블 데이터)를 조회해서 값을 변경 후 커밋하면 DB서버에 UPDATE문을 전송하여 UPDATE를 실행합니다.