profile
클린코드 지향
post-thumbnail

[이펙티브자바] item46. 스트림에서는 부작용 없는 함수를 사용하라

스트림 은 함수형 프로그래밍에 기초한 패러다임이다.각 변환 단계는 가능한 한 이전 단계의 결과를 받아 처리하는 순수 함수여야 한다.순수 함수 : 오직 입력만이 결과에 영향을 주는 함수, 다른 가변상태를 참조않고, 함수 스스로도 다른 상태를 변경하지 않는다.스트림 연산에

2022년 7월 8일
·
0개의 댓글
·
post-thumbnail

[Spring Security] JWT API

spring-boot-starter-thymeleaf, thymeleaf-extras-springsecurity5, spring-session-jdbcheader : jwt token 이 입력되서 들어오는 header 의미issuer : 발행자 정보client-secr

2022년 7월 1일
·
0개의 댓글
·

[TIL] 20220627 프로젝트 코드리뷰

dataJpa 쿼리 적용dataJpa 를 사용하는 경우 findBy 를 사용해도 결국 id 를 통해 값을 가져오기 때문에 직접 쿼리를 적어주는것이 좋다. 하지만 직접 쿼리를적어주면 dataJpa 가 제공해주는 기본기능을 사용하지 못하는 것이기 때문에 querydsl 을

2022년 6월 27일
·
0개의 댓글
·
post-thumbnail

[이펙티브자바] item41. 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라

1. 마커 인터페이스란? 마커 인터페이스는 일반적인 인터페이스와 동일하지만 사실상 아무 메소드도 선언하지 않은 인터페이스를 말한다. 자바의 대표적인 마커 인터페이스로는 Serializable, Cloneable과 Spring에서 event 리스너를 사용한다면 종종

2022년 6월 22일
·
0개의 댓글
·

언제 비관적락(pessimistic lock)을 사용하고 언제 낙관적락(optimistic lock)을 사용할까?

프로젝트를 진행하면서 다량의 트래픽이 몰리는 응모 시스템을 개발중이다. 응모 부분을 담당하여 개발하면서 기본 비즈니스 로직을 구현하였다. 추가 회의를 진행하였고, 트래픽이 몰릴때 db 에 lock 을 걸어 데이터 무결성을 보장하면 좋을거 같다는 의견과 함께 어떤 락을

2022년 6월 21일
·
0개의 댓글
·

Mockito 와 BDDMockito 는 어떻게 구분하여 사용해야 할까?

프로젝트를 진행하면서 Mockito 와 BDDMockito 를 구분하지 않고 사용하였고 코드리뷰를 해주는 팀원으로 부터 가독성의 어려움과 구분해서 사용하는 이유를 알고 쓰는것이냐는 피드백을 받았다. 캠프와 같이 정해진 기간내에 다양한 지식과 프로젝트를 진행하다보면 쓰고

2022년 6월 21일
·
0개의 댓글
·

[독서] 엘레강트 오브젝트 3장. 취업(2)

저자는 상태를 가지는 class 를 get set 을 통해 상태를 노출시키는 가변객체를 진짜 클래스가 아닌 단순한 자료구조로 바라본다객체와 자료구조의 차이는 무엇인가?객체는 객체 사이에 메세지를 주고 받고 자신의 상태를 캡슐화 한다.(불투명박스)하지만 자료구조는 어떠한

2022년 6월 21일
·
0개의 댓글
·

조회로직은 전부 만들어야 할까?

findById findByName 과 같이 조회를 하는 목록이 많아지면 많아질수록 필요한 조회를 모두 만들어 주어야 할 수 있다. 하지만 이런 경우 조회에 해당하는 로직을 모두 작성해야 한다.이런 경우 동적쿼리를 통해 중간 지점에서 해당 column 에 해당하는 조회

2022년 6월 20일
·
0개의 댓글
·

표준 exception 과 custom exception 중 무엇이 더 좋을까?

개발을 진행하면서 exception 을 얼만큼 통일해야 할까라는 주제로 의논을 하였다. 이미 자바 표준 exception 이 있으며 custom exception 을 사용할 이유가 있을까가 의논의 논점이었다.예외 메시지로도 충분히 의미를 전달할 수 있다. - 메시지만

2022년 6월 20일
·
0개의 댓글
·
post-thumbnail

왜 layer 마다 dto 와 converter 를 두어야 할까?

엔티티를 controller 에 노출시키는 것은 controller 가 service 뿐만 아니라 repository 에서 다루는 entity 까지 의존관계를 가지게 되므로 controller 에 의존성이 너무 높아지게 된다. 그렇다면 어떻게 dto 를 설정하는 것이

