전체 글

Backend Developer
· Java/Java
thread-safe 이란?면접 단골질문? 이 있다. 바로 StringBuffer 와 StringBuilder 에 대한 질문이다 위 질문에서 아마도 면접관들이 원하는 키워드는 바로 'thread-safe' 에 대한 의견을 듣는 것일 것이다당연하게도 남들 다 아는 똑같은 역할과 동작을 시키지만 내부 메소드가 다르고, 구현 방법이 다르고~ 이런 이야기는 좋아하지 않을 것이라고 생각한다Java ConcurrentMap 에 대한 내용을 공부하닥 thread-safe 에 관한 내용이 나와 한번 정리를 해보았다.1. thread-safe 개념Thread-safe 이란 여러 스레드가 동시에 같은 리소스(객체, 변수, 데이터 구조 등)에 접근하더라도 프로그램이 의도한 대로 정확하게 동작하는 것을 의미한다일반적으로 우리..
· Database/JPA
JPA 를 사용할 때 항상 N+1 문제를 조심해야한다 그리고 N+1 문제를 해결하기 위해서는 여러가지 방안이 있다 왜 N+1 이 발생하고, 어떻게 해결해 나가는지 코드를 통해 이해를 도와보자 1) Entity기본적으로 위 예시에는 2개의 엔티티가 존재한다 NMember 와 NOrder 가 있고, NMember 는 여러개의 NOrder 를 가짐으로써 두 엔티티의 관계에서부모: NMember, 자식: NOrder 관계 이다. 그러므로 NMember 기준 @OneToMany, NOrder 기준 @ManyToOne 사용  코드 수 최소화 및 편의를 위해 Lombok 을 사용하서 개발을 한다 @AllArgsConstructor@NoArgsConstructor(access = AccessLevel.PROTECTED..
· Spring/Boot
📌 Java & SpringBoot & JPA 환경에서 개발중임.  서론Java/SpringBoot 를 사용하여 실무를 하고있다.개발을 하다보면 예외처리를 해야할일이 상당히 많이 생길 것이다 대표적으로 Java 하면 NullPointException 이 있을 것이다 적절한 예외처리를 하지 않고, Runtime 에러가 생길 경우 어플리케이션에 장애가 생길 것이다 심하면 서비스가 중단이 되는 상황도 발생할 수 있다 그만큼 예외처리는 귀찮지만 중요한 일이다. 소홀히 해서는 안된다 위 상황을 방지하기 위해서 코드를 작성할 때 적절한 예외처리가 항상 필요하다 아래 예시 코드를 보며 한번 예외 처리를 점진적으로 발전시켜보자. 예시는 DB 와 통신하는 상황에서의 예외 처리이다 일단 try ~ catch 에 대한 방..
· Spring/Boot
실무를 하다가 한가지 작업에 여러개의 트랜잭션이 필요한 상황이 있다.예를 들어보겠다. 현재 배치 파일을 만드는 상황이다. 배치 파일을 만들기 위해서는 파일 내부도 만들어야하고, 파일 서버에 업로드도 해야하고, 배치 파일이 insert 되었다는 기록도 해야한다.큰 틀에서 보면 3가지 작업이 있다. 한번의 작업을 하는데 적어도 3개의 메소드가 필요하다. 그렇다면 @Transactional 어노테이션은 어디에 걸어두는게 적절할까? 라는 고민을 하였다. 아래 코드는 최상위의 코드이다. @Slf4j@Servicepublic class DailyTransactionService { private final TransactionBatchService transactionBatchService; public..
· Spring/Boot
Spring 프레임워크를 사용하면 대부분의 클래스들에 어노테이션을 선언하고는 한다 대표적으로 많이 사용하는 어노테이션이 Lombok, Spring Context 에 Bean 으로 등록하기 위한 어노테이션이 있다@Getter, @Setter, @Service, @Component, @RestController 등... 개발을 하며 여러가지 어노테이션을 사용하고 있을 것이라고 생각한다 그리고 위 어노테이션을 선언함으로써 어떠한 동작을 할수있게 된다. 나는 문득 궁금해졌다.내가 이 어노테이션이 어떻게 동작하는지 알고 쓰는걸까?어노테이션을 내가 만들어서 사용할 수 있을까?라는 생각을 하였다.  위 생각을 행동으로 옮기기 위해 생각이 났을 때 공부를 해보고 기록을 해보았다  1) 어노테이션 동작 원리 및 예시어노..
필자는 실무에서 SpringBoot, Java, JPA 를 사용하여 개발하고 있다. 그리고 현재 멀티 모듈 기반의 스프링부트 프로젝트를 하고 있다.그리고 일반적인 Spring Layered Architecture 를 사용하고 있다.  하나 특이점이 있다면, 일반적인 멀티 모듈 구조랑은 살짝 느낌이 다르다.책임을 분리한 모듈들도 존재하지만, 예를 들면 아래와 같다.module-commonmodule-databasemodule-core 위 공통으로 사용하는 모듈들도 존재하고 아래 처럼 역할에 맞는 멀티 모듈이 존재한다.module-apimodule-paymentmodule-adminmodule-merchant 위처럼 역할에 맞는 모듈들이 존재한다.  그리고 각 모듈은 일반적으로 레이어드 아키텍쳐로 구성이 되..
· Java/Java
오늘은 Java/Spring 환경에서 사용하는 실무에서 SFTP/SSH 프로토콜을 사용하기 위해서 용하는 라이브러리 인 'Jsch' 사용법을 알아보려고 한다  위 포스팅을 목적은 내가 나중에 까먹었을 떄 위 포스팅을 보고 필요한 부분을 바로바로 복붙해 가기 위함이다.그러므로 내가 자주 썻던 메소드 및 사용예시에 대해서 만 설명해볼 예정이다.. 1. JSCH 란?http://www.jcraft.com/jsch/ 위 사이트는 공식문서 이다. 공식문서만 딱 들어가봐도 꽤나 오래되 보이는 사이트가 있고 그만큼 오래된 전통 라이브러리로 판정이 된다 2018년 6월이 마지막 업데이트로 생각보다 오래된(?) 라이브러리 이다 기술이 노후되고 관리되지 않았다고 안좋고 나쁜기술은 아니라고 생각한다 무료로 쓰는 입장에서, ..
· Etc/회고
일기 형식으로 실무에서 협업을 하며 아쉬웠던 부분에 대해서 한 풀이 느낌으로평소에 생각했던 내용을 정리해서 적어보려고 합니다. 글에 두서가 없을 수 있습니다. 미리 죄송합니다  저는 1년차 주니어가 되었고 더 나은 개발자가 되기 위해 끊임 없이 레퍼런스를 찾아보고 공부합니다.특히 저는 Java&Spring 개발자로써 객체지향을 공부하고 클린코드를 짜기 위해 고민합니다. 좋은 코드와 좋은 설계는 무엇일까? 라는 고민을 위주로 하며 그 고민을 코드에 녹여내기 위해 끊임 없이 고민합니다. 그래서 요즘은 '[객체지향의 사실과 오해, 오브젝트, 클린 코드]' 위 책을 읽고 있습니다.위 책들을 읽으면서 이해가 되는 부분과 이해가 안돼는 부분이 있었고 실무 코드와 책을 내용을 비교했습니다. 위 책들을 저자는 뛰어나고..
hyeonkyu
hyeonq.log