GitHub 오픈소스의 성지로 Git으로 관리되는 프로젝트의 원격 저장소 (https://github.com/) Personal access token 만들기 GitHub 가입 후 사용하기 위해선 추가적으로 토큰을 발급 받아 사용해야 한다. 우측 상단의 프로필 - Settings - Developer Settings - Personal access tokens - Generate new token repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token (Note 는 자유롭게) 생성된 토큰 안전한 곳에 보관해 둘 것 (한번 표시 후 이후 확인 불가) 토큰 PC에 저장 (MAC) finder - 키체인 접근 - github.com - 암호보기를 누른 후 발급 받은 토큰을 붙여 넣고 저장 ..
Branch Branch란 분기된 가지 즉, 여러 차원을 의미한다. 프로젝트에서 하나 이상의 모습으로 관리할 때 (배포용, 테스트용 등) 여러 작업들이 독립되어 진행될 때 (신기능, 코드 개선, 긴급 수정 등) 다음과 같은 작업들을 하나의 프로젝트 폴더에서 진행하여 메인 브랜치에서 통합하는 방식을 사용할 수 있다. Branch 생성 / 이동 / 삭제 git branch add-couch git 브랜치 생성 git branch 브랜치 목록 확인 git switch add-couch 브랜치 이동 (checkout 명령어가 Git 2.23 버전부터 switch, restore로 분리) git switch -c new-teams 브랜치를 생성과 동시에 이동 (-c 명령어 사용) git branch -d 브랜치명..
버전 관리 이전의 생성한 파일 중 하나를 타임캡슐에 담아보자. 기존에 관리하지 않는 파일들은 빨간색으로 추적하지 않는 파일이라고 명시되어 있고, git add tigers.yaml 명령어를 통해 스테이징된 것을 볼 수 있다. 모든 파일을 담고 싶은 경우 git add . 을 통해 모든 파일을 스테이징할 수 있다. 타임캡슐 묻기 모든 파일이 스테이징 된 채로 커밋을 해보자. 여기서 -m 의 의미는 커밋 메시지를 담는 것으로 git commit만 사용했을 때 vi 편집기가 열리면 해당 내용에서 메시지를 입력후 저장하는 과정을 거쳐야한다. 이 과정을 생략하고 사용할 수 있도록 지원하는 명령어이다. git log 명령어를 입력해보면 다음과 같이 커밋 기록을 확인해볼 수 있다. SourceTree에서도 다음과 같..
GIT Git 은 VCS(Version Controll System) 프로그램 중 하나로 버전 관리를 위한 툴이다. VCS를 이용하면 시간과 차원을 넘나들며 소프트웨어를 개발할 수 있다. Git 설치 (Mac) git --version 맥은 기본적으로 Git이 설치되어 있다. 다음 명령어를 통해 버전을 확인하자. 최신 버전의 깃은 https://git-scm.com/ 에서 확인할 수 있다. brew install git을 통해 깃을 최신 버전으로 변경할 수 있다. (Home brew가 설치되어있어야 한다.) SourceTree 설치 https://www.sourcetreeapp.com/ Git을 GUI로 다룰 수 있도록 해주는 툴이다. 빗버킷을 사용하지 않을 것이므로 계속을 눌러주어 설치한다. Git 설..
컨트롤러 테스트 Mocking 테스트를 위해 실제 객체를 사용하는 것처럼 테스트를 위해 만든 모형(가짜 객체)를 만들어서 사용하는 것을 Mocking이라고 한다. 모킹한 객체를 이용하면 의존성을 단절시킬 수 있어 테스트하기 좋다. Mocking은 @MockMvc를 주입 받아 사용하며, 같이 사용하는 어노테이션으로는 @WebMvcTest 와 @AutoConfigureMockMvc가 있다. MockMvc perform() 해당 메서드를 사용하면, 브라우저에서 서버에 URL을 요청(GET, POST 등)하듯 컨트롤러를 실행시킬 수 있다. 요청을 통해 MockMvcHttpServletRequestBuilder 객체를 리턴하면서 HTTP 요청 프로토콜에 관련 정보(파라미터, 헤더, 쿠키 등)을 설정할 수 있다. ..
목차 객체지향 쿼리 언어 소개 JPQL 기본 문법과 기능 페치 조인 객체지향 쿼리 언어 소개 JPA는 다양한 쿼리 방법을 지원한다. JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC 직접 사용 (Mybatis, SpringJdbcTemplate 등) JPQL 소개 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공해준다. SQL과 문법이 유사하지만 특정 데이터베이스에 의존적이지 않으며, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 등을 지원해주며, 엔티티 객체를 대상으로 쿼리를 사용한다. 가장 단순한 조회 방법 EntityManager.find() 객체 그래프 탐색 (a.getB().getC()) 검색 예시 String jpql ..
목차 기본 값 타입 임베디드 타입 (복합 값 타입) 값 타입 불변 객체 값 타입 비교 값 타입 컬렉션 예제 기본 값 타입 JPA 데이터 타입 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가 값 타입 분류 기본 값 타입 자바 기본 타입 (int, double) 래퍼 클래스 (Integer, Long) String 임베디드 타입 (복합 값 타입) 컬렉션 값 타입 기본 값 타입 생명주기가 엔티티에 의존한다. 회원을 삭제하면 나이, 필드도 함께 삭제와 같다. 기본 값 ..
목차 프록시 즉시 로딩과 지연 로딩 지연 로딩 활용 영속성 전이 : CASCADE 고아 객체 영속성 전이 + 고아 객체, 생명주기 예제 프록시 package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("..