JPA란?JPA(Java Persistence API)는 자바를 이용하여 ORM을 구현한 것 따라서 JPA를 구현한 회사마다 방식이 다 다르며 따라서 각 구현체마다 특정 회사의 이름으로 불린다. ex) Hibernate, TopLink, Eclipselink ORM? ORM(Object Relational Mapping)은 객체와 DB의 테이블이 매핑을 이루는 것즉, 객체가 관계형 데이터 베이스의 테이블이 되도록 매핑 시켜주는 것 ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로서 DB의 데이터를 조작 가능자바 객체만 만들면 SQL을 작성하지 않아도 알아서 DB에 CRUD해준다. Spring Data JPA 스프링 부트는 JPA 중에서 Hibernate라는 구현체를 사용Spring Da..
서버 -> 클라이언트한테 데이터를 전달하는 방법1. 응답용 DTO 생성 응답용 DTO 클래스를 만들고 객체를 생성해서객체의 변수에 값을 저장하고 컨트롤러의 메소드가 returm 해주면 알아서 json 형태로 변경해준다. 응답용 DTOpublic class ResponseDto { private int id; private String name; private String message; // getter, setter 생략}@RestController@RequestMapping("/test04")public class Test04Controller { @GetMapping("ex01") public ResponseDto ex01() { Respo..
HTTP 요청 처리 - @RequestMapping컨트롤러에 @RestController와 @RequestMapping 을 붙여서 내부에 선언되는 메소드에서 사용할 공통 URL을 설정한다.@Controller@RequestMapping("/test01")public class Test01Controller { private final Test01Service test01Service; public Test01Controller(Test01Service test01Service) { this.test01Service = test01Service; }} 컨트롤러 내부에서는 각 HTTP 메소드에 맞는 어노테이션을 사용하면 된다. @GetMappingGET 요청에 대한 처리를 할 ..
프로젝트 생성File - New - Project 왼쪽 Generators 탭에서 Spring Boot 선택 후 이름과 경로를 설정해준다. dependency를 미리 추가해주는 부분인데, 나중에 추가해줄수도 있으니 그냥 create 해줬다. 인텔리제이 무료 버전에서는 이 기능을 사용할 수 없기 때문에https://start.spring.io/여기서 프로젝트를 만들어줘야 한다 ! 폴더 구조가장 많이 사용하게 될 부분은 src 폴더와 build.gradle 파일이다. build.gradle에 dependency 추가 spring-boot-starter-webspring-boot-starter를 뒤에 -web 을 붙여준다.dependencies { implementation 'org.spr..
스프링 프레임워크에서 클라이언트 요청을 처리하는 컨트롤러를 정의할 때@Controller와 @RestController 를 사용할 수 있다. @Controller클라이언트에게 응답을 줄 때 View(Html, JSP 파일)를 찾아서 전달한다.@Controllerpublic class MyController { @GetMapping("/hello") public String hello() { return "hello"; // → ViewResolver가 "hello.html" 파일을 찾아 렌더링 }} "hello"를 반환하면 hello.html 파일을 찾아서 반환해준다. @RestController클라이언트에게 응답을 줄 때 자신이 직접 내용을 전달한다.JSON/XML..
컴포넌트 스캔이란?스프링 부트는 @SpringBootApplication 이 붙어있는 클래스가 있는 패키지 내부에 있는 클래스들을 스캔한다. 스프링 부트 프로젝트를 생성하면 Application 클래스에 자동으로 @SpringBootApplication 이 붙어있다.@SpringBootApplicationpublic class Day01Application { public static void main(String[] args) { SpringApplication.run(Day01Application.class, args); }}컴포넌트 스캔으로 객체가 생성되는 어노테이션@Controller, @RestController, @Service, @Repository, @Configur..
스프링 프레임워크란?자바 기반 애플리케이션 프레임워크자바에서 가장 많이 사용하는 프레임워크다.자바로 애플리케이션을 개발하는 데 필요한 기능을 제공하고 쉽게 사용하도록 돕는 도구 스프링의 특징으로는 제어 역전(IoC)와 의존성 주입(DI)이 있다.제어 역전 (IoC)기존 자바에서는 객체를 생성하고 관리하는 제어 권한이 사람(개발자)에게 있었는데,제어 권한이 스프링에게 넘어가서 제어의 역전(IoC)이라고 한다.-> 원래 객체의 관리 제어권이 사용자에게 있었는데 스프링으로 제어권이 넘어갔다. 사용할 객체를 직접 생성하지 않고, 객체의 생명주기 관리를 외부(스프링 컨테이너)에 위임하는 것 의존성 주입 (DI : Dependency Injection)제어 역전의 방법 중 하나로, 사용할 객체를 직접 생성하지 않..
AVL 트리란?균형 이진 탐색 트리 (BST)의 한 종류로, 각 노드의 균형을 유지하여 탐색, 삽입, 삭제 연산을 O(log N) 시간에 수행할 수 있는 자료구조 균형 이진 탐색 트리이기 때문에 각 노드의 왼쪽 서브 트리와 오른쪽 서브 트리의 높이 차이가 -1, 0, 1 사이로 유지된다.트리가 한쪽으로 치우치는 것을 방지하여 탐색, 삽입, 삭제 연산의 성능을 보장한다. BF = (왼쪽 서브트리의 높이 - 오른쪽 서브 트리의 높이)의 절댓값모든 노드의 왼쪽, 오른쪽 서브 트리의 높이 차이가 최대 1이다.BF가 2 이상이 되면 회전을 통해 균형을 잡는다.AVL 트리 연산, 시간 복잡도삽입, 삭제 모두 일반적인 BST 삽입, 삭제를 수행한다.삽입, 삭제 후 BF를 계산하고, BF가 -1, 0, 1 범위를 벗어..
A* 알고리즘 (최단 거리 알고리즘) : 그래프 탐색과 최단 경로 찾기를 위한 알고리즘으로, 다익스트라 알고리즘과 휴리스틱(Heuristic) 탐색을 결합한 방식 각 경로의 비용을 평가하는 F 값을 기반으로 탐색을 수행열린 목록: 내가 앞으로 갈 수 있는 노드들닫힌 목록: 내가 이미 갔던 노드들노드: 각 좌표부모 노드: 이동할 때 현재 노드의 이전 노드F: G + HG: 출발지에서 얼마나 떨어져 있나 (상, 하, 좌, 우 = 10, 대각선 = 14)H: 목적지까지 얼마나 이동해야 하나(대각선 이동과 장애물은 고려하지 않는다.) 시작점을 열린 목록에 넣는다. 열린 목록이 비어있지 않으면 반복 열린 목록에서 F값이 가장 적은 하나를 가져온다. (가져온 노드는 목록에서 삭제) 가..
1.20 ~ 1.24 오랜만입니다 하하하....2주치가 증발해버렸네요 새해에는 부지런한 사람이 되자고 다짐해놓고 바로 2주치를 안 써버렸다 ㅠ약간의 변명을 해보자면... ^^; 7주차부터 콧물+기침이 나오다가 8주차 목요일부터 몸 상태가 급격하게 안 좋아지고 한 달 동안 기침을 계속 심하게 했다 ㅠ기침을 계속 하니까 너무 힘들어서 한 달간 병원을 세 곳을 다니면서 몸 상태를 회복하려고 수액도 맞고.... 심지어 18일 - 21일에 여행 계획도 있었기 때문에 컨디션을 좋게 하려고 엄청 노력했는데 결국 여행 도중 컨디션이 급격하게 악화돼서 제대로 놀지도 못했다 😥기침을 너무 많이 해서 갈비뼈 안쪽 통증이 심하길래.. 여행에서 돌아온 날 바로 내과 가서 엑스레이 찍고 천식 검사, 기관지 검사했는데 병원비가..