Spring16 [JPA] 준영속 엔티티를 변경하는 방법 - 변경 감지 / 병합(Merge) * 인프런 김영한님 강의와 책을 보고 정리한 내용입니다 준영속 엔티티 Persistence context가 관리하지 않는 엔티티 영속성 컨텍스트가 제공하는 기능(1차 캐시, 쓰기 지연, 변경 감지, 지연 로딩 등)을 사용할 수 없는 엔티티 영속성 컨텍스트의 관리를 한번 받았으므로 identifier는 가지고 있음 영속 엔티티를 준영속 엔티티로 만드는 방법 em.detach() : 영속성 컨텍스트 안의 1차 cache, 쓰기 지연 SQL 저장소에서의 해당 엔티티 정보 제거 em.clear() : 영속성 컨텍스트 안에 있는 모든 정보를 초기화 em.close() : 영속성 컨텍스트 종료 즉, 준영속 엔티티 member가 존재한다고 가정했을 때, member.setName("stody"); 영속 엔티티라면 D.. 2022. 2. 15. Spring Boot - Test 코드 작성 Spring 과 Integration하여 Test @RunWith(SpringRunner.class) spring과 integration하여서 메모리 모드로 엮는다 junit4가 지원하는 어노테이션으로, @Autowired @MockBean 이 붙어있는 것들만 application context로 로딩함 Runner - test 프로세스들을 계획하고 실행하는 클래스 @SpringBootTest application context를 모두 적재하여 RunWith를 사용하였을 때보다 무겁다 @Transactional 모든 테스트를 한 후에 roll-back을 하기 위함 @RunWith(SpringRunner.class) @SpringBootTest // unit test 할때는 @DataJpaTest를 써주는.. 2022. 1. 4. spring boot Service 코드 repository injection관련 spring에서는 Entity, Service, Repository등을 컴포넌트로 중앙에서 생성/관리하고 있다. service 단으로 repository를 주입하는 방법은 아래와 같다 필드 인젝션 @Repository @Transactional(readOnly = true) public class MemeberService{ @Autowired private final MemberRepository memberRepository; ... } spring에서 생성한 memberRepositry를 해당 필드에 자동으로 주입해준다 중간에 repository를 다른 것으로 변경하기 어렵다 Setter 인젝션 @Service @Transactional(readOnly = true) class MemberServi.. 2021. 12. 27. Spring Boot Repository EntityManager / EntityManagerFactory 엔티티매니저 / 엔티티매니저팩토리 JPA를 시작하기 위해서는 엔티티 매니저 팩토리를 생성 후 앤티티 매니저 팩토리가 엔티티 매니저를 생성하여야 한다 앤티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("test") application.yml의 환경설정 정보를 가지고 entityManagerFactory를 생성 (통상적으로 META_INF/persistence.xml에서 persistence-unit 이름이 test와 같은 것을 찾아서 생성) JPA 동작 위한 기반 객체 생성 and 데이터베이스 커넥션 풀을 생성 -> 작업과 비용이 크므로 어플리케이션 전체에서 한번만 생성하는 것이 좋음 엔티티 매니저 생성 EntityManager em = emm.. 2021. 12. 27. 이전 1 2 3 4 다음