Skip to content

[FEAT] 2차 과제 구현 #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open

Conversation

bricksky
Copy link

<이번 주 배운점>

1. 의존성 교체 및 DAO → Repository 전환

이번 주차에서는 spring-boot-starter-jdbc를 spring-boot-starter-data-jpa로 교체하며 JPA로 전환했습니다.

  • 배운 점:
    • spring-boot-starter-data-jpa에는 엔티티 매핑, 리포지토리, 트랜잭션 관리 등 JPA의 핵심 기능이 모두 포함되어 있어, 기존의 순수 JDBC 템플릿 기반 접근 방식에서 벗어나 객체 중심의 데이터 액세스가 가능함을 알 수 있었습니다.
    • 반면 spring-boot-starter-jdbc만 사용할 경우에는 JPA 기능을 전혀 활용할 수 없음을 직접 확인했습니다.
  • DAO → Repository 전환:
    • 기존에 수작업으로 작성하던 DAO 클래스를 JpaRepository<T, ID>와 CrudRepository<T, ID>를 상속하는 간단한 인터페이스로 대체했습니다.
    • 기본 메서드(save(), findById(), delete())만으로도 충분히 대부분의 작업이 처리되며, 추가로 필요한 복잡한 조회는 메서드명(findBy, countBy, deleteBy 등)만으로 자동 생성되는 쿼리를 활용할 수 있었습니다. 다만 없던 메서드에 대해 만드는 과정에서 어떤 메서드를 만들어야 할지에 대해 고민하며 기존 DAO코드를 참조하여 메서드를 만들 수 있었습니다.

2. Git Remote 개념 학습

2주차 과제를 진행하며 Git 사용 중 발생한 원격 저장소(remote) 충돌 문제를 해결하는 과정에서, Git의 remote 개념을 깊이 이해하게 되었습니다.
중간에 미완성된 과제를 올리고자 git push를 하는 과정에서 문제를 발견하고 git 문제를 해결하는데 더 많은 시간을 할애한것 같습니다.

  • 상황을 요약하자면,
    1. 기존 레포지토리에서 apr15 브랜치를 clone받아, 페어프로그래밍 코드를 바탕으로 작업을 시작하고자 했습니다. 로컬에서 brick 브랜치를 생성해 작업을 시작했습니다.
    2. 작업 완료 후 원본 레포지토리의 brick 브랜치에 푸시하려고 했으나,클론 받아와서 브랜치를 생성하고 작업한 brick 브랜치의 upstream이 apr15로 설정되어 있어 푸시가 불가능했습니다.
    3. 권한이 없어 강제 푸시도 불가해, 처음 포크받아온 brick 레포지토리에 작업 디렉터리를 복사한 뒤 강제 푸시(git push -f)하여 겨우 올릴 수 있었습니다. 여전히 찝찝한 기분이지만, 과제 마감으로 인해 강제 푸시를 진행했습니다.
  • 배운 점:
    • 로컬 브랜치가 참조하는 원격 브랜치(upstream)는 .git/config에 remote와 merge 필드로 명시되며, 이 설정에 따라 git push와 git pull의 기본 대상이 결정됩니다.
    • upstream이 잘못 연결되어 있으면 아무리 로컬에서 커밋이 정상적으로 이루어져도, 원하는 원격 브랜치에 반영되지 않는다는 사실을 알게되었습니다. 앞으로는 누군가의 코드를 받아야 하는 상황에서 clone은 잘 사용하지 않으리라 생각했습니다. 관련해서 방법을 찾아보니, "fetch"키워드를 통해 원격브랜치의 정보를 가져오고 그걸 checkout 한 후 origin 으로 push 하는 방법을 사용하라고 하는데, 그렇게 하는게 맞는 방법인지 궁금합니다.

Copy link
Collaborator

@DWL21 DWL21 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 레오입니다. 일단 PR을 yourssu-Lab/brick branch로 설정하여 다시 만들어주세요.
git 관련 문제에 대해 답변을 드리면 yourssu-Lab/apr15 브랜치를 fetch해서 가져온 후 yourssu/brick 브랜치를 checkout, merge하여 작업하면 됩니다. 해결 방법을 알려드리니 무슨 기능인지 학습하셔서 좋은 시행착오가 되었으면 좋겠습니다.

upstream 설정
git remote add yourssu https://github.com/yourssu-Lab/java-sprout
git remote add bricksky https://github.com/bricksky/brick-java-sprout

fetch
git fetch yourssu
git fetch bricksky

checkout & merge
git checkout bricksky/brick
git merge yourssu/apr15 => conflict resolved => commit -am "merge commit"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants