: JPA는 Server단의 Java에서 DB가 이해하는 SQL에서 생기는 언어적차이를 극복하기위해 명령을 내릴수 있게하는 도구이다.
또한 Entity, Repository 의 도구 등으로 DB 관리를 용이하게한다.
Entity, Repository의 역할은?
: Entity는 자바객체인 DTO를 DB가 이해할 수 있게 규격화한 것이고, 이는 Repository라는 일꾼을 통해 DB에 전달되고, 처리된다.
즉, DTO를Entity로전환하고, Entity를Repository로저장하는형태이다.
ArticleController 의 내부코드, /articles/new과 /articles/create로 각각 form과 submit시 DTO 객체를 넘긴다.
/articles/new 의 ui, submit 시 /articles/create를 POST 요청한다
new.mustache : DTO객체는 form 태그 내의 element의 name property 의 이름과 DTO의 변수가 매핑된다.
ArticleForm : DTO, @AllArgsConstrucor와 @ToString 으로 생성자와 toString 메소드를 생성, toEntity 메소드로 DB에 저장하기 위한 Entity 로 변환한다.
Article : ArticleController에서 /articles/new/create POST 요청시, DTO를 @Entity 로 변환하기 위해 Entity를 위한 class 를 생성
ArticleRepository : CrudRepository 인터페이스를 상속하여 Entity타입인 Article타입과 Entity의 대표값인 id 의 타입인 Long 타입을 넘겨준다
ArticleController : /articles/create POST 요청 시, toEntity 메소드로 DTO인 ArticleForm을 변환 후 CrudRepository 인터페이스를 상속한 articleRepository의 save 메소드로 Entity로 변환된 DTO를 save한다. log.info는 @Slf4j 로 로깅하여 리팩토링하였다.