private final EntityManager em -> 생성자를 보면 스프링ㄹ 통해 엔티티매니저라는 것을 주입받은 것을 확인할 수 있다. JPA의 모든 동작은 엔티티 매니저를 통해서 이루어진다. 

엔티티 매니저는 내부에 데이터 소스를 가지고 있고, 데이터베이스에 접근할 수 있다. 

 

 

 

 

@transitional: JPA의 모든 데이터 변경(등록, 수정, 삭제)은 트랜잭션 안에서 이루어져야 한다. 조회는 트랜잭션이 없어도 가능하다. 변경의 경우 일반적으로 서비스 계층에서 트랜잭션을 시작하기 때문에 문제가 없다. 하지만 이번 예제에서는 복잡한 비즈니스 로직이 없어서 서비스 계츠에서 트랜잭션을 걸지 않았다. JPA에서는 데이터 변경시 트랜잭션이 필수다. 따라서 리포지토리에 트랜잭션을 걸어주었다. 다시한번 강조하지만 일반적으로는 비즈니스 로직을 시작하는 서비스 계층에 트랜잭션을 걸어주는 것이 맞다. 

 

@Override
    public List<Item> findAll(ItemSearchCond cond) {
        String jpql = "select i from Item i";
        return null;
    }

 

객체를 테이블에 저장할 때는 persis() 메서드를 사용하면 된다 

 

 

'- 코딩 공부 > Spring' 카테고리의 다른 글

데이터 접근 기술 - 활용 방안  (0) 2023.01.04
Querydsl  (0) 2023.01.04
[DB 2편] - 섹션 3. 데이터 접근 기술 - 테스트  (0) 2022.11.27
트랜젝션 이해  (0) 2022.10.11
섹션2. 커넥션 풀  (0) 2022.10.03

+ Recent posts