리스트(232)
-
JPA + Lombok 실무 가이드
@Builder 패턴에 대해서 궁금증이 남아 있어서 구글에서 찾아보다가 좋은 글을 발견하게 되었음 실무에서 Lombok 활용과 클린코드, 유지보수 좋은 코드 등의 가이드를 제시해주는게 굉장히 좋은 내용인거 같다. (정독!) 링크 : https://github.com/cheese10yun/blog-sample/tree/master/lombok GitHub - cheese10yun/blog-sample: Yun Blog sample code :octocat: Yun Blog sample code. Contribute to cheese10yun/blog-sample development by creating an account on GitHub. github.com
2022.03.30 -
[assertJ] isEqualTo vs isSameAs 비교
테스트 코드 작성 중 asserThat().isEqualTo랑 asserThat().isSameAs의 차이점이 궁금해서 찾아보게 되었다. 결과부터 말하자면 - isEqualTo : 값 자체를 비교하는 것이다 (ex. 5 == 5, "a" == "b") -> 동등성 비교 - isSameAs : 객체 참조 주소값을 비교하는 것이다. (ex Car a , Car b => a==b) -> 동일성 비교 아래의 그림 2, 3의 코드를 보면 더 자세히 이해할 수 있을것이다.
2022.03.30 -
@Transactional,@Commit
JPA에서 DB 연산(C,R,U,D)은 Transaction 단위 안에서 실행된다. 즉, 트랜잭션이 없는 연산은 실행될 수가 없다. JPA에서는 @Transactional라는 어노테이션을 제공하여 트랜잭션 기능을 제공한다. 실제 코드를 보면서 이해해 보자! 아래의 실제 테스트를 진행 중 그림 1과 같이 오류메시지가 나타났고 확인해 보니 "현재 스레드에 엔티티 매니저가 없다 그래서 persist 함수를 호출할 수가 없다"라는 에러 메시지가 뜬것을 확인할 수 있다. 앞에서 언급했듯이 JPA는 Transcation 단위 안에서 실행되므로 @Transactional 어노테이션을 입력해주면 실행이 된다! @Transactional 어노테이션을 추가 후 실행하였다.(그림 2 참고) 그런데... 실행은 잘 됐는데 D..
2022.03.30 -
단위 테스트
고민 프로젝트 진행 중 테스트를 하면서 각 역할별(domain, repository, service, controller 등...)들의 단위 테스트를 어떻게 작성해야 할지 고민이 생겼다. 먼저 Domain Layer는 객체 생성이라 테스트의 필요성을 느끼지 못하였고 Repository Layer는 EntityManager에 의존하여 기능 대부분을 수행하기에 DB에 데이터가 잘 들어 가는지 확인 과정을 진행하였다. 그런데 대부분의 핵심 로직은 Service Layer에 있다는 것을 인지하게 되었고 그러면 Service Layer는 어떻게 테스트를 진행해야 하는지 궁금해서 구글에 검색 중 좋은 글을 발견하게 되었다. 정리 Service는 Repository에 의존하기 때문에 Service 단의 단위 테스트가..
2022.03.30 -
Builder 패턴
엔티티를 구성 중 Setter를 사용하지 않고 엔티티 변경을 해 줘야 한다는 것은 인지하고 그러면 어떤 방식으로 엔티티의 각 변수에 값을 설정해 줄 수 있는지 구글에서 찾아보게 되었다. 찾아보던 중 Builder Pattern 키워드를 알게 되었고 잘 정리해놓은 글을 찾게 되어 해당 블로그를 참고하여 요약 및 정리를 할 것이다. 빌더 패턴(Builder Pattern) (객체의 생성 방법과 표현 방법을 분리한다) 빌더 패턴은 객체를 생성할 때 흔하게 사용하는 패턴이다. 나는 이펙티브 자바의 빌더 패턴과 Lombok의 @Builder에 대해서 정리할 것이다. Effective Java의 빌더 패턴 이펙티브 자바의 빌더 패턴은 가독성/유지보수가 더 편해지므로 빌더 패턴을 쓰라고 권장한다. 생성자 인자가 많을..
2022.03.30 -
[Summer/Winter Coding(~2018)] 스킬트리
[문제 접근법] - Topology Sort 개념을 적용하여 해당 스킬의 선행스킬이 먼저 배웠는지 확인하였다. 자세한건 아래 소스코드를 보면서 설명하겟습니다. 토폴로지 정렬이 궁금하다면? 🙄😲 https://m.blog.naver.com/ndb796/221236874984 https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr [구현 1] 1. 선행스킬 그래프와 후행스킬 그래프를 만든다. 2. 스킬트리를 하나씩 루프를 돌아 해당 스킬의 후행 스킬 찾는다. 2-1. 후행 스킬이 존재한다면 후행 스킬의 선행 스킬을 제거한다. 2-2. 후행 스킬이 존재하지 않는다면 어떠한 연산도 하지 않는다. 3. 만약..
2022.03.29