본문 바로가기

전체 글292

2022. 11. 02. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring MVC - JPA 기반 데이터 액세스 계층 JPA 엔티티 간의 연관 관계 매핑 및 실습 ▶ 이미 알고 있는 내용은 무엇인가? 어제까지는 기본적인 엔티티 매핑에 대해서 학습했고, 오늘은 연관 관계에 대해 매핑하는 걸 학습한다. 쉽지 않은 내용이라고 지작하고 있고, 집중해서 학습해야겠다 화이팅 ! § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? 일대다, 다대일, 일대일, 다대다, 양방향, 단방향 관계의 매핑을 어떻게 하는지 새롭게 알게 되었다. ▶ 다른 사람에게 설명할 수 있는가? 두 테이블의 연관 관계는 어떻고, 외래키는 어떤 것이여야 하는지 설명할 수 있다. ▶ 아직 이해되지 않은 내용은 무엇인가? 아직, 단방향 양방향의 내용이 혼.. 2022. 11. 2.
JPA(Java Persistence API)와 엔티티 매핑(Entity Mapping) JPA는 Java 진영에서 사용하는 ORM(Object-Relational Mapping) 기술의 표준 사양(또는 명세, Specification) JPA라는 인터페이스로 정의되어 있는 구현체는 따로 있고, 우리는 그 구현체를 학습하는 것이다. JPA는 Java Persistence API의 약자이지만, 현재는 Jakarta Persistence라고도 불린다. Hibernate ORM JPA에서 정의해둔 인터페이스를 구현한 구현체로써, JPA에서 지원하는 기능 이외에 Hibernate 자체적으로 사용할 수 있는 API 역시 지원하고 있다. 위 그림과 같이, JPA는 데이터 액세스 계층의 상단에 위치한다. JPA의 Persistence는 영속성, 지속성을 뜻한다. 즉, 무언가를 금방 사라지지 않고 오래 지.. 2022. 11. 1.
2022. 11. 01. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring MVC - JPA 기반 데이터 액세스 계층 JPA(Java Persistence API) 엔티티 매핑 ▶ 이미 알고 있는 내용은 무엇인가? 드디어 익히 들었던 JPA를 학습한다. 얼마나 어려울지 예상이 안되긴 하지만, 집중해서 무조건 잘 학습해야 하는 건 분명하다. 오후 세션과 페어 활동이 없기 때문에, 충분히 집중해보자! § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? JPA는 Java에서 사용하는 ORM 기술의 표준 사양이다. Hibernate ORM은 JPA 인터페이스의 구현체로, JPA의 기능 이외에 자체적으로 사용할 수 있는 API도 지원한다. JPA에서는 테이블과 매핑되는 엔티티 객체 정보를 영속성 컨텍스트에 보관해서 애.. 2022. 11. 1.
이진 탐색(Binary Search) 이진 탐색은 순차 탐색보다 대부분의 경우에서 더 빠른 효율을 낼 수 있다. (찾으려는 값이 작으면, 순차 탐색이 더 적게 걸릴 수도 있다.) 순차 탐색은 보통 반복문을 이용하기 때문에, 시간복잡도 Big-O 기준 O(N)이다. 이진 탐색은 재귀를 통해 범위를 점점 좁혀나가는 방법으로, O(logN)이다. 다음 그림을 통해 이진 탐색에 대해 쉽게 파악할 수 있다. 다음은 이진 탐색을 구현하는 문제를 풀이한 코드들이다. 배열에서 num 값의 인덱스를 추출하는 문제이다. 1. while문 이용 import java.util.Arrays; import java.util.Scanner; class Main { private int solution(int target, int[] arr) { int answer =.. 2022. 11. 1.
2022. 10. 31. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring MVC - JDBC 기반 데이터 액세스 계층 Spring Data JDBC를 이용한 데이터 액세스 실습 ▶ 이미 알고 있는 내용은 무엇인가? 지난 주에 관련 이론 내용들을 학습했고, 오늘 그 바탕으로 실습을 한다. 배운 내용들이 워낙 많았기 때문에, 실습해보면서 차근차근 다시 보는 게 좋을 듯싶다. § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? 페이지네이션 기능 구현에 대해 새롭게 알게 되었다. ▶ 다른 사람에게 설명할 수 있는가? 페이지네이션 기능 구현에 있어서, 어떠한 클래스가 필요하고 Spring에서 지원하는 페이지네이션 api는 어떻게 이용하면 되는지 설명할 수 있다. ▶ 아직 이해되지 않은 내용은 무엇인가? 아직 하나의 .. 2022. 10. 31.
동적계획법 - 2 x n 타일 문제 동적 계획법 풀이는 제일 먼저 점화식을 찾아라. ex) dp[n] = dp[n-1] + dp[n-2] 점화식을 찾는 방법은 수기로 직접 제일 작은 입력값을 넣어보면서, 특정 패턴 및 이전 값과 기존 값의 상관 관계를 파악하면 쉽게 찾을 수 있다. 2 x n 타일 문제 풀이 순서 1. 빈 리스트 만들기 (입력값에 따른) int[] dp = new int[num + 1]; 2. 초기값을 설정 dp[1] = 1; dp[2] = 2; 3. 점화식 기반으로 계산값 적용하기 for (int i = 3; i 동적계획법을 구현하는 기법에는 Top-down, Bottom-up 기법이 있다. 값을 캐시(Cache)에 메모(저장) 해놓고, 다시 그 값을 계산할 필요가 없이 풀이하는 것을 메모이제이션(Memoization)이.. 2022. 10. 31.
Spring MVC - API 계층 Controller 클래스 클라이언트 요청을 처리할 서버 애플리케이션의 기능들을 구현한 클래스 @RestController Spring MVC에서는 특정 클래스에 @RestController를 추가하면 해당 클래스가 REST API의 리소스를 처리하기 위한 API 엔드포인트로 동작함을 정의 @RestController가 추가된 클래스는 애플리케이션 로딩 시, Spring Bean으로 등록 @RequestMapping 클라이언트의 요청과 클라이언트 요청을 처리하는 핸들러 메서드를 매핑해주는 역할 클래스 레벨에 추가하여, 클래스 전체에 사용되는 공통 URL(Base URL)을 설정 가능 produces : 응답 데이터를 어떤 미디어 타입으로 클라이언트에게 전송할지 설정 (Attribute) @GetMappi.. 2022. 10. 30.
SSR과 CSR SSR(Server Side Rendering)과 CSR(Client Side Rendering)의 가장 큰 차이는 화면을 서버단에서 생성해서 클라이언트에 전달하는지와 JSON과 같은 데이터 형태를 클라이언트에 전달하는지이다. 각각의 특징들에 대해 간단히 알아보자. HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달 주로 정적인 화면에 사용 관련 기술 : JSP, Thymeleaf → 백엔드 개발자 HTML 결과를 JavaScript를 사용해 웹 브라우저에서 동적으로 생성해서 사용 주로 동적인 화면에 사용 웹 환경을 마치 앱처럼 필요한 부분부분 변경할 수 있음 ex) Google Maps, Gmail, Google Calender 관련 기술 : React, Vue.js → 웹 프론트엔드 개발자 R.. 2022. 10. 28.
2022. 10. 28. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring MVC - JDBC 기반 데이터 액세스 계층 Spring Data JDBC 기반의 도메인 엔티티 및 테이블 설계 1. 도메인 엔티티 클래스 정의 2. 서비스, 레포지토리 구현 ▶ 이미 알고 있는 내용은 무엇인가? 어제 Spring Data JDBC에 관해서 간단하게 배웠고, 오늘은 코드를 쳐보면서 이해하는 시간을 가질 것 같다. 제대로 이해하도록 하자! § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? DDD(Domain Driven Design)는 도메인 위주의 설계 기법이다. 도메인은 비즈니스적인 어떠한 업무 영역을 말한다. 애플리케이션을 구현하기 위해 필요한 업무들을 자세히 알면 알수록 퀄리티가 높은 어플리케이션을 만들 가능성이.. 2022. 10. 28.