프로그래밍/Java
[JPA] 기초와 매핑
대인보우
2021. 8. 20. 10:40
반응형
기초 개념
@Entitiy: JPA가 관리할 객체
@Id: DB PK와 매핑할 필드
@Entity
public class Member{
@Id
private Long id;
private String name;
}
create table MEMBER
데이터베이스 방언
jpa는 특정 데이터베이스에 종속적이지 않은 기술
각각의 데이터베이스가 제공하는 sql 문법과 함수는 조금씩 다르다.
ex. VARCHAR <-> VARCHAR2, SUBSTRING<->SUBSTR
방언: sql 표준을 지키지 않거나 특정 데이터베이스만의 고유한 기능
JPA -> DIALECT(인터페이스와 같은 역할)-> MySQLDialect / OracleDialect / H2Dialect
애플리케이션 개발
- 엔티티 매니저 팩토리는 서버를 켤 때 딱 한번 생성해서 애플리케이션 전체에서 공유
- 엔티티 매니저는 쓰레드 간에 공유하면 안된다.
- JPA의 모든 데이터 변경은 트랜잭션 안에서 실행
예시 코드
public class Main {
public static void main(String args[]) {
// manager는 서버 킬 때 딱 한번 로딩. 그 후 꺼내서 사용한다.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); // hello에 담긴 설정 정보 가지고 로딩
EntityManager em = emf.createEntityManager(); // em 생성
EntityTransaction tx = em.getTransaction(); // 트랜잭션 시작
tx.begin();
try {
Member member = new Member();
member.setId(100L);
member.setName("안녕하세요");
em.persist(member); // persist는 영구저장의 의미
tx.commit();
} catch(Exception e){
tx.rollback();
} finally {
em.close();
}
emf.close(); // 종료
}
}
반응형