해결된 질문
작성
·
544
·
수정됨
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
1. 트랜잭션의 시작과 끝이라고 한다면 스프링 부트 실행이 시작, 스프링 부트 종료가 끝이라고 생각을 하면 되는 건가요?
2. 다른 강의에서는 Gradle을 추세라고 하셨는데, Gradle 이 아닌 Maven 으로 실습을 하는 특별한 이유가 있을까요?
3. SpringBoot 를 이용하면 EntityManagerFactory 생성을 직접 할 필요가 없는 건가요?
4. h2에 table 을 미리 생성한 후 값을 넣는 이유는 무엇인가요? <실전 스프링 부트 JPA 웹개발 1> 에서는 이런 과정이 없었던 것 같아서 헷갈립니다.
5. JPQL 보다는 QueryDsl 을 많이 쓰신다고 하셨었는데 현재 수업 과정은 JPA 의 발전 과정을 소개해주시는 걸로 이해해도 괜찮을까요?
답변 1
1
안녕하세요. GoodtoCU님, 공식 서포터즈 OMG입니다.
.
1. 트랜잭션의 시작과 끝이라고 한다면 스프링 부트 실행이 시작, 스프링 부트 종료가 끝이라고 생각을 하면 되는 건가요?
4번 질문에서 JPA1편을 수강하셨다고 하니 JPA1편 코드로 설명드리면, 아래의 @Transactional을 선언한 회원가입 메서드가 시작되고 끝나는 시점을 트랜잭션의 시작과 끝이라고 보시면 될 것 같아요.
애플리케이션의 비즈니스 로직 중 DB와 연동이 필요하여 하나의 작업단위로 잡아놓은 부분에 @Transactional을 선언합니다.
2. 다른 강의에서는 Gradle을 추세라고 하셨는데, Gradle 이 아닌 Maven 으로 실습을 하는 특별한 이유가 있을까요?
비슷한 질문을 남겨주신 분의 질문에 대한 영한님 답변을 보시면 아시겠지만, 본강의는 빌드 툴이 중요하지 않고 제 예상이지만 강의를 구성할 당시에는 답변에도 있듯이 크게 중요하지 않다고 생각하여 구성하신게 아닌가 싶습니다.
3. SpringBoot 를 이용하면 EntityManagerFactory 생성을 직접 할 필요가 없는 건가요?
SpringBoot만으로는 안되고, data-jpa의존성을 추가하시면 됩니다.
JPA 활용1편에서는 EntityManagerFactory를 직접 생성하지 않았던 것을 아실거라 생각합니다.
4. h2에 table 을 미리 생성한 후 값을 넣는 이유는 무엇인가요? <실전 스프링 부트 JPA 웹개발 1> 에서는 이런 과정이 없었던 것 같아서 헷갈립니다.
영한님 강의 스타일 상 해당 기술의 특징을 바로 설명하시지 않고 더 불편한 방법 혹은 기술의 발전 중 불편하였던 고대의 개발 방식을 설명해주십니다.
JPA의 자동 쿼리 생성 기능을 이용하지 않고 테이블 생성하는 것을 간단히 보여주고, 이후에는 JPA를 통해 생성한 것으로 보시면 될 것 같아요.
단순히 편한 방법만 보여주는 것보다 불편한 방법과 편한 방법을 다 보여줌으로써 얼마나 편해졌는지를 느끼게 해줌으로써 기술의 특징을 더 와닿게 설명해주는 것인거죠.
.
감사합니다.
5번도 4번의 답변과 같은 맥락입니다.
자바를 모르고 자바코드 기반의 스프링 코드를 이해하지 못하듯이,
SQL을 모르고 JPA를 할 수 없듯이
SpringDataJPA와 QueryDSL을
잘
사용하기 위해 강의 순서가 JPA->SpringDataJPA->QueryDSL순으로 구성되었습니다.