전체 글 350

[백준 2302번] 극장좌석 - java

문제 설명 1. 좌석의 개수가 주어진다. 2. 각 좌석은 자신의 양옆으로 이동 가능하며, VIP는 이동이 불가능하다. 3. VIP의 위치가 주어질 때 가능한 좌석의 전체 방법 수를 구하여라 풀이 과정 1. DP를 통해서 풀 수 있다. 2. 좌석을 한 칸씩 늘려가며 방법을 구해주면 점화식을 세울 수 있다. 먼저 VIP석이 아예 없는 경우를 예를 들어 1칸 -> 1개 2칸 -> (1 2) (2 1) 2개 3칸 -> (1 2 3) (1 3 2) (2 1 3) 3개 4칸 -> (1 2 3 4) (1 3 2 4) (2 1 3 4) / (1 2 4 3) (2 1 4 3) 5개 .... 이렇게 된다. 4번째 칸을 기준으로 구할 때에는 -> 3칸을 구하는 방법 뒤에 4번째 위치 / 3으로 끝나는 좌석을 4와 위치를 바..

알고리즘 공부 2022.03.03

JPA가 무엇일까?? 왜 쓸까??

JPA란 Comment 과거에는 SQL을 하나씩 작성하던 것을 JPA가 나타난 후부터는 코드로 작성할 수 있게 해 주었다. 그럼 JPA가 그에 맞는 sql을 실행해 준다. 속도, 생산성과 유지보수 등에서 훨씬 빨라졌다. 다만 난이도가 어렵다. 실무에서는 JPA를 사용하면 굉장히 어렵다. JPA는 다른 것들에 비해 객체와 테이블을 잘 설계하고 매핑을 해야 한다. JPA의 내부 동작 방식을 모르고 쓰는 경우가 많다. JPA가 어떤 SQL을 만들어 내고, 언제 실행하는지 이해해야 한다. 기존 SQL을 사용하는 문제점 개발 언어는 주로 객체지향 언어이다 + DB는 주로 RDB(관계형 DB)를 사용한다 => 즉, 객체를 관계형 DB에 관리한다. SQL중심적인 코딩의 문제점 일단 지루함. 코드 완성 후 변경사항이 ..

이론 정리/java 2022.03.01

Spring boot를 통한 REST API구현 - 이론(3)

Spring boot로 간단한 rest api를 구현하여 보자!! Spring boot를 통한 REST API의 구현 - 실습(3)에 관한 이론과 내용들에 관한 글이다. 관련 내용 1. Lombok 개념 Lombok이란, 반복해서 사용되는 Annotation을 하나로 묶어서 자동으로 작성해주는 라이브러리이다. 자주 쓰이는 내용들을 한꺼번에 적용할 수 있고 긴 코드를 줄여주기 때문에 생산성에 큰 도움이 되지만, 생각보다 큰 단점이 존재한다. 이 단점에 관해서는 이후에 단점이 발생하게 되는 타이밍에 다시 적겠다. 이게 꼭 그 상황이 터져야 비로소 이해하게 되는 것 같다. 사용 @Data @Getter / @Setter / @ToString / @EqualsAndHashCode / @RequiredArgsCo..

Spring boot를 통한 REST API구현 - 실습(3)

Spring boot로 간단한 rest api를 구현하여 보자!! DTO를 사용한 값 전달, default설정 등 DTO를 사용한 값 세팅 및 전달하기 default값 설정과 required 설정하기 DTO생성 해당 위치에 UserInfoDTO라는 java class를 하나 생성해 준다. import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor public class UserInfoDTO { private String name; private String email; } 해당 클래스의 코드는 다음과 같다. 참고로 여기서 @Data, @NoArgsConstructor을 사용하려면 lombok을 import해줘야 할 것이다. ..

Entity, DTO의 차이와 사용 이유, 개념

