본문 바로가기

개발17

TDD (테스트 주도 개발) 테스트 주도 개발이란?TDD(Test Driven Development)란 프로그래밍 도중 내린 결정과 그 결정에 대한 피드백 사이의 간격을 인지하고, 또한 이 간격을 통제할 수 있게 해주는 기술을 말합니다.테스트 주도 개발에서는 아래 두 가지 단순한 규칙만을 따릅니다.오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.중복을 제거한다.테스트 주도 개발의 간략한 과정은 다음과 같이 요약할 수 있습니다.빠르게 테스트 하나 추가한다.모든 테스트를 실행하고 새로 추가한 것이 실패하는지 확인한다.코드를 조금 바꾼다.모든 테스트를 실행하고 전부 성공하는지 확인한다.리팩토링을 통해 중복을 제거한다.이 과정을 수행하면서 각각의 테스트가 기능의 작은 증가분을 어떻게 커버하는지새 테스트를 돌아가게 하기 위해 .. 2024. 9. 18.
동기/비동기 동기(Synchronous)Syn(together) + chrono(time) : 동시에 일어나는A --------------------> AB --------------------> B즉, A와 B가 시작 시각 또는 종료 시각이 일치하면 동기입니다.A, B 스레드가 동시에 작업을 시작하는 경우(CyclicBarrier)A, B가 동시에 작업이 끝나는 경우메소드 리턴시간와 결과를 전달받는 시간이 일치하는 경우Task1이 끝나는 시간과 Task2가 시작하는 시간이 같은 경우작업 요청을 했을 때 요청의 결괏값(return)을 직접 받는 것이때, 요청의 결괏값이 return 값과 동일하다.synchronized, BlockingQueue비동기(Asynchronous)A + syn(together) + chro.. 2024. 9. 18.
JPA 연관관계 방향(Direction) : 방향은 객체 관계에만 존재하며, 테이블 관계는 항상 양방향입니다.단방향 : 한쪽만 참조하는 것양방향 : 양쪽 모두 서로 참조하는 것다중성(Multiplicity)다대일( N:1 ) : @ManyToOne일대다( 1:N ) : @OneToMany일대일( 1:1 ) : @OneToOne다대다( N:N ) : @ManyToMany연관관계 주인(owner) : 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야 합니다.참조를 통한 연관관계는 언제나 단방향이며, 객체 간에 연관관계를 양방향으로 만들고 싶은 경우 반대쪽에도 필드를 추가하여 참조를 보관해야 합니다. 이러한 관계는 정확히 이야기하면 양방향 관계가 아닌 서로 다른 단방향 관계 2개입니다.단방향객체 연관관계 vs 테이블 .. 2024. 9. 18.
JPA 영속성 관리 영속성 관리Entity Manager FactoryEntity Manager Factory는 Entity Manager 인스턴스를 관리하는 주체입니다.Entity Manager Factory를 생성하는 비용은 아주 크므로 애플리케이션 실행 시 데이터베이스 당 딱 1개씩만 생성하고 공유해서 사용해야 하며, 여러 스레드가 동시에 접근해도 안전하므로 스레드 간 공유할 수 있습니다.Entity ManagerEntity Manager Factory에서 Entity Manager를 생성하며, 이때 생성하는 비용은 거의 들지 않습니다.대부분의 JPA 기능을 Entity Manager가 제공하며, Entity를 데이터베이스에 등록/수정/삭제/조회 등 엔티티와 관련된 모든 일을 처리합니다.Entity Manager는 말.. 2024. 9. 11.
GIT (2) Git Branch앞선 포스트에서도 나왔던 Git Branch는 무엇일까요?개발을 하다 보면 협업을하기 위해 특정 코드를 기준으로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행이 필요한 경우가 많습니다. 이렇게 독립적으로 개발할 수 있게 제공해 주는 기능이 바로 branch입니다.즉, branch는 안전하게 격리된 상태에서 무언가를 만들 수 있게 해주는 것이죠.branch 관련 명령어branch 조회하기$ git branch* main저장소를 새로 만들면 main branch(default)가 기본 branch입니다. 다른 branch를 별도로 만들지 않은 상태에서 branch를 조회해 보면, main branch만 나오는 것을 확인 할 수 있습니다.branch 생성하기$ git branc.. 2024. 9. 10.
GIT (1) 버전관리 시스템(Version Control System)이란?복원, 백업, 협업변경 사항(버전)을 관리해 주는 소프트웨어CVS, SVN, GIT버전관리를 한다는 것은 프로젝트 폴더(저장소)에 생성되는 파일들을 체계적으로 관리하겠다는 것입니다.그중에서 현재 제일 많이 사용하는 git에 대한 사용 방법에 대해 정리하고자 합니다.Git 명령어--help$ git {{명령어}} --help해당 명령어에 대한 설명을 자세히 볼 수 있습니다.예제$ git config --help$ git tag --helpconfig 기본 설정config 명령어를 통해 git의 기본 설정을 변경할 수 있습니다.$ git config각각의 버전은 누가 작성한 것인지에 대한 정보를 가지고 있어야 하는데 아래와 같이 username과.. 2024. 9. 9.