
💡 ORM 이란 ?
- Object-relational mapping (객체 관계 매핑)
- 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계
- ORM 프레임워크가 중간에서 매핑


SQL 중심적 개발 -> 객체 중심 개발
생산성
jpa.persist(member)jpa.find(memberId)member.setName("변경할 이름")jpa.remove(member)유지보수
패러다임의 불일치 해결
성능 최적화
데이터 접근 추상화와 벤더 독립성
표준
JPA는 persistence.xml 을 통해 필요한 설정 정보를 관리한다. 이 설정 파일이 META-INF/persistence.xml 경로에 있으면 추가 설정 없이 JPA 가 인식할 수 있다.

JPA 는 데이터베이스에 종속적이지 않다. 하지만, 각 데이터베이스마다 제공되는 SQL 문법이 다르다는 문제가 있으므로, 해당 데이터베이스 방언에 맞게 SQL 변환 작업을 해야한다.
이는 hibernate.dialect 속성에 지정해준다.
org.hibernate.dialect.MySQL5InnoDBDialectorg.hibernate.dialect.Oracle10gDialectorg.hibernate.dialect.H2Dialect
JPA를 시작하려면, 우선 EntityManagerFactory 를 생성해야 한다. 이 인스턴스를 통해 EntityManager 인스턴스를 생성한다.
EntityManagerFactory 는 하나만 생성해 애플리케이션 전체에서 공유한다. 또한 EntityManager 는 쓰레드 간에 공유하지 않는다.
그리고,
JPA 의 모든 데이터 변경은 트랜잭션 안에서 실행한다 !!
SQL 은 데이터베이스 테이블을 대상으로 쿼리한다면, JPQL 은 엔티티 객체를 대상으로 쿼리한다.