Todo 프로젝트 리팩토링 하기
·
TIL
1. 현재 문제점현재 Todo프로젝트에서는 토큰에 저장되어있는 유저 정보를 사용하기 위해 각 컨트롤러 마다 아래와 비슷한 코드들이 중복으로 발생하게된다. 무엇보다 각 컨트롤러마다 getUser라는 메서드를 만들기 때문에 만약 내가 request.setAttribute로"user"가 아닌 "users"로 저장하게된다면 각 컨트롤러마다 들어가서 바꿔줘야하는 불편함이 생긴다. 그래서 이 부분을 고쳐보고자 한다. @GetMapping("/myInfo") public ResponseEntity findMyInfo(HttpServletRequest request) { return ResponseEntity.ok(userService.findById(getUser(request))); } ..
프로그래머스 - 최댓값과 최솟값
·
프로그래머스
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.제한조건s 에는 둘 이상의 정수가 공백으로 구분되어 있습니다.입출력 예sreturn"1 2 3 4""1 4""..
영속성 컨텍스트
·
TIL
영속성 컨텍스트란?영속성 컨텍스를 쉽게 표현하자면 Entity를 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간입니다.JPA에서는 테이블과 매핑되는 Entity 객체 정보를 영속성 컨텍스트를 통해 애플리케이션 내에서 오래 지속되도록 보관합니다.영속성 컨텍스트에 접근하여 Entity 객체들을 조작하기 위해서는 EntityManager가 필요합니다. 영속성 컨텍스트 기능1차 캐시쓰기 지연 저장소객체 동일성 보장 1차캐시 영속성 컨텍스트는 내부적으로 캐시 저장소를 가지고 있는데 이를 1차 캐시라고 부릅니다.캐시 저장소는 Map 자료구조 형태로 Key에는 @Id로 매핑한 기본키를,Value에는 Entity 객체를 저장합니다.em.persist(memo); // 메서드 호출 시 memo Entity 객체를 ..
JPA - Entity
·
TIL
EntityEntity란 JPA에서 관리되는 클래스 즉 객체를 의미합니다.데이터베이스와의 상호작용을 위한 매핑 정보도 포함되어있습니다. @EntityJpa가 관리할 수 있도록 테이블과 매핑할 클래스에는 필수로 달아주어야한다. @Entity 어노테이션이 붙은 클래스는 JPA가 관리하게 되며, 이를 엔티티라고 부릅니다.@Entity // JPA가 관리할 수 있는 Entity 클래스 지정public class Memo { ...}name 속성을 이용하여 엔티티 클래스 이름을 지정할 수 있습니다. (default : 클래스 명)@Entity(name = "Memo") // JPA가 관리할 수 있는 Entity 클래스 지정public class Memo { ...}주의사항JPA가 Entity 클래스를 인스턴스화 ..
JPA - 일정 CRUD
·
TIL
저번 과제는 JDBC를 이용한 일정관리 앱을 만드는거였는데 이번 과제는 JPA를 이용하여일정관리 API를 만드는 것이다. 이번에는 한 단계 한 단계 차근차근 나가보려고한다.일단 1단계인 일정 CRUD의 요구사항은 아래와 같다.키워드@Entity: 데이터베이스 테이블과 매핑되는 클래스에 사용합니다.@Id: 해당 필드를 기본 키로 지정합니다.@GeneratedValue: 기본 키 생성 전략을 설정합니다.@Repository: DAO(Data Access Object) 클래스에 사용하여 데이터 접근을 명시합니다.어노테이션일정을 저장, 조회, 수정, 삭제할 수 있습니다.일정은 아래 필드를 가집니다.작성 유저명, 할일 제목, 할일 내용, 작성일, 수정일 필드삭제의 경우일정을 삭제할 때 일정의 댓글도 함께 삭제이 ..
JPA
·
TIL
JPAJPA(Java Persistence Api)는 자바에서 제공하는 인터페이스로 ORM 기술에 대한 표준 명세이다.관계형 데이터베이스를 사용하는 방식을 나타내며 ORM이므로 자바 클래스와 DB table을 Mapping한다.ORM : Object - Relational Mapping(객체 관계 매핑)객체와 관계형 데이터베이스의 데이터를 매핑하는 기술ORM 프레임워크가 객체와 데이터베이스 중간에서 매핑객체와 테이블을 매핑하여 패러다임 불일치 문제 해결JPA 동작JPA는 애플리케이션과 JDBC 사이에서 동작한다.JPA는 JDBC API를 사용하여 데이터베이스와 데이터를 주고받게 된다.JPA를 사용하는 이유기존의 개발 방식은 SQL 중심적인 개발이였다.이런식의 개발은 직접 SQL문을 작성해야 DB에 접근할..
Lombok
·
TIL
Lombok이란?자바 개발 시 반복적으로 작성해야하는 코드는 개발자의 생산성을 저하시키는 요인 중 하나이다.롬북(Lombok)은 이러한 문제를 해결하기 위해 등장한 라이브러리로,어노테이션을 사용하여 자동으로 코드를 생성해주는 기능을 제공한다. Lombok  자주 사용하는 어노테이션@Getter@Getterpublic class Memo { private String username; private String contents;}// @Get어노테이션을 사용하면// 아래처럼 get() 메서드를 자동으로 추가public class Memo{ private String username; private String contents; public String getUserName(){..
Request와 Response
·
TIL
Request와 Response에 대해 알아보기전에 HTTP부터 알아보자. HTTP (HyperText Transfer Protocol)HTTP는 데이터를 주고 받는 양식을 정의한 "통신 규약" 중 하나이다.클라이언트가 브라우저를 통해 어떤 서비스 url을 통하거나 다른 방법으로 요청(Request)을 하면, 서버에서는 해당 요청에 맞는 응답(Response)을 하는 형태로 동작한다. Request 클라이언트가 서버에게 연락하는 것을 요청(Request)이라고 하며, 요청에 대한 정보를 담아 서버로 보낸다. - Request Method 종류GET리소스를 검색하고, 반환받기 위해 사용되는 메서드원하는 정보를 서버에 요청할 때 쓰인다.HEADGET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포..