CodeStates_Backend/TIL (Today I Learned)
-
[모의기술면접] Section4CodeStates_Backend/TIL (Today I Learned) 2022. 8. 18. 12:30
1. 인증과 인가의 차이에 대해 설명해 주세요. 인증은 영어로 Authentication 으로 사용자의 신원을 확인하는 것이다. 일반적으로 어떠한 인증 요소를 증거로 제시하여 자신을 인증합니다. 예를 들면 은행에서 돈을 인출하기 위해 은행원이 신분증을 요구할 수 있다. 마찬가지로 온라인에서도 로그인을 할 때 아이디/패스워드를 입력하거나 휴대폰에 전달된 메시지의 코드를 입력하는 등이 있다. 인가는 영어로 Authorization 으로 사용자가 어떤 리소스에 접근할 수 있는 지 또는 어떠한 동작을 수행할 수 있는 지 즉, 접근 권한을 얻는 일을 말한다. 예를 들면 공연장에 입장하기 위해 티켓을 구매하는 상황을 생각해보자. 공연장은 신원에는 관심이 없고 공연장에 입장할 권한이 있는 지만 관심이 있다. 온라인에..
-
*[TIL] JPA , Spring Data JPACodeStates_Backend/TIL (Today I Learned) 2022. 7. 24. 11:58
1. JPA (Java Persistence API , Jakarta Persistence API) * Java 진영 ORM 표준 기술 스펙. * '스펙'이므로 인터페이스로 스펙이 정의 되어있을 뿐임. 이를 구현한 여러 구현체들을 이용하게 됨. * 대표적인 구현체로 Hibernate ORM, EclipseLink, DataNucleus 등이 있는데 Hibernate 이 가장 많이 쓰이고 우리가 배울 것임. * Hibernate ORM도 사실 내부적으로는 JDBC API를 사용하고 있음. * 아래 그림은 JPA의 위치이다. 2. 영속성 컨텍스트 (Persistence Context) * Persistence 라는 단어가 들어간 이유는, 영속성 컨텍스트를 사용하기 때문임. * ORM 답게, 테이블과 매핑되는..
-
[TIL]메소드 참조; method referenceCodeStates_Backend/TIL (Today I Learned) 2022. 7. 21. 01:14
⭐️ 개념 학습 순서 : 함수형 프로그래밍 ➡️ 람다,메소드 참조 ➡️ Stream 메소드 참조(method reference) 🧲 정의 람다 표현식이 단 하나의 메소드만을 호출하는 경우, 더 간단하게 표현하는 방법이다. 추가적으로 단순히 객체를 생성하고 리턴하는 생성자 역할의 람다식도 대체할 수 있다. 🧲 종류 1️⃣ 클래스이름 :: 메소드이름 2️⃣ 참조변수이름 :: 메소드이름 3️⃣ 생성자이름 :: new 🧲 1️⃣의 예시 (left, right) -> Math.max(left, right); IntBinaryOperator operator = Math :: max; //메서드 참조 🧲 2️⃣의 예시 //Calculator.java public class Calculator { public stat..
-
[TIL][모의기술면접#3]CodeStates_Backend/TIL (Today I Learned) 2022. 7. 20. 12:35
1. 스프링 MVC 프레임워크의 요청처리 과정을 설명해 주세요. 2. Spring JDBC, Spring Data JDBC, Spring Data JPA의 차이점을 설명해 주세요. 3. Spring Boot 기반 애플리케이션을 빌드하는 방법에 대해서 설명해 주세요. 1. 스프링 MVC 프레임워크란, 스프링의 여러 모듈 중 서블릿 API를 기반으로 웹 계층을 처리하는 모듈을 말한다. (서블릿은 클라이언트의 요청을 규약에 맞춰 처리하는 자바 코드 클래스파일. 톰캣 등이 서블릿 컨테이너 중 하나이다.) Model은 클라이언트의 요청을 처리한 작업의 결과 데이터를 의미한다. View는 Model 데이터를 이용해 웹브라우저 같은 클라이언트 애플리케이션의 화면에 보여지는 리소스를 제공하는 역할을 한다. Contro..
-
[TIL]삽입 정렬 Insertion SortCodeStates_Backend/TIL (Today I Learned) 2022. 7. 18. 11:42
1. 삽입 정렬(Insertion Sort)란? - 배열의 모든 요소를, 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 2. 알고리즘 흐름 - 첫 Key 값은 배열의 두번째 요소부터 시작한다. 3. 문제 풀이 문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr int 타입을 요소로 갖는 배열 arr[i]는 정수 arr.length는 1,000 이하 출력 int 타입을 요소로 갖는 배열을 리턴해야 합니다. 배열의 요소는 오름차순으로 정렬되어야 합니다. arr[i] [1, 3, 21] 4. 구현 코드 public class Daily36 { public int[] insertionSo..
-
[TIL] Spring Rest DocsCodeStates_Backend/TIL (Today I Learned) 2022. 7. 16. 23:21
1. Spring Rest Docs의 장점 테스트 케이스와 연동된다. 테스트 케이스가 PASS 되어야 API 문서가 생성된다. 따라서 애플리케이션의 실제 API 스펙과 생성되는 API 문서의 스펙이 불일치할 가능성을 없애준다. 2. 단점 PASS 되는 테스트 케이스를 작성해야만 한다는 것. 3. 예시 결과물 4. Spring Rest Docs의 API 문서 생성 흐름 $ 스니핏(Snippet)은 '조각, 단편'의 의미로 코드의 일부 조각, 문서의 일부 조각 등의 의미를 가진다. -> 테스트 케이스 하나당 하나의 스니핏이 생성된다. 스니핏들이 모여 하나의 API 문서가 된다. 5. 설정 1️⃣ build.gradle 설정 / 2️⃣ 스니핏을 사용하기 위한 템플릿 API 문서 생성 * 1️⃣ build.gr..
-
*[TIL] 데이터 엑세스 계층, JDBCCodeStates_Backend/TIL (Today I Learned) 2022. 7. 15. 09:02
1. 스프링에서 데이터 엑세스 * 스프링의 대표적인 데이터 엑세스 기술 : mybatis, (Spring) JDBC, Spring Data JDBC, Spring Data JPA * SQL 중심 기술 : mybatis, (Spring) JDBC 👉 SQL 쿼리문을 코드로 직접 작성. * 객체 중심 기술; ORM (Object-Relational Mapping) : Spring Data JDBC, Spring Data JPA 👉 데이터까지 객체로 접근함. 즉 개발자가 자바의 객체를 이용해 접근하면, 자동으로 SQL 쿼리문으로 변환되어 DB에 엑세스 함. * 현재 추세는 SQL 중심 기술에서 객체 중심 기술로 변화하고 있음. 2. JDBC * Java Data Base Connectivity ; 자바 코드 ..
-
[TIL] DTOCodeStates_Backend/TIL (Today I Learned) 2022. 7. 14. 22:34
1. 마틴 파울러 2. 엔터프라이즈 어플리케이션 아키텍쳐 3. DTO 사용 이유 * 요청 데이터 종류가 많아질수록 @RequestParam이 계속 많아진다. 따라서 요청 데이터를 하나의 객체로 전달받기 위해 DTO를 사용. 동시에 Controller 클래스 코드가 간결해진다. * 요청 데이터에 대한 유효성 검증을 쉽게 할 수 있다. 마찬가지로 유효성 검증 또한 필요할수록 계속 많아지는데 이 역시 따로 DTO 클래스로 관리하므로 Controller 클래스 코드가 간결해진다. 👉 Controller의 핸들러 메소드의 파라미터로 DTO를 받게 되는데, 이 파라미터 앞에 @Valid 어노태이션을 붙여줘야 유효성 검증이 동작한다. * '요청 데이터'에 관련한 동작을 모두 DTO 클래스에서 따로 관리하므로 기능 분..