2022년 6월 20일
·
0개의 댓글
·

controller 와 service 에서 의존성 관리는 누구의 책임일까?

1. controller 와 service 의 책임 controller 에서 여러 service 를 참조하면 controller가 너무 많은 책임을 가지게 된다. 그렇다면 service 가 다른 service 를 참조해야 될까? controller 가 보통 contr

2022년 6월 20일
·
0개의 댓글
·

[독서] 엘레강트 오브젝트 3장. 취업(1)

객체를 가능한 작고 응집력 있게 유지해야 유지보수와 테스트에 유익하다는점에 동의합니다.절차지향 프로그래밍 : 위에서 아래로 로직이 수행되며 직접 명령(요청)을 내린다.선언형 프로그래밍 : 정의(is-a) 를 하고 제어를 위임한다.정적 메서드는 클래스를 정의하여 제어를

2022년 6월 17일
·
0개의 댓글
·

[독서] 엘레강트 오브젝트 2장. 학습(2)

이상적인 코드는 스스로를 설명하기 때문에 어떤 추가 문서도 필요하지 않다.코드 자체만으로 의미가 명확하게 전달된다.나쁜 설계가 문서를 작성하도록 강요한다.추가로 저자는 단위테스트 도한 클래스의 일부로 취급해야 한다고 한다.하지만 대부분의 언어가 불가능하기 때문에 Cas

2022년 6월 15일
·
0개의 댓글
·

DDD 로 프로젝트 시작하기

팀원 역할 분담scrum masterproduct masterdevelopers주제 설정 (예시 : 나이키 응모 사이트)시나리오 작성회원가입, 로그인, 상품을 보고 응모를 하고 당첨이 되는 전체적인 메인 로직으로 작성주요 도메인 도출 (회원, 상품, 응모)시나리오 기반

2022년 6월 14일
·
0개의 댓글
·

[이펙티브자바] item36. 비트 필드 대신 EnumSet을 사용하라.

위와 같이 비트별 OR를 사용해 여러 상수를 하나의 집합으로 모을 수 있으며, 이렇게 만들어진 집합을 비트 필드라고 한다.비트별 연산을 사용해 합집합과 교집합 같은 집합 연산을 효율적으로 수행가능비트 연산은 매우 빠름하지만 정거 열거 상수의 단점 존재비트 필드 값은 해

2022년 6월 13일
·
0개의 댓글
·

[독서] 엘레강트 오브젝트 2장. 학습(1)

상태 없는 객체는 존재해서는 안되고, 상태는 객체의 식별자여야 한다.객체지향의 사실과 오해는 상태만 있는 것을 값객체로 보고 식별 가능한 식별자가 따로 존재해야 한다고 하였다.(entity 관점) 하지만 저자는 상태 그 자체들을 객체의 식별자로 보았다.(equals 오

2022년 6월 8일
·
0개의 댓글
·
post-thumbnail

[JPA] 영속성 컨텍스트(Persistence Context) - 엔티티 생명주기와 기능들

영속성 컨텍스트(Persistence Context) : 애플리케이션과 테이터베이스 사이에 위치한 가상의 데이터베이스내부 데이터는 HashMap 으로 구성되어 key=value : id=Entity 로 돌아간다.EntityManagerFactory : EntityMan

2022년 6월 7일
·
0개의 댓글
·

[이펙티브자바] item33. 타입 안전 이종 컨테이너를 고려하라

타입 안전 이종 컨테이너 패턴(type sage heterogeneous container pattern) : 컨테이너 대신 키를 매개변수화한 다음, 컨테이너에 값을 넣거나 뺄 때 매개변수화된 키를 함께 제공하는 방식. 이런경우 제네릭 타입 시스템이 값의 타입이 키와

2022년 6월 6일
·
0개의 댓글
·
post-thumbnail

[이펙티브자바] item32. 제네릭과 가변인수를 함께 쓸 때는 신중하라

가변인자 : 메서드에 넘기는 인수의 개수를 클라이언트가 조절할 수 있게 해준다.가변인수 메서드를 호출하면 가변인수를 담기 위한 배열이 자동으로 하나 생성이때 내부에 감춰야 할 배열이 클라이언트에 노출되는 문제 발생결론적으로 varargs 매개변수에 제너릭이나 매개변수화

2022년 6월 6일
·
0개의 댓글
·

Java 의 Generics(6) - 추후정리

제네릭 싱글톤 팩터리 패턴비검사 형변환 경고

2022년 6월 6일
·
0개의 댓글
·