분류 전체보기
-
15장. 댓글 컨트롤러와 서비스 만들기 (2) 15.4. 댓글 생성하기 15.4.1. 요청을 받아 응답할 컨트롤러 만들기 @PostMapping()으로 댓글 생성을 요청 받는다. 첫 번째 매개변수에는 댓글이 달릴 부모 게시글의 id를 받고, @PathVariable을 통해 요청 URL 의 articleId를 가져온다. 두 번째 매개변수는 생성할 댓글 정보를 가져온다. HTTP 요청의 Body로부터 JSON 데이터를 받아와야 하므로 @RequestBody를 이용해 CommentDto dto로 받는다. ★ @RequestBody 어노테이션은 HTTP 요청 본문에 실린 내용(XML, JSON, YAML)을 자바 객체로 변환해준다. src > test > java > com.example.firstproject..
[Spring Boot] 15. 댓글 컨트롤러와 서비스 만들기 (2)15장. 댓글 컨트롤러와 서비스 만들기 (2) 15.4. 댓글 생성하기 15.4.1. 요청을 받아 응답할 컨트롤러 만들기 @PostMapping()으로 댓글 생성을 요청 받는다. 첫 번째 매개변수에는 댓글이 달릴 부모 게시글의 id를 받고, @PathVariable을 통해 요청 URL 의 articleId를 가져온다. 두 번째 매개변수는 생성할 댓글 정보를 가져온다. HTTP 요청의 Body로부터 JSON 데이터를 받아와야 하므로 @RequestBody를 이용해 CommentDto dto로 받는다. ★ @RequestBody 어노테이션은 HTTP 요청 본문에 실린 내용(XML, JSON, YAML)을 자바 객체로 변환해준다. src > test > java > com.example.firstproject..
2024.01.29 -
1. 메서드 정의 public static int add(int a, int b) { System.out.println(a + "+" + b + " 연산 수행"); int sum = a + b; return sum; } 메서드는 크게 메서드 선언과 메서드 본문으로 나눌 수 있다. 1.1. 메서드 선언 public static int add(int a, int b) · public static ▶ public : 다른 클래스에서 호출할 수 있는 메서드라는 뜻. (접근 제어 과정에서 자세하게 다룰 예정) ▶ static : 객체를 생성하지 않고 호출할 수 있는 정적 메서드라는 뜻. · int add(int a, int b) ▶ int : 반환 타입을 지정 ▶ add : 메서드에 이름을 부여, 해당 이름을 통..
[Java 기초] 메서드(Method)1. 메서드 정의 public static int add(int a, int b) { System.out.println(a + "+" + b + " 연산 수행"); int sum = a + b; return sum; } 메서드는 크게 메서드 선언과 메서드 본문으로 나눌 수 있다. 1.1. 메서드 선언 public static int add(int a, int b) · public static ▶ public : 다른 클래스에서 호출할 수 있는 메서드라는 뜻. (접근 제어 과정에서 자세하게 다룰 예정) ▶ static : 객체를 생성하지 않고 호출할 수 있는 정적 메서드라는 뜻. · int add(int a, int b) ▶ int : 반환 타입을 지정 ▶ add : 메서드에 이름을 부여, 해당 이름을 통..
2024.01.28 -
1. 일반적인 for문 int[] numbers = {1, 2, 3, 4, 5}; // 일반 for문 for (int i = 0; i < numbers.length; i++) { int number = numbers[i]; System.out.println(number); } 일반적인 for문을 살펴보면, 배열에 있는 값을 순서대로 읽어서 number변수에 넣고 출력한다. 배열은 처음부터 끝까지 순서대로 읽어서 사용하는 경우가 많기에 인덱스를 탐색하는 변수 int i를 선언해야 한다. 그리고 i < number.length 같은 배열의 끝 조건도 지정하고 인덱스를 증가(i++)시키는 등 번잡한 일들을 해주어야 한다. 2. 향상된 for문 (for-each) int[] numbers = {1, 2, 3, ..
[Java 기초] 향상된 for문 (for-each)1. 일반적인 for문 int[] numbers = {1, 2, 3, 4, 5}; // 일반 for문 for (int i = 0; i < numbers.length; i++) { int number = numbers[i]; System.out.println(number); } 일반적인 for문을 살펴보면, 배열에 있는 값을 순서대로 읽어서 number변수에 넣고 출력한다. 배열은 처음부터 끝까지 순서대로 읽어서 사용하는 경우가 많기에 인덱스를 탐색하는 변수 int i를 선언해야 한다. 그리고 i < number.length 같은 배열의 끝 조건도 지정하고 인덱스를 증가(i++)시키는 등 번잡한 일들을 해주어야 한다. 2. 향상된 for문 (for-each) int[] numbers = {1, 2, 3, ..
2024.01.28 -
1. 배열의 선언과 생성 public class Array1 { public static void main(String[] args) { int[] students ; // 배열 변수 선언 students = new int[5]; // 배열 생성 // 변수 값 대입 students[0] = 90; students[1] = 80; students[2] = 70; students[3] = 60; students[4] = 50; // 배열의 길이 int length = students.length; // 변수값 사용 : 리팩터링 for (int i = 0; i < length; i++) { System.out.println("학생" + (i + 1) + " 점수 : " + students[i]); } } } ..
[Java 기초] 배열(Array)1. 배열의 선언과 생성 public class Array1 { public static void main(String[] args) { int[] students ; // 배열 변수 선언 students = new int[5]; // 배열 생성 // 변수 값 대입 students[0] = 90; students[1] = 80; students[2] = 70; students[3] = 60; students[4] = 50; // 배열의 길이 int length = students.length; // 변수값 사용 : 리팩터링 for (int i = 0; i < length; i++) { System.out.println("학생" + (i + 1) + " 점수 : " + students[i]); } } } ..
2024.01.28 -
15장. 댓글 컨트롤러와 서비스 만들기 (1) 15.1. 댓글 REST API의 개요 · REST 컨트롤러 - 댓글 REST API를 위한 컨트롤러 - 서비스와 협업, 클라이언트 요청을 박아 응답하며 뷰(View)가 아닌 데이터(JSON) 반환 · 서비스 - REST 컨트롤러와 리파지터리 사이에서 비즈니스 로직, 즉 처리 흐름을 담당 - 예외 상황이 발생하면 @Transactional로 변경된 데이터 롤백 · DTO - 사용자에게 보여 줄 댓글 정보를 담은 것 - 단순히 클라이언트와 서버 간에 댓글 JSON 데이터 전송 · 엔티티 - DB 데이터를 담는 자바 객체 - 엔티티를 기반으로 테이블 생성 - 리파지터리가 DB 속 데이터를 조회하거나 전달할 때 사용 · 리파지터리 - 엔티티를 관리하는 인..
[Spring Boot] 15. 댓글 컨트롤러와 서비스 만들기 (1)15장. 댓글 컨트롤러와 서비스 만들기 (1) 15.1. 댓글 REST API의 개요 · REST 컨트롤러 - 댓글 REST API를 위한 컨트롤러 - 서비스와 협업, 클라이언트 요청을 박아 응답하며 뷰(View)가 아닌 데이터(JSON) 반환 · 서비스 - REST 컨트롤러와 리파지터리 사이에서 비즈니스 로직, 즉 처리 흐름을 담당 - 예외 상황이 발생하면 @Transactional로 변경된 데이터 롤백 · DTO - 사용자에게 보여 줄 댓글 정보를 담은 것 - 단순히 클라이언트와 서버 간에 댓글 JSON 데이터 전송 · 엔티티 - DB 데이터를 담는 자바 객체 - 엔티티를 기반으로 테이블 생성 - 리파지터리가 DB 속 데이터를 조회하거나 전달할 때 사용 · 리파지터리 - 엔티티를 관리하는 인..
2024.01.26 -
14장. 댓글 엔티티와 리파지터리 만들기 14.1. 댓글 기능의 개요 14.1.1. 댓글과 게시글의 관계 게시판을 보면 하나의 글에 수많은 댓글이 달리는데, 이러한 관계를 one-to-many, 즉 일대다(1:N) 관계라고 한다. 거꾸로 댓글의 관점에서 보면 여러 댓글이 하나의 게시글에 달리므로 many-to-one, 즉 다대일(N:1) 관계라고 한다. 그림을 보면 article 테이블과 comment 테이블이 id를 기준으로 관계를 맺고 있다. 두 테이블 모두 각각 자신을 대표하는 id가 있는데, id와 같이 자신을 대표하는 속성을 대표키라고 한다. 대표키는 동일 테이블 내에 중복된 값이 없어야 한다. comment 테이블을 보면 연관 대상을 가리키는 article_id가 하나 더 있는데, articl..
[Spring Boot] 14. 댓글 엔티티와 리파지터리 만들기14장. 댓글 엔티티와 리파지터리 만들기 14.1. 댓글 기능의 개요 14.1.1. 댓글과 게시글의 관계 게시판을 보면 하나의 글에 수많은 댓글이 달리는데, 이러한 관계를 one-to-many, 즉 일대다(1:N) 관계라고 한다. 거꾸로 댓글의 관점에서 보면 여러 댓글이 하나의 게시글에 달리므로 many-to-one, 즉 다대일(N:1) 관계라고 한다. 그림을 보면 article 테이블과 comment 테이블이 id를 기준으로 관계를 맺고 있다. 두 테이블 모두 각각 자신을 대표하는 id가 있는데, id와 같이 자신을 대표하는 속성을 대표키라고 한다. 대표키는 동일 테이블 내에 중복된 값이 없어야 한다. comment 테이블을 보면 연관 대상을 가리키는 article_id가 하나 더 있는데, articl..
2024.01.25 -
13장. 테스트 코드 작성하기 13.1. 테스트란? 최근에는 테스트 도구를 이용해 반복적인 검증 절차를 자동화하고 있다. 테스트 도구를 활용해 코드를 검증한다는 것은 테스트 코드(test code)를 작성해 실행한다는 것이다. 작성한 코드가 테스트를 통과하면 지속적인 리팩터링으로 코드를 개선하고, 통과하지 못하면 잘못된 부분을 찾아 고치는 디버깅(debugging)을 해야 한다. · 테스트(test) - 프로그램의 품질을 검증하는 것 - 의도대로 프로그램이 잘 동작하는지 확인하는 과정 · 테스트 주도 개발(TDD, Test Driven Development) - 일단 테스트 코드를 만든 후 이를 통과하는 최소한의 코드부터 시작해 점진적으로 코드를 개선 및 확장하는 개발 방식 13.2. 테스트 코드 작성하..
[Spring Boot] 13. 테스트 코드 작성하기13장. 테스트 코드 작성하기 13.1. 테스트란? 최근에는 테스트 도구를 이용해 반복적인 검증 절차를 자동화하고 있다. 테스트 도구를 활용해 코드를 검증한다는 것은 테스트 코드(test code)를 작성해 실행한다는 것이다. 작성한 코드가 테스트를 통과하면 지속적인 리팩터링으로 코드를 개선하고, 통과하지 못하면 잘못된 부분을 찾아 고치는 디버깅(debugging)을 해야 한다. · 테스트(test) - 프로그램의 품질을 검증하는 것 - 의도대로 프로그램이 잘 동작하는지 확인하는 과정 · 테스트 주도 개발(TDD, Test Driven Development) - 일단 테스트 코드를 만든 후 이를 통과하는 최소한의 코드부터 시작해 점진적으로 코드를 개선 및 확장하는 개발 방식 13.2. 테스트 코드 작성하..
2024.01.24 -
12장. 서비스 계층과 트랜잭션 12.1. 서비스와 트랜잭션 개념 · 서비스 - 컨트롤러와 리파지터리 사이에 위치하는 계층 - 서버의 핵심 기능(비지니스 로직)을 처리하는 순서를 총괄 · 트랜잭션 - 모두 성공해야 하는 일련의 과정 - 쪼갤 수 없는 업무 처리의 최소 단위 · 롤백 - 트랜잭션이 실패로 돌아갈 경우 진행 초기 단계로 돌리는 것 앞서 작성한 REST 컨트롤러 코드를 보면 컨트롤러의 역할과 서비스의 역할을 동시에 하는 1인 2역 코드이다. 따라서 클라리언트의 요청을 받고 응답하는 컨트롤러의 역할 코드와 리파지터리에서 데이터를 가져오도록 하는 서비스 역할 코드를 나눠서 분리해야 한다. 12.2. 서비스 계층 만들기 먼저 객체 주입된 리파지터리를 서비스로 바꾸고 ArticleService 클래스..
[Spring Boot] 12. 서비스 계층과 트랜잭션12장. 서비스 계층과 트랜잭션 12.1. 서비스와 트랜잭션 개념 · 서비스 - 컨트롤러와 리파지터리 사이에 위치하는 계층 - 서버의 핵심 기능(비지니스 로직)을 처리하는 순서를 총괄 · 트랜잭션 - 모두 성공해야 하는 일련의 과정 - 쪼갤 수 없는 업무 처리의 최소 단위 · 롤백 - 트랜잭션이 실패로 돌아갈 경우 진행 초기 단계로 돌리는 것 앞서 작성한 REST 컨트롤러 코드를 보면 컨트롤러의 역할과 서비스의 역할을 동시에 하는 1인 2역 코드이다. 따라서 클라리언트의 요청을 받고 응답하는 컨트롤러의 역할 코드와 리파지터리에서 데이터를 가져오도록 하는 서비스 역할 코드를 나눠서 분리해야 한다. 12.2. 서비스 계층 만들기 먼저 객체 주입된 리파지터리를 서비스로 바꾸고 ArticleService 클래스..
2024.01.23