<개발 환경>IntelliJ -> Spring Web, JPA, mySQL, Lombok, H2 포함시키기lombok이란? 여러가지 어노테이션 제공. 메서드 작성 코드를 줄여주는 라이브러리이다.localhost:8080으로 접속데이터만 받는 경우 -> JSON형식
초기의 프로그래밍 방식은 코드를 쭉 나열해 놓는 코딩 방식인 절차적 프로그래밍이용.하지만 대부분의 사람들은 한 번에 여러가지 다른 생각을 하는데에 취약하기 때문에 우리가 하나의 사물(객체)에 하나의 의미를 부여하는 것처럼 프로그래밍하게 되었음.자를 것이 필요 -> 가위
클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술. 즉, 자바를 이용하여 웹을 만들기 위해 필요한 기술. 특히 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해주어야하는데 이러한 역할을 하는
세계에서 가장 많이 쓰이는 웹 서버 중 하나이며 아파치 소프트웨어 재단에서 관리하는 HTTP 웹 서버이다.웹 서버 : 정적인 데이터를 처리하는 서버.단순 이미지나 html파일과 같은 리소스만을 제공하고 서버는 웹서버만 사용하여 빠르고 안정적이게 활용.톰캣은 아파치 소프
의존성 주입.하나의 객체에서 다른 객체가 필요할 때 객체를 직접 생성하지 않고 이미 생성되어 있는 객체를 가져오는 작업을 DI(Dependency Injection), 의존성 주입이라고 한다.단위 테스트가 용이해진다.코드의 재활용성을 높여준다.객체 간의 의존성을 줄이거
실제로 DB에 접근하는 객체Service와 DB를 연결하는 고리 역할JPA에서는 따로 DAO를 만들지 않아도 트랜잭션 설정에 크게 문제는 없다Repository는 DAO의 역할을 대신한다. 비슷하지만 차이는 분명있다.각 계층 간 데이터 교환을 위한 객체DB에서 데이터를
RDBMS(RDB) : 관계형 데이터베이스. 정보 저장소. 매우 고도화된 엑셀. H2는 RDBMS의 한 종류로 서버가 켜져있는 동안에만 작동한다.(인메모리 DB)SQL : 데이터를 읽고, 저장하고, 변경하고, 삭제하는 문법JPA : java로 코드를 작성하면 SQL로
게시판 만들기에서 글을 쓰고 작성하기 버튼을 누르면 전체 목록을 조회할 수 있는 페이지로 넘어간다.이 부분은 아주 간단하게 ajax에서 post방식으로 데이터를 보내고 성공 시 window.location.href = "list.html"를 통해 페이지를 넘어갈 수 있
EC2로 배포 이후 게시글을 등록하면 시간이 아예 달라졌다.배포 전 localhost:8080에서는 문제가 없었는데 무슨일인가 했더니 EC2시간과 로컬시간이 달라서 그렇다고 한다. timezone을 서울시간으로 맞춰줘야 하는데 이를 위해 Application의 클래스
타임리프(Thymeleaf)는 템플릿 엔진이다.템플릿 엔진이란 html과 데이터를 결합한 결과물을 만들어주는 도구이다.타임리프는 이 템플릿 엔진 중 하나이다. 스프링 부트에서는 JSP가 아닌 타임리프를 사용할 것을 권장하고 있다.서버에서 데이터를 보내어 웹 서비스를 만
복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴. 생성자에 인자가 많을 때는 빌더 패턴을 고려해보는 것이 좋다.인자가 많을 경우에 쉽고 안전하게 객체를 생성할 수 있다.인자의 순서와 상관없이 객체를 생
json 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 web token.header, payload, signature로 구성되어있다.header : signature를 해싱하기 위한 알고리즘 정보들이 담겨있음payload : 서버와 클라이언트가 주고받는, 시스
우선 RestController와 Controller의 차이점을 짚고 넘어가자.이 둘의 가장 큰 차이점은 HTTP Response Body가 생성되는 방식이다.Controller는 view기술을 사용하고 주로 view(화면)를 return한다.Restful 웹서비스 C
스프링부트에서는 트랜잭션이 필요한 서비스 클래스(또는 메소드)에 @Transactional 어노테이션을 달아 간단하게 트랜잭션 설정을 할 수 있다. 트랜잭션은 데이터베이스의 상태를 변경시키는 작업 또는 한번에 수행되어야하는 연산들을 의미한다.이 때, '데이터베이스의 상
스프링 controller에서 파라미터를 받는 다양한 방법들이 존재한다. RequestParamPathVariableRequestBodyMap위의 순서대로 하나씩 알아보자 !URI 가 📌 /api/products?page=1&size=10&sortBy=coffeeId
page : 현재 페이지 번호size : 페이지 사이즈sortBy : 정렬 항목 (그 항목 기준으로 정렬)isAsc : 오름차순? (true오름차순, false내림차순)Pageable : 페이징 하는 방법을 기술해놓은 클래스(인터페이스), page : 실제로 페이징으로
객체의 상태가 변경되는 것은 객체 스스로의 행동에 의해서야 한다.이렇게 설계될 때 객체는 자율적인 객체가 되고 외부의 영향을 받지 않음으로써 느슨한 결합과 유연한 협력을 이룰 수 있다.getter, setter는 자신의 상태정보를 외부에 노출하고 이것은 외부의 영향으로
board에 username이 필요한 것은 자명하다.그런데 우리 프로젝트에서 jwt 토큰으로 사용자를 식별하기 때문에 board를 user와 join하지 않고, board에 username 컬럼을 만들어서 token에서 빼낸 user정보(username)로 set하여
클라이언트에 DB에서 빼온 값을 전달할 때, 엔티티를 그대로 보내는 것이 아니라, 디티오에 담아서 전달하는 것이 좋다.
무한스크롤을 구현하는데At least 2 parameter(s) provided but only 1 parameter(s) present in query 이런 에러가 났다.파라미터 갯수 똑같은데 대체 뭐가 문제지 찾아보니스프링에서는 PageRequest가 아닌 Page
디자인 패턴 : SW개발방법을 공식화 한 것MVC 패턴 : Model, View, Controller. 애플리케이션을 3가지 역할로 구분한 개발방법론사용자는 원하는 기능을 처리하기 위한 모든 요청을 컨트롤러에 보낸다.컨트롤러는 모델을 사용하고, 모델은 알맞은 비즈니스
Spring : 매우 길다. 모든 dependency를 버전까지 정확하게 한땀한땀SpringBoot : 짧아짐. 버전 관리도 권장 버전으로 자동 설정Spring : 매우 길다. 빈 등록, 설정SpringBoot : application.properties만 있으면 됨.