ORM?
Object-relational mapping(객체 관계 매핑)
객체와 RDB 사이를 매핑해 주는 것
객체는 객체대로, RDB는 RDB대로 설계 -> ORM 프레임워크가 중간에서 매핑
jpa.persist(album); // 한줄로 처리 가능
// SQL은 JPA가 처리
// INSERT INTO ITEM ...
// INSERT INTO ALBUM ...
// 연관관계 설정된 객체 조회
Album album = jpa.find(Album.class, albumId);
// 연관관계 저장
member.setTeam(team);
jpa.persist(member);
// SELECT, JOIN은 JPA가 처리
// 자유로운 객체 그래프 탐색 가능
Member member = jpa.find(Member.class, memberId);
Team team = member.getTeam();
Order order = member.getOrder();
// 해당 조회는 1번의 SQL만 실행됨
String memberId = "100";
Member member1 = jpa.find(Member.class, memberId);
Member member2 = jpa.find(Member.class, memberId);
// 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장
member1 == member2; // true
트랜잭션을 커밋할 때까지 INSERT SQL을 모음
JDBC BATCH SQL 기능을 사용하여 한번에 INSERT SQL 전송
transaction.begin();
em.persist(memberA);
em.persist(memberB);
em.persist(memberC);
transaction.commit();