게시글
질문&답변
4:40 영속성 컨텍스트 상태
1. flush를 하게 되면 영속성 컨텍스트에 저장된 데이터를 commit 하게 됩니다. 이때, DB에 쿼리를 날려 member 정보를 저장하게 됩니다. 콘솔창을 보면 insert 쿼리가 나가는 걸 확인할 수 있습니다. 1차 캐시에 이미 member가 저장이 되어 있으니 clear를 통해 모두 비워줍니다. 2. 위에서 member 정보가 DB에 저장이 되었으니 이제 DB에서 조회가 가능합니다. em.flush() 와 em.clear()가 무엇인지 찾아 보시면 바로 이해가 되실 것 같아요. 직접 메서드를 하나씩 실행해 보고 확인해 보시길 추천드립니다!
- 0
- 1
- 250
질문&답변
autoconfig
AutoConfig가 필요 없는 이유는 @SpringBootApplication에 이미 포함되어 있기 때문입니다. 추가적인 설정이 필요한 경우 @Configuration 어노테이션을 붙인 java 파일을 생성하여 추가적인 설정을 하면 됩니다. ps 강의 중간에 '스프링의 기본 설정을 따르려고 하는 편' 이라고 말씀하십니다. 아직 완강은 아니라 뒤에가서 설정을 따로 하시는지는 모르겠네요.
- 0
- 1
- 164
질문&답변
SpringConfig에 생성자
정답부터 말씀드리면 변수가 초기화 되지 않고 사용되기 때문입니다. SpringConfig 클래스가 인스턴스로 생성된 후 스프링에 등록(?) 되어 사용되게 됩니다. 생성자는 말그대로 클래스를 인스턴스로 만들기 위한 방법을 명시해요.(이해가 안된다면 자바 문법을 더 공부해 보세요 :) 그런데 SpringConfig 클래스의 생성자가 두 가지 방법이 있는겁니다. 1.dataSource, em을 모두 Autowired 해서 생성하는 방법 2. dataSource만 Autowired 해서 사용하는 방법 2번 방법을 사용해도 SpringConfig 클래스의 인스턴스를 만들 수가 있게 되겠죠. 하지만 2번 방법을 사용하게 되면 내부적으로 em이 필요한데 생성자 주입(Autowired)를 통해 의존성을 주입 받지 못하게 됩니다.(쉽게 말하면.. 객체 생성할 때 new 클래스 이름( ); 이렇게 생성하는 것을 Autowired를 통해 주입 받는 것입니다.) 그렇게 되면 SpringConfig 는 정상적으로 동작하지 못하기 때문에 em을 초기화 하라고 에러가 발생하는 것입니다.
- 0
- 1
- 273