분류 전체보기

Javascript 에서 다음과 같이 메서드를 표현할 수 있다. 예를 들어 user라는 객체를 만들고 이름을 바꾸는 메서드를 선언해 보면 function const user = { name: '', changeName: function(name) { this.name = name } } function 축약법 const user = { name: '', changeName(name) { this.name = name } } 화살표 함수 const user = { name: '', changeName: (name) => { User.name = name } } 단 화살표 함수의 경우 메서드 안에서 this를 사용하게 되면, 상위 스코프의 this를 가져오기 때문에 메서드로 화살표 함수를 쓰는 것은 좋지 않..
내장 H2 DB로 Repository 테스트 코드 작성하는 방법에 대해 알아보겠습니다. TestJpaConfig.class를 생성하여 @EnableJpaAuditing 을 통해 JpaAuditing을 활성화합니다. (JpaAuditing 을 안 쓰시면 필요 없습니다.) TestJpaConfig.class 에는 다른 코드는 없고 클래스 위에 어노테이션만 추가합니다. @EnableJpaAuditing @TestConfiguration 테스트할 XxxxTest.java 클래스 위에 하단 어노테이션을 추가합니다. @DataJpaTest @Import({TestJpaConfig.class}) @AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H..
· 아키텍처
헥사고날 아키텍처에 대해 정리해 보겠습니다. 순서는 다음과 같습니다. 용어정리 헥사고날 아키텍처 장/단점 패키지 구조 개발 순서 및 각 계층별 개발방법 학습 후 생각이 곁들여져 있기 때문에 부족한 부분이나 다른 점이 있을 수 있다는 점 참고 부탁드립니다.😅 1. 용어 정리 Port : 어플리케이션과 어댑터를 연결해주는 인터페이스 Adapter : 포트를 통해 어플리케이션에 접근하거나 동작하는 외부 시스템 ( 웹, 영속성, 외부 API 등) 주요소 (Primary) : 외부에서 요청해야 동작하는 포트와 어댑터, 주 포트, 주 어댑터라고 부릅니다. 부요소 (Secondary) : 어플리케이션에 의해 동작하는 포트와 어댑터, 부 포트, 부 어댑터라고 부릅니다. 2. 헥사고날 아키텍처 장/단점 장점 결합도를 낮..
BigDecimal 나눗셈 시 소수점 자릿수가 무한대 일 경우 "Non-terminating decimal expansion; no exact representable decimal result" 오류가 발생한다. 적절하게 scale 처리를 해주어야 한다. 기존 나눗셈 처리시 BigDecimal 의 정적변수 대신 RoundingMode enum 클래스를 사용한다. bigDecimal.divide(new BigDecimal(3), 3, BigDecimal.ROUND_HALF_UP); bigDecimal.divide(new BigDecimal(3), 3, RoundingMode.HALF_UP);
· Database
트랜잭션 격리 수준에 대해 알아보겠습니다. 트랜잭션에 대해 궁금하다면 이전에 포스팅된 트랜잭션을 확인해 주세요. 트랜잭션 격리 수준 이란? 트랜잭션끼리 일관된 데이터를 얼마나 허용할 것 인지 정하는 수준입니다. 격리 수준에는 총 4개의 레벨이 존재합니다. 격리 수준의 레벨 Read uncommitted - 커밋되지 않은 데이터 읽기 Read committed - 커밋된 데이터만 읽기 (대부분의 DB의 Default Isolation Level) Repeatable Read - 읽는 동안 수정/삭제 불가능 (MySQL의 Default Isolation Level) Serializable - 완벽한 일관성 모드를 제공한다. 이상 현상이 발생하지 않는다. 또 각각의 단계 별로 일어날 수 있는 현상들로는 3개의..
· Database
오늘은 Transaction에 대해 알아보겠습니다. Transaction 이란? - 데이터 베이스의 상태를 변화시키기 위한 하나의 단위 데이터 베이스의 상태를 변화시킨다는 것은 뭘까요? 예를 들어 아래와 같은 테이블이 존재한다고 가정합니다. 각 사용자의 현재 보유한 금액을 저장하는 테이블입니다. 테이블 1. ID 이름 보유한 금액 1 이이원 1000 2 이우지 2000 해당 테이블에 INSERT, UPDATE, DELETE로 상태를 변화시킬 수 있습니다. 밑의 예시 Transaction에서 2개의 행위가 이루어질 수 있습니다. Transaction 1. "ID가 1인 사용자의 보유한 금액을 2000으로 변경하세요." (INSERT) "ID가 2인 사용자를 삭제하세요." (DELETE) 이러한 행위가 이루..
HTTP의 멱등성에 대해 알아보겠습니다. * 멱등성이란? 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질 HTTP MethodHTTP Method의 멱등성에 대해 알아보겠습니다.자주 사용되는 Method로는 GET, POST, PUT, PATCH, DELETE가 있습니다. GET예를 들어 어떠한 사용자의 정보를 가져오는 API가 있습니다. GET /users/1 HTTP/1.1 단순 조회만 하기 때문에 GET 요청을 몇 번을 하더라도 같은 결과를 가져옵니다.따라서 멱등성이 성립한다고 볼 수 있습니다.POST사용자를 등록하는 API입니다.POST /users HTTP/1.1{ "name" : "이이원", "age" : "15"}사용자를 등록하는 API는 서버의 상태가 변경되고, 데이터가 계속 추가..
상속과 컴포지션에 대해 알아보겠습니다. 상속은 부모클래스의 정의된 필드와 메서드를 자식클래스에서 물려 받는 것이고 컴포지션은 private 필드를 통하여 기존 클래스에 다른 클래스 인스턴스를 전달받는 것 입니다. 위의 설명 클래스들이 아래 소스에서와 같이 기존 클래스(Test)와 부모클래스(Test2), 다른 클래스(Test3)이 있습니다. public class Test extends Test2 { // 상속 private final Test3 test3; // 컴포지션 public Test(Test3 test3) { this.test3 = test3; } @Override protected void on() { super.on(); test3.on(); } public static void main(..
스프링의 주요 개념에 대해 간단히 알아보겠습니다. IoC (Inversion of Control) 제어의 역전 제어의 역전, 즉 초기에 개발자가 객체를 생성하고 주입해 주던 것을 프레임워크에 의해 동작되는 것을 말합니다. 스프링에서는 Application Context에서 Bean을 생성하고 주입시켜 줍니다. DI (Dependency Injection) 의존성 주입 IoC의 대표적인 동작원리로 외부로부터 다이내믹하게 오브젝트를 주입받는 것을 말합니다. 다음과 같은 원칙을 따릅니다. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 즉 인터페이스에 의존하고 있어야 합니다. 런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제3의 존재가 결정합니다. 의존관계는 사용할 오브젝트에 대한 레퍼런..
자바 8에 추가된 API인 스트림에 대해 알아보겠습니다. Stream API? Stream API란 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 데이터입니다. Stream은 마치 Builder 패턴과 비슷하게 내부 반복을 통해 데이터 처리 연산을 적용합니다. ! 기존 Collection을 for 문으로 반복하는 방식은 외부 반복 Stream API 특징 - 선언형 : 더 간결하고 가독성이 좋아진다. - 조립할 수 있음 : 유연성이 좋아진다. - 병렬화 : 성능이 좋아진다. Stream 이용과정 스트림은 질의를 수행할 데이터 소스를 중간 연산을 거쳐 최종 연산을 합니다. 예를 들어 아래와 같은 ArrayList가 존재한다고 가정했을 때 // ArrayList 객체에 추가 된 목록이 있다고 가정 L..
infitry
'분류 전체보기' 카테고리의 글 목록 (3 Page)