3. JPA 호출과 Table 생성

Jehyun·2023년 11월 15일
0

JPA

목록 보기
3/3

Main 함수 JPA 호출


출처 : https://iyoungman.github.io/jpa/EntityManagerFactory-EntityManager-PersistenceContext/

Persistence는 Persistence.xml을 조회하고 EntityManagerFactory에서 EntityManager를 생성한다. EntityManager는 Transaction마다 실행이 되어야하며 Thread간 절대 공유해서는 안되는 정보이다.

Main 함수

EntityManagerFactory(EMF)를 생성하고 내부에 persistence.xml에서 설정한 unit name을 적어준다. 이름을 오타 혹은 공백에 주의해야한다.
EMF를 생성한 이후 EMF를 생성하면 내부에 EntityManager(E)를 생성하여 가져와야한다.

데이터 변경에 관련된 모든 행동은 Transaction 안에서 이루어져야 한다.
Transaction(tx)은 EM내부에에서 getTransaction을 통해 가져오고 tx.begin으로 Transaction의 시작을 알려야 한다. 이후 commit, rollback을 통하여 DB에 저장한다.

마지막으로 Transaction이 끝나면 EM을 닫아주고 EM을 닫아주면서 Connection Pool도 반환하게 된다.

Member Class 생성

객체DTO를 생성하는 것처럼 Member Class를 생성하는데 Class 위쪽에 @Entity 어노테이션을 반드시 작성하여야 한다.
어노테이션이 없을 경우 JPA는 해당 Class를 Entity로 인식하지 못하고 매핑을 할 수 없게 된다. 따라서 반드시 @Entity 어노테이션을 상단에 적용해줘야한다.

@Id : Table의 Primary Key가 될 속성을 지칭하는 어노테이션
@GeneratedValue : DB에서 Id값에 autoIncrement와 같은 속성처럼 자동으로 값을 증가 시키는 어노테이션
@Column : Column값 설정에 관련된 어노테이션

Table 생성 및 Insert

Member 객체를 생성하고, Setter를 이용하여 member 필드의 name에 값을 넣어주고, entityManager를 통해서 persist함수를 호출한다.
persist함수는 해당 Entity를 영속성 컨텍스트(PersistenceContext)에 저장하게 된다.
PersistecContext에 저장된 저장된 데이터들은 Transaction.commit시점에 DB에 올라가게 된다.

실행 결과


H2 DB에서도 값이 들어간 것을 확인할 수 있다.

profile
주니어 개발자

1개의 댓글

comment-user-thumbnail
2023년 11월 15일

즐겁게 읽었습니다. 유용한 정보 감사합니다.

답글 달기