전체 글 133

[스프링 입문] 섹션 6.1 스프링 DB 접근 기술 (H2 데이터베이스 설치)

6.1.0 스프링 DB 접근 기술 섹션 5에서는, 회원가입 정보를 메모리에 저장하였다. 하지만 메모리 저장시, 서버를 내렸다가 다시 켜면 데이터가 모두 지워진다는 문제점이 있다. 따라서, 실무에서는 데이터 베이스에 정보를 저장하고 관리한다. 섹션 6에서는 이러한 스프링 DB 접근 기술을 공부하고자 한다. 섹션6 DB 접근 기술 공부 목차 1) H2 데이터베이스 : 가볍고 심플한 데이터베이스 2) 순수 JDBC : sql 을 사용하여 db 와 서버를 연결 3) 스프링 Jdbc Template : 스프링이 중복을 제거하여, 템플릿 제공 어플리케이션에서 db 를 보다 쉽게 넘길 수 있음 4) JPA : sql 조차 개발자가 직접 작성하지 않고, 등록/수정/삭제를 모두 관리해줌 5) 스프링 데이터 JPA : j..

[이코테 python] Ch.4 구현 (+ 상하좌우 문제)

4.1 구현 알고리즘 머릿속에 있는 알고리즘을 정확하고 빠르게 코드로 작성해야 하는 알고리즘 구현은 머릿속으로 구상한 알고리즘을 소스코드로 작성하는 과정을 말한다. 코딩 테스트에서 구현이란 조금 더 좁은 의미로 사용되는데, 풀이는 떠올리기는 쉽지만, 소스코드를 작성하기 어려운 문제를 말한다. 알고리즘 문제를 해결할 때, 정확한 풀이 방법을 떠올리더라도, 소스코드로 구현하지 못하는 경우가 있다. 따라서 구현문제에서는, 프로그래밍 문법을 정확히 알고, 실수 없이 답안 코드를 작성하는 능력이 요구된다. 4.2 구현 알고리즘 문제유형 구현 문제는 알고리즘을 설계하기는 쉽지만, 소스코드로 옮기기 어려운 문제를 말한다. 이러한 문제들은 사소한 조건이 설정되어 있는 경우가 많다. 구현 문제는 다음과 같은 유형으로 나..

[이코테 python] Ch.3 그리디 (+ 거스름돈 문제)

3.1 그리디(Greedy) 알고리즘 현재 상황에서 지금 당장 좋은 것만 고르는 방법 그리디 알고리즘은 탐욕법 이라고도 불리며, 현재 상황에서 가장 최선의 선택만을 하는 알고리즘이다. 즉, 현재의 선택이 나중에 미칠 영향은 고려되지 않는다. 3.2 그리디 알고리즘 문제유형 그리디 알고리즘 문제유형은 다른 유형에 비해, 사전에 외우고 있지 않아도 풀 수 있을 가능성이 매우 높은 문제 유형이다. 하지만 문제를 풀기 위한 아이디어와 창의력을 요구한다. 따라서 많은 문제 유형을 접하고 풀어보는 훈련이 필요하다. 먼저, 코딩테스트에는 문제 유형을 바로 파악하기 어렵다면, 그리디 문제를 의심해본다. 하지만 정당한 탐욕적 해결법이 없다면, 다이나믹 프로그래밍 / 그래프 알고리즘을 고민해보자. 또한, 그리디 문제에서는..

[스프링 입문] 섹션 5.3 웹 MVC 개발 (회원 웹 기능 - 조회)

5.3.1 회원 웹 기능 - 등록 화면 작성 앞선 MemberController 에 다음과 같은 코드를 추가로 작성한다. @GetMapping("/members") public String list(Model model){ List members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; } @GetMapping("/members") - http://localhost:8080/members 로 url에 직접 작성하면 get 방식으로 mapping List members = memberService.findMembers() - findMembers() 를 사용하여, 멤버를..

[스프링 입문] 섹션 5.2 웹 MVC 개발 (회원 웹 기능 - 등록)

