티스토리 뷰

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책 실습 후 이론 정리 목적으로 작성한 자료입니다

참고자료 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

 

Chap3. 스프링 부트에서 JPA로 데이터베이스 다뤄보자

관계형 데이터베이스의 패러다임 : 어떻게 데이터를 저장할지에 초점

객체지향 프로그래밍 언어 : 메시지를 기반으로 기능과 속성을 한곳에서 관리할지에 초점

= 관계형 데이터베이스와 객체지향 프로그래밍 언어의 패러다임 불일치 발생 -> 데이터 베이스 모델링에만 초점이 맞춰지게 된다

 

패러다임 일치를 시켜주기 위한 기술이 JPA이다

 

즉 개발자는 객체지향적으로 프로그래밍을 하고 JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행해준다

-> 더 이상 SQL에 종속적인 개발을 하지 않아도 된다

 

JPA: 인터페이스로서 자바 표준 명세서이며 이를 사용하기 위해선 구현체가 필요한데 Hibernate, Eclipse, Link 등이 있다

이 구현체들은 직접 다루지 않고 이를 쉽게 추상화한 Spring Data JPA 모듈을 이용한다 (JPA <- Hibernate <- Spring Data JPA)

 

Hibernate를 직접 사용하지 않고 spring Data Jpa를 사용하는 이유 : 구현체 교체의 용이성, 저장소 교체의 용이성

-> 구현체 : Hibernate, Eclpse, Linke 저장소: 관계형 데이터베이스, 몽고디비 등등

 

>>JPA 사용 시 주의해야 할 것<<

 

Entity 클래스에서는 setter 사용을 지양할 것

해당 클래스의 인스턴스 값들이 언제 어디서 변하는지 코드상으로 구분할 수 없어 차후 기능 변경 시 복잡해진다

DB에 값을 삽입하여야 할 때는 생성자를 이용하거나 @Builder를 사용하고, 값 변경이 필요한 경우는 해당 이벤트에 맞는 public 메서드를 호출하여 변경하도록 한다

빈의 Repository는 항상 같은 패키지에 위치하여야 한다 -> 엔티티 클래스는 기본 레파지도리 없이는 제대로 작동하지 않기 때문이다

Service 레이어에서는 (서비스 메서드에서는) 트랜직션(데이터&디비 사이의 데이터 교류)와 도메인 간의 순서만 보장해준다

-> 비즈니스 로직은 DTO에서 처리하고 불가피한 경우 Entity에서 처리해주는 것이 바람직하다 (이론상)

JPA Auditing으로 ID 값 그리고 생성 시간 등을 따로 클래스로 만들어 각 엔티티에 상속하여 사용한다 -> 더 편리함

 

Chap4. 머스테치로 화면 구성하기

머스테치란

-jsp와 같이 html을 만들어 주는 템플릿 엔진

-쉽게 말해서 뷰를 만들어주는 서버 템플릿 엔진이다

-템플릿 엔진이라는 말 자체가 뷰를 만들어준다

 

머스테치&스프링부트 같이 사용하기

화면을 부르는 컨트롤러 생성한다(IndexController)

->rest 아닌 그냥 컨트롤러로 스트링 리턴 값을 가진 머스테치 파일을 리턴하여 뷰를 보여준다

 

머스테치에서 API 호출 -> id 값의 이름을 가진 함수로 이동한다

Ex) <a id=‘btn-save’>등록</a> 이면 btn-save라는 index.js 파일 속에 id의 이름을 가진 함수로 이동한다

 

Index.js에서 ajax로 api를 호출한다

-> 리액트 쓸 때 axios 같은 개념 (서버와의 연동을 가능하게 해주는 라이브러리)

 

**ajax란?

자바스크립트의 라이브러리이며 자바스크립드를 사용한 비동기 통신, 클라이언트와 서버 간에 xml 데이터를 주고받는 기술

**비동기 방식이란?

웹페이지를 리로드 하지 않고 데이터를 불러오는 방식 -> json이나 xml 형태로 필요한 데이터만 받아 갱신

 

머스테치 사용시 알아야 할 것(머스테치 문법 포함)

 

{{#posts}} / {{/posts}}

post라는 list를 순회한다

Java의 for 문과 동일

 

{{변수명}}

list에서 뽑아낸 객체의 필드를 사용한다

 

{{>layout/header}}

{{>layout/footer}}

{{>}}

현재 머스테치 파일을 기준으로 다른 파일을 가져온다

layout 디렉터리에 있는 header.mustache와 footer.mustache 파일을 불러온다

 

Css는 화면을 그리는 역할

header에서 불러온다

Js(자바스크립트)

api를 호출하는 용도> ->footer에서 불러옴

 

href -> 경로설정

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함