맞는데 왜 틀릴까..?

Spring Boot 17

[Spring Boot] 웹 페이지에서 데이터 조회하기

웹 페이지에서 데이터를 조회할 수 있는 기본적인 로직을 알아보자. 1. 클라이언트가 브라우저를 통해 데이터 요청 2. 요청 url을 Controller가 받음 3. 받아진 url에서 찾고자 하는 정보를 Repository에 전달 4. Repository는 DB에 요청 5. 해당 데이터를 Entity로 반환 6. Entity는 모델을 통해 View 템플릿으로 전달 7. 결과 페이지가 클라이언트에게 보임 실습에서는 articles/new를 통해 데이터를 등록한 데이터를 articles/id url에서 id 별로 데이터를 확인하는 방법이다. url에서 데이터 찾기 url의 요청을 받기 위해서는 웹 요청(Request)을 구현한 Controller가 필요하다. @GetMapping 어노테이션을 통해 url을 등..

Spring Boot 2023.03.12

[Spring Boot] Lombok 리팩토링과 로깅

대형 프로젝트나 실무에서도 Lombok은 매우 유용한 라이브러리이며, 개발자들은 Lombok을 사용하여 코드를 리팩토링 할 수 있고, 로깅 기능을 제공받는다. Lombok은 어떤 작업을 수행하기 위해 반복적으로 사용되는 코드를 줄여주고, 가독성을 높이며, 개발자가 작성해야 하는 코드 양을 줄여주는 훌륭한 라이브러리다. 대형 프로젝트나 실무에서는 보통 코드의 양이 많아지고, 가독성과 유지보수성이 매우 중요해지는데 Lombok은 이러한 문제를 해결할 수 있다. 예를 들어 Lombok의 @Getter 및 @Setter 어노테이션을 사용하면 간단하게 클래스의 Getter 및 Setter를 자동으로 생성할 수 있다. Lombok 라이브러리 추가하기 build.gradle에서 lombok 라이브러리를 추가해 주자...

Spring Boot 2023.03.11

[Spring Boot] h2 데이터베이스

실습에서 사용할 H2 데이터베이스는 오픈소스이며 자바로 작성된 인메모리 데이터베이스다. 스프링에서는 H2 데이터베이스를 사용해 개발환경에서 쉽게 테스트하고 개발할 수 있는데, 대규모 프로젝트에는 적합하지 않다. 따라서 테스트나 미니 프로젝트 용도로만 사용하자. application.properties에 enabled를 설정해 주자. localhost:8080/h2-console에 접속하면 다음과 같이 콘솔창이 뜬다. JDBC에 접근하는 URL 경로는 계속 바뀌므로 ctrl-f로 그 주소를 찾아주자. 데이터 베이스에 ARTICLE 을 누르고 RUN을 시켜주면 추가해 두었던 데이터 1, admin, 1234를 확인할 수 있다. h2는 인메모리 데이터베이스 이기 때문에 서버를 종료하면 모든 데이터가 초기화된다..

Spring Boot 2023.03.11

[Spring Boot] 데이터베이스에 데이터 생성

DB는 SQL이라는 언어를 사용하기 때문에 자바를 알지 못한다. 따라서 자바에서 JPA를 이용해 자바 언어를 DB가 이해할 수 있게 하고, 여러 가지 편리한 기능을 제공한다. JPA가 제공하는 기능 Entity: 자바 객체를 잘 이해하게 만든 규격화된 데이터 Repository : entity를 db로 보내기 위한 컴포넌트 기본 로직 : dto -> entity -> repository를 통해 db로 보내기 Entity 자바가 이해할 수 있게 규격화된 Entity 클래스를 생성하자. id 필드는 각 객체의 고유값으로 @GeneratedValue를 통해 자동으로 부여된다. Entity Spring Boot의 Entity는 객체지향 프로그래밍에서 사용되는 클래스를 데이터베이스에 매핑하기 위해 사용된다. En..

Spring Boot 2023.03.11

[Spring Boot] form 태그를 통해 데이터 보내기

form 태그를 통해 데이터를 보내보자. dto 클래스 구성 DTO 스프링 부트에서 DTO는 데이터 전송 객체(Data Transfer Object)를 의미한다. DTO 클래스를 만들어서 컨트롤러와 서비스 계층 간의 데이터 교환에 사용할 수 있다. 이를 위해서는 DTO 클래스에 필드를 추가하고, 생성자와 getter/setter 메서드를 정의해야 한다. 또한 DTO 클래스에서는 데이터 유효성 검사를 위한 애노테이션(Annotation)을 사용하여 입력값의 유효성을 검증할 수 있다. 이렇게 만들어진 DTO 클래스는 컨트롤러에서 HTTP 요청을 처리하고, 서비스 계층에서 비즈니스 로직을 처리할 때 사용된다. DTO는 보통 비즈니스 로직을 처리하는 중간 단계에서 필요한 데이터만을 포함하도록 설계된다. 또한, ..

Spring Boot 2023.03.11

[Spring Boot] Spring 웹 개발 기초 (정적 컨텐츠, MVC, 템플릿 엔진, API)

정적 컨텐츠 정적 컨텐츠는 실시간으로 변경할 필요가 없는 데이터를 의미 서버에 저장해 두고 요청이 있으면 html 파일을 그대로 웹 브라우저에 반환한다. 아래 예시와 같이 그냥 찍어둔 html을 저장해 두면 요청할 때마다 똑같은 결과를 보여준다. 실행 -> http://localhost:8080/hello-static.html 정적 컨텐츠 동작 로직 1. hello-static 이름을 가진 컨트롤러부터 찾음 2. 컨트롤러가 없다면 resources 안에 있는 hello-static.html을 찾은 후 반환 MVC와 템플릿 엔진 MVC : Model, View, Controller 과거 View 단에서 모든 처리를 했지만 현재는 Model, View, Controller로 기능을 쪼개 사용한다. 템플릿 엔..

Spring Boot 2022.09.29

[Spring Boot] Spring Boot 설정 후 빌드하기

Spring Boot 설정 1. start.spring.io 접속 후 아래와 같이 설정 2. generate 후 받은 파일을 압축 해제 한 후 IntelliJ에서 open 윈도우 cmd 에서 build 하기 1. 위에서 받은 압축파일이 있는 폴더로 이동 > cd 폴더경로 2. gradlew 명령어 실행 > gradlew > gradlew build 3. 실행파일(.jar) 찾아가기 > cd build > dir > cd libs > dir 4. 실행 > java -jar 파일명 cmd와 IntelliJ에서 동시에 실행하지 말자 실행중인 .jar 종료하기 1. 8080포트 사용하는 프로세스 pid 찾기 > netstat -ano | find "8080" 2. 프로세스 강제 종료 > taskkill /pid..

Spring Boot 2022.09.28