본문 바로가기

백엔드 학습 과정/Section 3 [Spring MVC, JDBC, JPA, RestDo

JPA에서 em을 활용한 회원과 주문 정보 저장 및 호출 흐름

@Configuration
public class JpaManyToOneUniDirectionConfig {
    private EntityManager em;
    private EntityTransaction tx;

    @Bean
    public CommandLineRunner testJpaManyToOneRunner(EntityManagerFactory emFactory) {
        this.em = emFactory.createEntityManager();
        this.tx = em.getTransaction();

        return args -> {
            mappingManyToOneUniDirection();
        };
    }

    private void mappingManyToOneUniDirection() {
        tx.begin();
        // (1)
        Member member = new Member("hgd@gmail.com", "Hong Gil Dong",
                "010-1111-1111");
	// (2)
        em.persist(member);

	// (3)
        Order order = new Order();
        // (4)
        order.addMember(member);   
        // (5)
        em.persist(order);         

        tx.commit();
		
        // (6)
        Order findOrder = em.find(Order.class, 1L);

        // (7) 주문에 해당하는 회원 정보를 가져올 수 있다.
        System.out.println("findOrder: " + findOrder.getMember().getMemberId() +
                        ", " + findOrder.getMember().getEmail());
    }
}

(1) : 회원 객체를 새로 생성한다.

(2) : 생성한 회원 객체를 영속성 컨텍스트에 저장.

(3) : 신규 주문 객체를 생성.

(4) : 생성해둔 회원 객체를 주문 객체에 추가한다.

public void addMember(Member member) {
        this.member = member;
    }

(5) : 주문 객체를 영속성 컨텍스트에 저장.

(6) : 저장해둔 주문 엔티티 클래스에서 식별자1을 가진 데이터를 findOrder에 할당한다.

(7) : findOrder.getMember().getMemberId() 

=> 엔티티 클래스에서 식별자1을 가진 Data에 포함된 회원객체를 가져와서, 회원 번호를 가져온다.

findOrder.getMember().getEmail()

=> 엔티티 클래스에서 식별자1을 가진 Data에 포함된 회원객체를 가져와서 회원 이메일을 가져온다.

'백엔드 학습 과정 > Section 3 [Spring MVC, JDBC, JPA, RestDo' 카테고리의 다른 글

#6. Spring Data JPA  (0) 2023.01.11
#5. JPA  (0) 2023.01.01
Spring JPA 기능 코드  (0) 2023.01.01
Spring Data JDBC - Service 클래스 기능별 코드  (0) 2022.12.31
#4. Spring Data JDBC  (0) 2022.12.23