
원래 DB와의 커넥션을 만들 때는 DB 드라이버가 TCP/IP 연결을 만들고, DB 인증 및 권한을 확인해야 했다. 또 세션을 생성하고, 커넥션 객체를 다시 애플리케이션 로직에 반환하는 등 매우 복잡하고 번거로운 과정을 거쳐야 했다.그래서 미리 커넥션을 여러 개 만들어

보통 애플리케이션을 개발할 때 데이터를 데이터베이스에 저장한다. 클라이언트가 데이터베이스에 데이터를 저장하거나 꺼내 오기 위해서는 아래와 같은 과정을 거친다.여기서 애플리케이션 서버와 데이터베이스 사이의 상호작용에 대해 집중할 필요가 있다. 먼저 애플리케이션은 TCP/

객체지향 설계의 기반을 이루는 2가지 원칙에 대해 알아보자. 그 전에 먼저 설계(Design) 란 정확히 무엇이고, 설계의 목적이 무엇인지에 대해 짚고 넘어가야 한다.설계는 코드를 배치하는 방식이다. 영화 예매 시스템을 구현했을 때, 처음에는 데이터를 구현한 코드와 프

일반적으로 프로그램은 데이터와 이 데이터를 사용하는 알고리즘 또는 프로세스의 조합으로 정의한다. 절차적인 방식은 프로그램을 구성하는 데이터와 프로세스를 개별적인 모듈로 분류해서 구현하는 방식을 말하는데, 보통 데이터를 먼저 정의하고 데이터를 사용하는 프로세스를 나중에

도메인이란, 사용자가 프로그램을 사용하는 주제 영역, 또는 사용자가 프로그램을 사용해서 해결하고 싶은 문제들의 집합을 말한다. 좀 더 풀어서 설명하자면, 도메인을 소프트웨어로 구현해야 하는 요구 사항의 범위로 생각하면 된다. 소프트웨어를 구현할 때 모든 요구 사항을 코

예정했던 GetStudentActionTest, GetStudentsActionTest에 이어 GetSessionResultsActionTest까지 총 3개의 테스트 코드 리팩토링을 마무리했다. 처음에는 워낙 오픈 소스에 대한 이해도 낮고 참고 자료도 부족해 오픈 소스

오픈 미션 제출 기간이 1주 더 남았고, GetStudentActionTest와 GetStudentsActionTest 테스트 코드를 리팩토링 하다 보니 테스트 코드를 작성하는데 어느 정도 익숙해졌고, 좀 더 어려운 테스트 코드에 또 한 번의 도전을 해보고 싶은 마음이

GetStudentsActionTest.java 테스트의 경우, 리팩토링해야 할 테스트 메서드가 18개나 되었는데, 접근 주체가 교육자, 학생, 관리자, 미등록, 로그인되지 않은 사용자로 총 6가지 경로가 있었고, 어떤 파라미터를 가지고 학생 목록 및 팀원에 접근할 수

이제부터 내가 맡은 GetStudentActionTest.java와 GetStudentsActionTest.java 중에 GetStudentActionTest.java 코드를 먼저 살펴보도록 하자.코스에 소속되어 있는 학생의 정보에 대해 접근을 검증하는 테스트다. 아래

이번에 작업하게 될 TEAMMATES 오픈 소스는 테스트 프레임워크로 Mockito를 사용하고 있었다. 실제로 테스트 코드를 작성하기 전 Mockito를 이용한 테스트 방식이 어떤 식으로 흘러가는지, 어떻게 코드를 작성해야 하는지 먼저 알아보고 작성하기로 결심했다.Mo

🤔 3주간 무엇을 배웠나 우테코 프리코스를 진행하면서, 문제를 잘 푸는 방법이 아닌 함께 일하기 좋은 개발자가 되는 방법을 배웠다고 생각한다. 시작 전엔 난도가 높은 문제를 얼마나 빨리, 얼마나 정교하게 풀 수 있느냐에만 시선이 갔다. 그런데 실제로는 기능 구현 그

3주차는 간단한 로또 발매기 프로그램을 구현하는 과제가 주어졌다. 먼저 주어진 기능 요구 사항을 나름대로 요약해봤다.로또를 발행한다.구매 금액만큼의 로또를 구매한다. (로또의 단위는 1,000원)1 ~ 45 사이의 숫자들 중 중복되지 않는 숫자 6개를 생성한다.당첨 번

2주차에는 자동차 경주 문제가 주어졌다. 이번에도 전체 프로그램 구조를 파악하고 주어진 기능 요구사항을 다시 정리하면서 과제를 시작했다.자동차 이름을 입력받는다.이름은 쉼표(,)로 구분하며, 이름의 길이는 5자 이하로 제한한다.몇번을 시도할건지 입력한다.자동차(들)는

먼저 숫자들이 들어 있는 리스트에서 짝수만 골라내는 행동과 홀수만 골라내는 행동을 구현해보자.람다를 사용하지 않았을 때의 구현 방식이다. 그냥 리스트를 순회해서 조건에 맞는 값을 넣고 결과를 반환하도록 한 것이다. 이제 filterEvenNumber()와 filterO

1주차 과제로 문자열 덧셈 계산기가 주어졌다. 과제는 크게 과제 진행 요구 사항, 기능 요구 사항, 프로그래밍 요구 사항으로 구성되어 있었다. 추가로, 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다는 조건이 있어서 고민할 거리를 생각하면서 과제를 진행

연극이나 음악회 등을 공연할 수 있는 소극장을 운영하고 있다고 생각해보자. 홍보를 위해 작은 이벤트를 준비하려고 하는데, 바로 추첨을 통해서 관람객들에게 공연을 무료로 관람할 수 있는 초대장을 뿌리는 것이다. 이때, 당연히 생각해야 하는 부분은 공연 시 이벤트에 당첨된

요청 매핑이란 요청이 왔을 때 "어떤 컨트롤러가 호출되어야 하는거지?" 에 대한 매핑을 말한다. 단순한 URL 뿐만 아니라 여러 가지를 가지고 조합해서 매핑을 한다. 먼저 간단하게 컨트롤러를 하나 만들어보자.@RestController 애노테이션은 그냥 뷰를 찾고 렌더

이제 스프링 MVC의 구조에 대해 알아보자.보면 알겠지만 이름만 다르지, 전체 구조가 완전히 동일하다. 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다. 스프링 MVC의 프론트 컨트롤러가 바로 이 DispatcherServlet인 것이다. 기존에 만들었던 MVC

프론트 컨트롤러를 도입하기 전에는 먼저 앞에 공통 로직을 깔고, 그 다음에 별도의 컨트롤러 로직을 추가해야 했다. 쉽게 말하면, 이 상황은 입구가 없는 거다. 그냥 다 들어올 수 있기 때문에 공통 로직을 일일이 다 만들어줘야 하는 것이다. 이제 프론트 컨트롤러를 도입한

📝 회원 관리 웹 애플리케이션 요구 사항 이제 간단한 회원 관리 웹 애플리케이션을 만들어보자. 먼저 회원을 저장하고 조회하는 핵심 비즈니스 로직을 서블릿으로 만들어보고, 서블릿의 불편한 점을 살펴볼 것이다. 그리고 그 불편함을 개선하기 위해 JSP를 사용해보고, 또