프로그래밍/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(); // 종료
	}
}

 

반응형