Thymeleaf 및 html , css , bootstrap 사용법 터득, 실습form 을 통한 데이터 이동 (DTO 역할)UPDATE 쿼리 실행 시 발생하는 2번의 SELECT 쿼리Lazy Loading 과의 연관성Lazy Loading 과의 상호작용으로 인한 문제UPDATE 작업 시 SELECT 쿼리가 전후로 2번 실행됨Hibernate:
select
q1_0.id,
q1_0.content,
q1_0.create_date,
q1_0.subject
from
question q1_0
where
q1_0.id=?
Hibernate:
insert
into
answer
(content, createdate, question_id, id)
values
(?, ?, ?, default)
Hibernate:
select
q1_0.id,
q1_0.content,
q1_0.create_date,
q1_0.subject
from
question q1_0
where
q1_0.id=?
JPA 의 Dirty Checking 때문@Service 와 @Repository , @Controller 그리고 @Component@Component 역할을 포함하고 있음@Component 를 사용해도 괜찮은가?@Service , @Repository 의 경우@Service 는 추가로 트랜잭션을 관리하는 기능을 제공@Repository 는 추가로 예외 변환 기능을 제공@Component 와 크게 다를 게 없으므로 @Component 로 대체가 가능!@Controller 의 경우@Controller 는 Spring MVC의 핵심 기능을 제공@Component 로 대체할 수 없음Q1.
템플릿의 form 태그에 th:object 속성을 추가했으므로 QuestionController의 GetMapping으로 매핑한 메서드도 다음과 같이 변경해야 오류가 발생하지 않는다. 왜냐하면 question_form.html은 [질문 등록하기] 버튼을 통해 GET 방식으로 URL이 요청되더라도 th:object에 의해 QuestionForm 객체가 필요하기 때문이다.
- 이 부분에서 왜 GET에도 QuestionForm 객체를 넘겨주는 이유
A1.
Q2.
- th:field="*{subject}"
이와 같이 지정하면, 해당 태그의 name 과 id 값이 모두 subject로 들어가고- th:field="*{content}"
이와 같이 지정하면, 해당 태그의 name 과 id 값이 모두 content로 들어가는가?
A2.
id 와 name의 값은 "subject", th:value 의 값은 "${questionForm.subject}”로 들어감Q3.
th:field를 사용 시, { } 안의 값이 빨간 줄이 뜨는데 실행은 의도대로 됨- 이 경우 그냥 무시하고 진행해도 상관없는가?
A3.