본문 바로가기

전체보기

(113)
판교 벚꽃~ 점심 시간에 잠깐 나가서 찍은 사진들
RestClientTest를 알아보자~ RestClientTest 어노테이션은 외부 API를 사용할 때 대상 API를 MOCKING 할 수 있는 유용한 테스트이다. 요청을 받는 쪽이 아닌 요청을 하는 쪽 입장에서의 테스트이다. @RestClientTest를 사용하면 MockRestServiceServer라는 임시 서버를 Bean으로 생성해준다. @SpringBootTest와 달리 지정한 최소한의 Context만 사용해서 테스트를 진행한다. 아래는 기존 Service 코드이다. @Service public class RestClientTestService { private final RestTemplate restTemplate; private final String openApiUrl = "https://httpbin.org/get"; pub..
Controller Test를 해보자~! 1. Controller Test(Web Layer) 1.1 컨텍스트 로드테스트 컨텍스트가 정상적으로 올라오는지 확인하기 위해 추가 @SpringBootTest class TestingWebApplicationTest { @Autowired private HomeController controller; @Test public void contextLoads() { assertThat(controller).isNotNull(); } } 1.2. Controller Test 1.2.1. HttpRequest Test 프로덕션과 마찬가지로 http 요청을 통해 응답을 확인할 수 있음 실제 서버를 구동시키는 것과 유사하게 테스트 동작 @SpringBootTest(webEnvironment = WebEnviron..
ThreadLocal에 대해서 알아보자 - 1 자바 ThreadLocal 클래스를 사용하면 동일한 Thread에서만 접근할 수 있는 변수를 만들 수 있다. 따라서 두 Thread가 동일한 코드를 실행하고 ThreadLocal 변수에 접근을 해도 서로의 ThreadLocal 변수를 볼 수 없다. ThreadLocal 생성 자바 객체를 만드는 것과 같이 new 연산자를 통해서 ThreadLocal을 생성 private ThreadLocal threadLocal = new ThreadLocal(); 해당 작업은 Thread 당 한 버만 수행하면 된다. 각 Thread에는 자체 설정된 ThreadLocal 값만 표시 ThreadLocal 값 사용 Thread 로컬에 저장된 값은 get() 메서드를 통해 사용할 수 있다. String threadLocalVa..
JPA 공부 - 6 2021/02/07 - [IT/데이터베이스] - JPA 공부 - 5 6. 다양한 연관관계 매핑 엔티티의 연관관계를 매핑할 때는 다음 3가지를 고려해야 한다. 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일 (@ManyToOne) 일대다 (@OneToMany) 일대일 (@OneToOne) 다대다 (@ManyToMany) 다중성을 판단하기 어려울 때는 반대방향을 생각해 보면 된다. 단방향, 양방향 객체는 참조용 필드를 가지고 있는 객체만 연관된 객체를 조회할 수 있다. 객체 관계에서 한쪽만 참조하는 것을 단방향 관계라고 하고, 양쪽이 서로 참조하는 것을 양방향 관계라고 한다. 연관관계의 주인 테이블과는 다르게 엔티티를 양방향으로 매핑하면 서로를 A -> B, B -> A 서로를 참조한다. JPA는 두 ..
JPA 공부 - 3 2021/01/21 - [IT/데이터베이스] - JPA 공부 - 2 3. 영속성 관리 JPA가 제공하는 기능은 크게 두 가지가 있음 엔티티와 테이블을 매핑하는 설계 부분 매핑한 엔티티를 실제로 사용하는 부분 엔티티 매니저는 엔티티를 저장 / 수정 / 삭제 / 조회하는 등 엔티티와 관련된 일을 한다. 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스로 생각하면 된다. 3.1 엔티티 매니저 팩토리와 엔티티 매니저 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory 를 하나만 생성하고, 엔티티 매니저 팩토리에서 엔티티 매니저를 생성하여 사용한다. 엔티티 매니저 팩토리를 생성하는 비용은 상당히 크고 팩토리에서 엔티티 매니저를 생성하는 비용은 적다. 엔티티 매니저 팩토..
intellij Unexpected error (103) returned by AddToSystemClassLoaderSearch 문제 윈도우 환경 Intellij로 개발을 하다 보면 디버깅 시에 아래와 같은 에러를 마주할 수 있다. 경로명에 한글이 들어가서 이런 이슈가 들어간다고 추측(?) 하고 있다. 해결방법은 (2020.3.2 커뮤니티 버전 기준) 1. File -> Settings... 2. Build, Execution, Deployment -> Debugger -> Async Stack Traces 에서 Instrumenting agent 체크를 풀어주면 된다. 깔----끔
JPA 공부 - 5 2021/01/29 - [IT/데이터베이스] - JPA 공부 - 4 5. 연관관계 매핑 기초 객체는 참조(주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 객체의 참조와 테이블의 외래 키를 매핑해보자 방향 예를 들어 회원과 팀이 있을 때 둘 중 한쪽만 참조하는 것을 단방향 관계라고 한다. 반대로 양쪽 모두 서로 참조하는 것을 양방향 관계라 한다. 방향은 객체관계에서만 존재하고 테이블은 항상 양방향이다. 다중성 [다대일(N:1)], [일대다(1:N)], [일대일(1:1)], [다대다(N:M)] 다중성이 있다. 회원과 팀 관계에서 여러 회원은 한 팀에 속하므로 회원과 팀은 다대일 관계다. 반대로 한 팀에 여러 회원이 소속될 수 있으므로 팀과 회원은 일대다 관계다. 연관관계의 주인 객..
JPA 공부 - 4 2021/02/25 - [IT/데이터베이스] - JPA 공부 - 3 4. 엔티티 매핑 JPA를 사용하는 데 가장 주우요한 일은 엔티티와 테이블을 정확히 매핑하는 것이다. JPA는 다양한 매핑 어노테이션을 지원하는데 크게 4가지로 분류할 수 있다. 객체와 테이블 매핑 기본 키 매핑 필드와 컬럼 매핑 연관관계 매핑 4.1 @Entity JPA를 사용해 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 부여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라 부른다. 주의사항 기본 생서자 필수 final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 final 을 사용하면 안 된다. 4.2 @Table @Table은 엔티티와 매핑할..
git repo user 변경 최근 100일 커밋 프로젝트를 진행하고 있다. 그래서 매일매일 열심히 커밋을 하고 푸시를 하고 있다. 그런데 이전에는 집에서 윈도우 PC를 가지고 커밋을 진행했었다. 문제는 최근 이사를 하면서 책상을 버리는 바람에 모니터와 기타 잡동사니들을 올릴만한 책상이 없었고 그냥 회사 노트북으로 업무도 하고 100일 잔디 심기도 진행을 했다. 그런데 오늘 보니 나는 분명 커밋을 했는데 잔디가 아니라 시멘트가 눈에 보였다. 그래서 커밋 히스토리를 뒤져봤고 분명 아래처럼 커밋도 제대로 했었다. 그래서 이 억울함을 친구들에게 말하니 그 친구가 친절하게 뼈를 때려주었다.... Git repo 변경 방법 참고로 계정은 회사 : demo.lim 개인 : vljh246v 이다 우선 아래 명령어와 같이 저장된 이름과 이름을 확인..