해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전입니다. [ 리포지터리 ] 엔티티만으로는 데이터베이스에 데이터를 저장하거나 조회 할 수 없다. 데이터 처리를 위해서는 실제 데이터베이스와 연동하는 JPA 리포지터리가 필요하다. 리포지터리란? 엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메서드들을 사용하기 위한 인터페이스이다. 데이터 처리를 위해서는 테이블에 어떤 값을 넣거나 값을 조회하는 등의 CRUD(Create, Read, Update, Delete)가 필요하다. 이 때 이러한 CRUD를 어떻게 처리할지 정의하는 계층이 바로 리포지터리이다. package com.example.board.Question; import..
해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전입니다. [ 엔티티 ] 엔티티는 데이터베이스 테이블과 매핑되는 자바 클래스를 말한다. 엔티티는 모델 또는 도메인 모델 이라고 부르기도 한다. 질문 엔티티 작성하기 package com.example.board.Question; import java.time.LocalDateTime; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue;..
해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전입니다. [ JPA ] 스프링부트는 JPA(Java Persistence API)를 사용하여 데이터베이스를 처리한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping)의 기술 표준으로 사용하는 인터페이스의 모음이다. JPA는 인터페이스이다. 따라서 인터페이스를 구현하는 실제 클래스가 필요하다. JPA를 구현한 대표적인 실제 클래스에는 하이버네이트(Hibernate)가 있다. 우리가 만들 게시판은 질문 답변 게시판이다. 질문이나 답변을 작성하면 데이터가 생성된다. 그러므로 데이터를 저장하거나 조회하거나 수정하는 등의 기능을 구현해야 한다. 웹 서비스는..
해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전입니다. [ 컨트롤러 ] URL 매핑을 추가하기 위해 QuestionController.java 파일을 다음과 같이 작성하자. package com.example.board; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class QuestionController { @GetMapping(..
해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도입니다 [ 프로젝트의 구조 ] src/main/java 디렉터리 src/main/java 디렉터리의 com.example.board 패키지는 자바 파일을 작성하는 공간이다. 자바 파일로는 스프링부트의 컨트롤러, 폼과 DTO, 데이터 베이스 처리를 위한 엔티티, 서비스 파일등이 있다. PracticeApplication.java 파일 모든 프로그램에는 시작을 담당하는 파일이 있다. 스프링부트 애플리케이션에도 시작을 담당하는 파일이 있는데 그 파일이 바로 + Application.java 파일이다. 프로젝트를 생성할 때 자동 생성된다. package com.example.board; import org.springframework.boot.Spri..
[ 에러 메세지 ] 이 에러가 발생하는 경우는 서버를 구동하려고 할 때 서버가 사용하려고 하는 port를 다른 프로세스나 프로그램이 점유하고 있는 경우이다. 일반적으로 서버를 정상적이지 않은 방법으로 종료하거나 종료된 경우 사용자에게는 사용을 하지 않는 것처럼 보이지만 실제로는 서버가 종료되지 않아서 다시 서버를 실행시킬 때 자주 나타나는 문제이다. [ 해결방법 ] 강제종료로 프로세스를 종료시켰다 필자는 윈도우를 사용하기 때문에 윈도우 기준이다 1. 명령 프롬프트에서 netstat -ano | findstr 8080를 입력한다 2. 명령어를 통해 출력된 목록의 process_id를 입력하면 강제종료된다 netstat: 현재 TCP/IP 네트워크 연결 상태 확인 a: 모든 연결 및 수신 대기 포트를 표시 ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해당 문제는 프로그래머스에서 탐욕법(Greedy) 카테고리 안에 있는 문제이다. 탐욕 알고리즘은 정리해 두었던 내용이다 ( 링크 ) 문제 풀이 아직 익숙치않은 Comparator 인터페이스로 이중배열인 costs의 값을 cost순으로 오름차순 했다는 것 정도다 Comparator의 사용법은 간단히 정리 해 두었다 ( 링크 ) 알고리즘 활용에 미숙해서인지 모르겠지만 내 생각엔 탐욕법이나 기타 알고리즘들을 사용해서 푼 것 같지는 않다 물론 이게 어떤 알고리즘이라고 한다면 공부를 더 깊게 해야 할 것 같다 1. 섬..
[ Iterator ] 컬렉션 프레임워크(Collection Framework)에서 값을 가져오거나 삭제할 때 사용한다 [ 장단점 ] 모든 컬렉션 프레임워크에서 공통으로 사용이 가능하다 3개의 메서드만 알면 되어서 쉽게 값을 가져오고 제거할 수 있다 처음부터 끝까지의 단방향 반복만 가능하다 값을 변경하거나 추가하는 것이 불가능하다 대량의 데이터를 제어할 때 속도가 느리다 [ 메서드 ] Iterator.hasNext() : 다음 값이 들었는지 확인 후 true / false를 반환한다 Iterator.next() : 다음 값을 가져온다 Iterator.remove() : next시 가져왔던 값을 컬렉션에서 삭제시킨다. 반드시 next()후에 사용해야 한다 [ 사용하기 ] import java.util.Ar..