전체 글
-
[Junit] Test Double프로그래밍/Junit 2022. 2. 8. 01:37
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Test Double 테스트 더블(Test Double)은 제라드 메스자로스에 의해서 탄생한 단어로 테스트 자동화 과정에서 테스트 진행이 어려운 경우 이를 대신하여 테스트 진행이 가능하도록 만들어 주는 객체를 말합니다. Test Double은 큰 의미에서 테스트 진행이 가능하도록 만들어주는 객체를 말하며 아래 5가지의 세부 종류로 나눌 수 있습니다. Test Double 종류 Test Spy Mock Dummy Object Test Stub Fake Object 2. Test Spy Test Stub 처럼 실제 동작을 수행하는 것이 아닌 미리 준비해둔 결과가 반환..
-
[Spring] Bean, Component 어노테이션프레임워크/Spring 2022. 1. 18. 16:52
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Bean, Component 어노테이션 Bean과 Component 어노테이션은 모두 Spring의 빈 등록을 하는 어노테이션입니다. 그럼 왜 1개의 어노테이션으로 빈 등록을 하면 되는 것을 2개의 어노테이션으로 분리되어 있을까요? 당연하게도 2개는 같은 목적을 가지고 있지만 사용법이 다르기 때문입니다. 2. Spring Bean 설정 Spring의 XML 설정은 외부 라이브러리나 개발자가 직접 작성한 Class 모두 Bean 태그의 Class 속성으로 Class를 전달하여 Bean으로 생성할 수 있습니다. Java를 이용하여 Bean을 설정하려면 어노테이션을 사..
-
[JPA] Enum 사용프로그래밍/JPA 2022. 1. 14. 18:44
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Enum이란 일정한 종류를 가지는 정보의 집합을 의미합니다. 예를 들어 상품의 종류로 책, CD, 연필 등 다양한 상품이 존재할 수 있습니다. 이때 책, CD, 연필 등은 일정한 종류 상품이라는 정보로 볼 수 있습니다. 그럼 이 상품 Enum에 책, CD, 연필 등 다양한 상품들을 상수 형태의 집합으로 만들어 관리할 수 있도록 합니다. 2. JPA에서 Enum 사용 먼저 Entity의 특정 속성으로 Enum을 사용하기 위해서는 @Enumerated라는 어노테이션을 사용해야 합니다. 이 어노테이션은 EnumType.String, EnumType.ORDINAL 2개의..
-
[Intellij] Junit Test H2-Console 접속Intellij 2022. 1. 13. 22:26
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 발생 현상 SpringBoot Junit5를 이용하여 JPA Test를 진행 중 실제 DB에 들어간 값을 확인하기 위해 BreakPoint를 찍고 h2 DB의 Web Console 화면으로 접속 시 무한 로딩이 발생하며 접속에 실패하는 현상이 발생하였습니다. 즉 디버깅 중에는 h2 DB Console에 접속할 수 없는 현상이 발생하였습니다. 2. 원인 먼저 SpringBoot Test를 진행하면 SpringBoot가 실행되고 이후 Test 메소드가 실행됩니다. 만약 Intellij의 BreakPoint 설정을 변경하지 않았다면 시스템 실행 시점이 BreakPoin..
-
[JPA] 즉시로딩과 지연로딩 Eager And Lazy프로그래밍/JPA 2022. 1. 13. 01:06
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 즉시 로딩과 지연 로딩 엔티티에서 연관관계를 가지는 엔티티가 있는 경우 이 연관된 엔티티를 어떤 시점에 조회를 할 것인지 결정하는 로딩 방법을 말합니다. 즉시 로딩 - 엔티티를 조회할 때 연관된 엔티티를 같이 조회하는 로딩 방법 ManyToOne으로 연관된 Team 엔티티를 즉시 로딩으로 설정하게 되면 Member 엔티티를 조회하는 시점에 연관된 Team 엔티티를 조회하는 로딩 방법입니다. 지연 로딩 - 엔티티를 조회할 때 연관된 엔티티를 같이 조회하는 것이 아닌 연관 엔티티의 사용 시점에 조회하는 로딩 방법 ManyToOne으로 연관된 Team 엔티티를 지연 로..
-
[JPA] Attribute Converter프로그래밍/JPA 2022. 1. 12. 00:32
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Attribute Converter이란 명칭을 그래도 번역하면 속성 변환기 정도가 될 것 같습니다. 번역 그대로 Converter는 Entity와 DB사이에서 속성의 변환을 담당합니다. Converter가 지정되지 않은 속성의 경우 조회 시 DB의 데이터를 특정 속성의 값으로 읽어오며, 저장 또는 수정 시 Entity의 속성 값을 DB의 컬럼에 저장합니다. 반면 Converter가 지정된 속성의 경우는 조회 시 DB의 데이터를 읽어와 Converter의 특정 동작을 수행 후 결과를 Entity속성에 값을 입력하며, 저장 또는 수정 시 Entity의 속성 값을 Co..
-
[Java] Reflection Private프로그래밍/Java 2022. 1. 11. 00:07
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Reflection Private 이전 글에 이어서 Private 생성자, 메소드, 속성에 접근하여 생성자를 통해 객체를 생성하거나 메소드를 통해 해당 메소드를 실행하는 등 Private으로 선언된 Class 정보들을 이용하는 방법에 대해 알아보고자 합니다. 2. Reflection Private 사용 방법 getDeclaredConstructor, getDeclaredConstructors메소드 메소드명과 같이 선언된 모든 생성자를 가져올 수 있습니다. 'ClassObject'.getDeclaredConstructors(); Class Object의 getDec..
-
[디자인 패턴] 전략 패턴 Strategy Pattern디자인 패턴 2022. 1. 8. 19:47
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 전략 패턴이란 객체의 여러 작업들 중 변하는 부분과 유사한 부분을 2개의 오브젝트로 분리하여 유사한 부분을 클래스로 만들고 변하는 부분을 인터페이스로 만들어 변하는 부분을 인터페이스를 통해서 의존하도록 만드는 전략 패턴입니다. 즉 객체의 작업이 동적으로 변할 때 고정된 부분인 클래스에서 전략 인터페이스를 호출 함으로써 해당 전략만 수정하면 객체의 작업을 동적으로 변경할 수 있도록 하는 패턴입니다. 2. 전략 패턴 UML 클라이언트는 사용할 전략을 선택하여 해당 객체를 생성하고 생성된 전략을 컨텍스트에 전달합니다. 이후 클라이언트가 컨텍스트의 메소드를 이용하면 컨텍..