5.2.1 회원 웹 기능 - 등록 화면 작성 앞선 MemberController 에 다음과 같은 코드를 추가로 작성한다. @GetMapping("/members/new") public String createForm(){ return "members/createMemberForm"; } @GetMapping("/members/new") - http://localhost:8080/members/new 로 url에 직접 작성하면 get 방식으로 mapping return "members/createMemberForm" - createMemberForm.html 로 이동 나중에 작성할 createMemberForm.html 에서 post 방식으로 값을 넘겨받기 위해, PostMapping 할 수 있는 메소드를..

[스프링 입문] 섹션 5.1 웹 MVC 개발 (회원 웹 기능 - 홈 화면 추가)

5.1.1 회원 웹 기능 - 홈 화면 추가 앞서 섹션 3 에서 백엔드 개발한 회원 관리 예제를, 웹 MVC 로 개발해보고자 한다. 먼저, 홈 화면을 만든다. 홈 화면은 http://localhost:8080/ 에 접속했을 때 호출되는 첫 화면이다. 홈 화면에는 회원을 등록하고, 조회할 수 있는 버튼이 있다. src > main > java > hello.hellospring > controller 패키지에 HomeController 클래스를 만들고, 다음과 같이 코드를 작성한다. package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.ann..

[스프링 입문] 섹션 4.2 스프링 빈과 의존관계 (자바 코드로 직접 스프링 빈 등록하기)

4.2.1 자바 코드로 직접 스프링 빈 등록하기 스프링 빈을 등록하는 또 다른 방법으로, 자바 코드로 직접 등록하는 방법을 알아보고자 한다. 과거에는 xml 문서로 설정하였지만, 최근에는 주로 자바 코드를 이용하여 설정한다. 자바 코드로 직접 스프링 빈을 등록하는 방법은, 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 할 때 사용된다. 앞선 회원 관리 예제의 가상 시나리오에서, MemoryMemberRepository를 향후 다른 Repository로 변경할 예정이므로, 컴포넌트 스캔 방식 대신 자바 코드로 스프링 빈을 설정하고자 한다. src > main > java > hello.hellospring > service 패키지에 스프링 빈 등록을 위한 SpringConfig 클래스를 작성한다..

[스프링 입문] 섹션 4.1 스프링 빈과 의존관계 (컴포넌트 스캔과 자동 의존관계 설정)

4.1.0 스프링 빈을 등록하는 방법 1) 컴포넌트 스캔과 자동 의존 관계 설정 : 정형화된 Controller / Service / Repository 구현시 사용 2) java 코드로 직접 스프링 빈 등록 : 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 할 때 사용 4.1.1 스프링 빈 등록과 의존관계 설정 Spring 에서는 Controller 가 외부 요청을 하고, Service 에서 비즈니스 로직을 작성하고, Repository 에서 저장을 하는, 정형화된 패턴이 있음을 알 수 있다. 따라서, 앞서 섹션 3에서 만든 Service 와 Repository를 화면에 연결하기 위해서는, Member Controller 를 작성해야 한다. MemberController 가 MemberSer..

[스프링 입문] 섹션 3.5 회원 관리 예제 (회원 서비스 테스트)

3.5.1 회원 서비스 테스트 코드 작성 앞서 섹션 3.4 에서 작성한 ' MemberService.java ' 가 정상적으로 작동하는지 확인하기 위한 test code 를 작성해보자. 먼저, test > java > hello.hellospring 에 service 패키지를 만든다. service 패키지에 MemberServiceTest 클래스를 만들고 아래와 같이 코드를 작성한다. 코드를 작성하기 전에, given / when / then 패턴을 사용하면, Test Code 를 보다 쉽게 이해할 수 있다. 아래의 코드들도 다음과 같은 패턴을 사용하여 작성하였다. Given / When / Then 패턴으로 테스트 코드 작성 - Given : 어떠한 상황이 주어졌을 때, - When : 어떠한 코드를 ..

[스프링 입문] 섹션 3.4 회원 관리 예제 (회원 서비스 개발)

3.4.1 회원 서비스 클래스 회원 서비스는 repository 와 domain 을 활용하여, 실제 비즈니스 로직을 만든다. 회원 서비스 클래스를 만들어보자. src > main > java 에 service 패키지를 만든다. service 패키지에 MemberService 클래스를 만든다. 0) 회원 Repository 생성 먼저, 회원 서비스를 만들기 위한 ' 회원 repository ' 가 필요하다. private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository){ this.memberRepository = memberRepository; } 1) 회원가입 ( 중복 회원 검증)..