Java 공부
·
면접 대비/Java
Java란 Java는 객체지향 프로그래밍 언어로 기본 자료형들을 제외한 나머지 요소들이 모두 객체로 표현되고, 객체지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어입니다. Java의 장단점Java의 장점JVM 위에서 동작하기 때문에 운영체제에 독립적이고, 가비지 컬렉터를 통한 자동적인 메모리 관리가 가능합니다. Java의 단점JVM 위에서 동작하기 때문에 실행속도가 상대적으로 느리며, 다중 상속이나 타입에 엄격하고 제약이 많습니다. JVM이란JVM은 자바가상머신으로 스택 기반으로 동작하며, 자바 바이트 코드를 각 운영체제에 맞게 해석해주는 역할을 합니다. 또한 가비지 컬렉션을 통해 자동적인 메모리 관리를 해줍니다. Java 컴파일 과정Java 파일 생성build 실행자바 컴파일러의 javac의..
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(){..