Entity, DTO가 뭐지? 분리해서 쓰라고? 개인적으로 생각할 때에 처음 Spring boot를 배울 때 가장 개념이 잡히지 않는 것들 중 하나가 DTO, Entity일 것이라 생각한다. 특히 처음에 볼 때는 걍 Entity를 쓰니까 다 되는데 왜 굳이 이거 두개를 나누지? 라는 생각을 할 수도 있을 것이라 생각한다. 이 글에서는 이 두 가지의 간단한 개념과 나누는 이유, 사용 방법에 대해 기술한다. Entity란? Entity란 DB의 테이블에 존재하는 Column을 필드로 갖는 객체이다. 여기서 중요한 점은 DB테이블과 관련이 있다는 점이다. 즉, Entity는 DB테이블과 소통하는 데에 사용하는 것이다. DTO란? Data Transfer Object라는 뜻이다. DTO는 계층 간 데이터 교환을..

이론 정리/java 2022.02.28

Spring boot를 통한 REST API구현 - 이론(2)

Spring boot로 간단한 rest api를 구현하여 보자!! Spring boot를 통한 REST API의 구현 - 실습(2)에 관한 이론과 내용들에 관한 글이다. 관련 내용 1. Annotation @PathVariable Controller에서 parameter를 받을 수 있는 방법 중 하나이다. http://localhost:8080/users/변수입력 이런 식으로 위치 뒤에 {/변수}를 통해 전달할 수 있다. 주의사항 null / 공백 등이 있는 parameter에는 적용하지 않는다. 값에 { . } 이 포함되면, 그 이후 값은 잘리게 된다. @RequestParam Controller에서 parameter를 받을 수 있는 방법 중 하나이다. http://localhost:8080/users..

Spring boot를 통한 REST API구현 - 실습(2)

Spring boot로 간단한 rest api를 구현하여 보자!! Rest api에서 parameter을 전송하고, 이를 확인하기 다시 해당 위치로 들어가서 코드를 조금 수정해 주자. import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @GetMapping public String getUsers(@RequestParam(value = "page")int page, @RequestParam(value = "limit") int limit){ return "get users was called with page = " + page + " an..

Spring boot를 통한 REST API구현 - 이론(1)

Spring boot로 간단한 rest api를 구현하여 보자!! Spring boot를 통한 REST API의 구현 - 실습(1)에 관한 이론과 내용들에 관한 글이다. 먼저 REST api의 개념은 이곳에 설명해 두었다. 관련 내용 1. Annotation @RestController Spring MVC Controller에서 요청에 대한 응답을 return하기 위해 사용한다. 해당 메소드를 사용하면 Controller에서는 데이터를 반환하게 된다. @Controller + @ResponseBody 해당하는 위치의 view를 반환하는 Controller 요청에 대한 응답을 반환하는 ResponseBody RequestMapping(value = "/users") 이를 사용하여 localhost:8080..

REST api의 기초

REST Api의 기초 먼저 spring boot에서 @RestController란 @Controller와 @ResponseBody의 조합이다. Controller : Model객체를 통해 데이터를 전달하고, View를 찾아간다. RestController : 객체만을 반환한다. -> 객체는 주로 JSON나 XML형태로 http응답에 담아서 전송한다. Controller는 Spring 2.5버전에서부터, RestController는 spring 4.0버전에서부터 지원되었다. RestController 사용시 모든 메소드가 뷰 대신 객체로 작성된다. REST의 특징 Uniform Interface HTTP의 표준에 따른다면 언어에 종속되지 않고, 모든 플랫폼에서 사용 가능하다. Stateless REST는..

이론 정리 2022.02.27

Spring boot를 통한 REST API구현 - 실습(1)

Spring boot로 간단한 rest api를 구현하여 보자!! 프로젝트 세팅 먼저 IntelliJ에서 새로운 프로젝트를 만들어 주자 RestApi의 Get, Post, Put, Delete를 매핑하기 프로젝트가 완성되면 일단 UserController라는 클래스를 해당 위치에 생성해 준다. 이후 아래와 같은 코드를 작성해 준다. import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @GetMapping() public String getUser(){ return "get users was called"; } @PostMapping publ..