✅ 자주 반복되는 코드가 있다면?자주 반복되는 코드, 즉 중복된 코드가 있다면 앞에서 배운 것들을 통해 이를 분리하는 방법을 생각해낼 수 있다. 먼저 메소드로 분리하는 간단한 방법을 시도해본다.필요에 따라 바꾸어 사용해야 한다면 인터페이스를 사이에 두고 전략패턴과 DI를 사용한다.바뀌는 부분이 한 어플리케이션 안에서 동시에 여러 종류가 만들어진다면 템플릿/콜백 패턴을 적용한다. ✅ try-catch-finally 응용하기간단한 템플릿/콜백 예제를 만들어서 응용해보자.파일을 하나 열어서 모든 라인의 숫자를 더한 합을 돌려주는 계산기 코드를 만들어 보자. 👉 갑자기 파일 입출력과 관련된 클래스가 나와서 당황할 수도 있지만, 코드를 자세히 살펴보면 전혀 어려운 코드가 아니다. numbers.txtUntitle..
✅ 템플릿 콜백 패턴이란 무엇인가?템플릿 콜백 패턴은 템플릿 메소드 패턴과 콜백 패턴을 결합한 디자인 패턴이다. 이 패턴은 알고리즘의 기본 구조를 템플릿 메소드로 정의하고, 일부 동작을 콜백 메소드로 위임하여 구체적인 구현을 서브클래스에서 처리한다. 이를 통해 알고리즘의 확장성과 재사용성을 높일 수 있다. 지금까지 템플릿/콜백 패턴을 적용한 것이다. 🔹템플릿 메소드 패턴이란?템플릿 메소드는 부모 클래스에서 알고리즘의 골격(구조)을 정의하고, 자식 클래스에서 부모 클래스를 상속 받아 구현할 때 알고리즘의 전체 구조를 변경하지 않고 자식 클래스들이 알고리즘의 특정 단계의 메소드를 오버라이드(재정의)할 수 있도록 하는 행동 디자인 패턴이다. 앞에 1장에서 UserDao의 getConnection() 메소드를 ..
✅ 전략 클래스의 추가 정보앞에서 JDBC 전략 패턴을 적용하기 위해, 클라이언트와 컨텍스트를 분리하고 deleteAll() 메서드를 사용할 때 DI 구조로 사용할 수 있게끔 만들었다. add() 에도 동일하게 적용해 보자. StatementStrategy를 구현한 AddStatement 클래스를 생성하고 add() 메서드의 내용을 옮기자. AddStatementpackage com.jhcode.spring.ch3.user.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import com.jhcode.spring.ch3.user.domain.User; public class A..
💡스프링(Spring)에서 템플릿(Template)은 일반적으로 데이터 액세스 작업을 수행하는 데 사용되는 디자인 패턴을 의미한다. 더 나아가 데이터 액세스 작업에 국한되지 않고, 다른 작업(예: 웹 서비스 호출, 캐싱 등)에도 확장하여 사용할 수 있다. 스프링에서 제공하는 여러 템플릿 중에서 가장 널리 사용되는 것은 JdbcTemplate이다. ✅ 예외처리 기능을 갖춘 DAOJDBC 코드에는 반드시 예외처리를 해야한다. 어떤 이유로든 예외가 발생했을 경우에 사용한 리소스를 반환해야한다. 서버는 제한된 개수의 DB 커넥션을 만들어 재사용이 가능한 풀(pool)로 관리한다. 만약 예외가 발생해서 리소스가 반환되지 않는다면 오류를 내며 중단될 것이다. 🔎—try-catch-finally try-catch-f..
✅ Git을 편하게! 명령어 별칭 설정Git Alias는 Git 명령어를 짧은 단축어로 정의하여 사용할 수 있게 해주는 기능입니다. Git Alias를 사용하면 번거로운 긴 명령어를 간단한 단어나 약어로 대체할 수 있어 작업을 편리하게 할 수 있습니다. ➡️ Git Alias를 설정하는 방법은 다음과 같습니다Git의 git config 명령을 사용하여 전역 또는 로컬 설정을 변경합니다. 전역 설정은 시스템 전체에서 사용되며, 로컬 설정은 해당 Git 저장소에서만 사용됩니다. 여기서 은 사용하고자 하는 별칭 이름을, 은 대체하고자 하는 Git 명령어를 입력합니다.전역 설정git config --global alias. 로컬 설정git config alias. 예시 -git status → git s예를 들..
✅ 브랜치 워크플로🔹Long-Running 브랜치Git은 꼼꼼하게 3-way 병합을 사용하기 때문에 장기간에 걸쳐 한 브랜치를 다른 브랜치와 여러 번 병합하는 것이 비교적 간편합니다. 이로 인해 개발 과정에서 필요에 따라 브랜치를 생성하고 계속해서 사용할 수 있습니다. 또한 정기적으로 브랜치를 다른 브랜치로 병합합니다. 이러한 접근 방식을 따르는 Git 개발자들 사이에서는 특정 용도에 맞는 브랜치를 유지하고, 안정 버전의 코드만 master 브랜치에 병합하여 보관하는 워크플로우가 많이 선호됩니다. 개발을 진행하고 안정화하는 브랜치는 develop이나 next와 같은 이름으로 추가로 생성하여 사용합니다. 이러한 브랜치는 언젠가 안정 상태에 도달할 것입니다. 하지만 항상 안정 상태를 유지해야 하는 것은 아닙..
✅ 리모트 브랜치리모트 Refs는 리모트 저장소에 있는 포인터인 레퍼런스입니다. 리모트 저장소에 있는 브랜치, 태그 등을 의미합니다. git ls-remote [remote] 명령으로 모든 리모트 Refs를 조회할 수 있습니다. git remote show [remote] 명령은 모든 리모트 브랜치와 그 정보를 보여줍니다. 리모트 Refs가 있지만 일반적으로는 리모트 트래킹 브랜치를 사용합니다. 리모트 트래킹 브랜치는 리모트 브랜치를 추적하는 레퍼런스로, 로컬에 있지만 임의로 움직일 수 없습니다. 리모트 서버에 연결할 때마다 리모트 브랜치의 업데이트 내용에 따라 자동으로 갱신됩니다. 리모트 트래킹 브랜치는 일종의 북마크라고 볼 수 있습니다. 리모트 저장소에 마지막으로 연결했을 때 해당 브랜치가 가리키고 ..
✅ Merge실제 개발과정에서 겪을 만한 예제를 하나 살펴보겠습니다. 브랜치와 Merge는 보통 이런 식으로 진행합니다. 웹 사이트를 제작하기 위한 master 브런치가 있다.새로운 이슈를 처리할 새 Branch를 하나 생성한다.새로 만든 Branch에서 작업을 진행한다. 이때 중요한 문제가 생겨서 그것을 해결하는 Hotfix를 먼저 만들고 해결하는 과정도 있습니다.새로운 이슈를 처리하기 이전의 운영(Production) 브랜치로 이동한다.Hotfix 브랜치를 새로 하나 생성한다.수정한 Hotfix 테스트를 마치고 운영 브랜치로 Merge 한다.다시 작업하던 브랜치로 옮겨가서 하던 일 진행한다. ✅ iss53 기존의 웹 사이트를 제작하기 위해 생성한 로컬 저장소의 master 브런치의 총 3번 커밋하였습..
✅ 브랜치란 무엇인가Git이 브랜치를 다루는 과정을 이해하려면 우선 Git이 데이터를 어떻게 저장하는지 알아야 합니다. Git은 데이터를 Change Set이나 변경사항(Diff)으로 기록하지 않고 일련의 스냅샷으로 기록한다는 것을 시작하기에서 보여줬습니다. Git은 데이터를 변경사항(Diff) 대신 일련의 스냅샷으로 저장합니다. 커밋할 때 Git은 현재 스테이징 영역(Staging Area)에 있는 데이터의 스냅샷에 대한 포인터, 저자, 커밋 메시지 등의 메타데이터, 이전 커밋에 대한 포인터 등을 포함하는 커밋 객체(Commit Object)를 저장합니다. 이전 커밋 포인터를 통해 현재 커밋이 어떤 기준으로 변경되었는지를 알 수 있습니다. 최초 커밋을 제외한 모든 커밋은 적어도 하나의 이전 커밋 포인터..
✅ Remote Repository리모트 저장소를 관리하는 방법에 대해 알아보겠습니다. 리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 의미합니다. 저장소는 여러 개가 있을 수 있으며, 일부는 읽기 및 쓰기가 가능한 반면 일부는 읽기 전용일 수도 있습니다. 함께 일하기 위해서는 리모트 저장소를 관리하며 데이터를 Push하고 Pull하는 것이 필요합니다. 리모트 저장소 관리에는 저장소의 추가, 삭제뿐만 아니라 브랜치 관리와 추적 여부 설정 등이 포함됩니다. 이제 리모트 저장소를 관리하는 방법에 대해 자세히 설명하겠습니다. 🔹GitHub Repository 생성하기New Repository 새로운 GitHub의 저장소를 생성합니다. Repository의 이름을 입력하고, README file을 추..