자바니또의 Tech상자
Popular posts
-
[ Spring ] Request Param을 enum으로 받기
[ Spring ] Request Param을 enum으로 받기
2022.03.23요청 파라미터를 enum으로 변환하여 다루고 싶은 경우가 있습니다. 예를 들어 은행 코드와 같은 경우 004, 009와 같이 각 코드는 어떤 은행인지 알 수 있는 아이덴티티 역할을 합니다. 문자열과 enum의 이름이 같다면 자동으로 컨버팅해주지만 그렇지 않다면 다음과 같은 문제점이 있습니다. 휴먼 에러가 발생하기 쉽습니다. 프로젝트에 중간에 참여한 사람은 익숙하지 않아 알아보기 쉽지 않습니다. 별도의 유효성 체크가 필요합니다. Spring에서는 문자열을 enum으로 변환해주는 컨버터를 직접 만들어 적용시킬 수 있습니다. 문제 상황 예시 요청 파라미터로 은행코드를 받아 거래내역을 조회 하는 상황을 예로 들어보겠습니다. enum을 사용하지 않는다면 다음과 같이 작성할 수 있습니다. @GetMapping("/.. -
[ JAVA ] Iterator 분석 (feat. ArrayList)
[ JAVA ] Iterator 분석 (feat. ArrayList)
2021.02.02개요 요즘 코딩테스트 준비를 위해 알고리즘 문제들을 풀고있다. 그러던 중 옆에서 같이 공부하던 생각한대로 동작하지 않는다며 보여준 코드를 보고 이번 포스팅의 주제를 정했다. public void method(){ ArrayList list = new ArrayList(); list.add("first "); list.add("second "); list.add("third"); while(true){ //... Iterator it = list.iterator(); list.clear(); while(it.hasNext()){ System.out.print(it.next()); } } } 동생이 직면한 문제는 간단히 적어보았다. 동생이 말히기를 list의 내용을 복사하여 Iterator를 만들고 다음 루.. -
IntelliJ 에서 embedded H2에 연결하기
IntelliJ 에서 embedded H2에 연결하기
2021.10.12개요 SpringBoot를 사용하여 로컬에서 개발할 때 H2를 많이 사용하게 된다. h2는 일반적으로 h2-console이라는 웹 콘솔을 사용하여 데이터를 조회하고 조작할 수 있는데 기능적인 부족함과 편리성 때문에 IntelliJ Ultimate에 있는 Database도구를 사용해 연결할 수 있는 방법을 찾아보았다. 이번 포스팅에서는 설치형 H2가 아니라 SpringBoot에 의존성을 둔 H2 embedded DB를 사용하면서 IntelliJ에서 연결하는 방법을 알아본다. 목차 사용할 방법 .properties 파일 설정 IntelliJ 설정 사용할 방법 H2를 App에서 In-memory나 .db파일을 이용하여 내장 DB를 생성하면 JVM 내에 DB가 생성되기 때문에 외부의 다른 클라이언트(ex. In.. -
[ Spring Boot ] 데이터베이스를 Session 저장소로 사용하기
[ Spring Boot ] 데이터베이스를 Session 저장소로 사용하기
2021.03.18이번 포스팅은 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'라는 책을 읽고 책의 내용을 정리한 것입니다. 책의 장점은 저자가 경험한 것과 생각을 글로 나마 빠르게 경험할 수 있다는 것입니다. 깊이 이해 하지 못하더라도 그러한 것이 있다라는 것을 안다는 것만으로도 충분히 가치있다고 생각합니다. 더 나아가서 직접 해본다면 더더욱 이득이겠지요. 세션저장소를 선택하자 스프링 부트 프로젝트는 기본적으로 세션이 내장 톰캣의 메모리에 저장된다. 애플리케이션을 재실행하거나 배포할 때마다 내장 톰캣의 경우 재시작이되는데 이로인한 문제점은 두 가지가 있다. 1. 배포를 하거나 재실행을 하면 로그인이 풀린다. 2. 2대 이상의 서버에서 서비스하고있다면 톰캣마다 세션 동기화 설정을 해야한다. 그래서 실제 ..
Recent posts
-
[ Spring ] enum의 원하는 상태 값을 DB에 저장하기
[ Spring ] enum의 원하는 상태 값을 DB에 저장하기
2022.03.23JPA를 사용하면서 엔티티의 상태 값 중 enum이 있을 때 enum의 순서(상수 값)나 이름(문자열 값)이 아니라 원하는 데이터를 저장하고 꺼내고 싶을 수 있습니다. JPA 2.1부터는 AttributeConverter를 제공하여 이것이 가능하도록 해줍니다. (JPA 구현체 중 Hibernate 5 기준입니다.) 문제 상황 예시 은행 코드 enum인 BankCode가 있습니다. DB에 저장할 때 BankCode의 코드 값이 DB에 저장되고, 엔티티로 직렬화 할 때도 코드 값을 통해 가능하도록 하고 싶습니다. 엔티티는 다음과 같습니다. @Entity public class BankTransaction { @Id @Column(name = "bank_transaction_id") private Long i.. -
[ Spring ] Request Param을 enum으로 받기
[ Spring ] Request Param을 enum으로 받기
2022.03.23요청 파라미터를 enum으로 변환하여 다루고 싶은 경우가 있습니다. 예를 들어 은행 코드와 같은 경우 004, 009와 같이 각 코드는 어떤 은행인지 알 수 있는 아이덴티티 역할을 합니다. 문자열과 enum의 이름이 같다면 자동으로 컨버팅해주지만 그렇지 않다면 다음과 같은 문제점이 있습니다. 휴먼 에러가 발생하기 쉽습니다. 프로젝트에 중간에 참여한 사람은 익숙하지 않아 알아보기 쉽지 않습니다. 별도의 유효성 체크가 필요합니다. Spring에서는 문자열을 enum으로 변환해주는 컨버터를 직접 만들어 적용시킬 수 있습니다. 문제 상황 예시 요청 파라미터로 은행코드를 받아 거래내역을 조회 하는 상황을 예로 들어보겠습니다. enum을 사용하지 않는다면 다음과 같이 작성할 수 있습니다. @GetMapping("/.. -
[토크ON세미나] Spring Cloud 를 활용한 MSA 기초
[토크ON세미나] Spring Cloud 를 활용한 MSA 기초
2022.03.23MSA(Microservice Architecture)란 단어를 들은 후 궁금해서 검색해 본 적이 있습니다. 글로 개념은 알 것 같았지만 직접 해보지 않았기 때문에 여러 것들을 검색해보다 실습형의 무료 세미나 영상을 보게 되었습니다. 영상 링크 세미나 목표 MSA와 Monolith의 차이점을 안다. Spring Cloud와 Netflix oss를 사용하여 실습해보면서 MSA를 간단하게 만들어본다. Circuit Breaker를 이해하고 Hystrix를 사용해본다. Client side Load Balancing을 이해하고 Ribbon을 사용해본다. Service registry를 이해하고 Eureka를 사용해본다. API Gateway를 이해하고 Zuul을 사용해본다. 후기 영상의 총 길이는 3시간 반정.. -
우아한테크세미나 - 우아한 객체지향 (feat. 조영호님)
우아한테크세미나 - 우아한 객체지향 (feat. 조영호님)
2022.01.19이번 포스팅은 객체지향 설계에 대해 고민하고 있을 때 좋은 참고가 된 세미나 내용에 대한 정리입니다. 유튜브에 1시간 40분 정도 길이의 영상이 있는데, 사실 이 영상을 3번째 보고 이제야 이해가 되어 포스팅을 하게 되었습니다. 개인 프로젝트와 여러 개념에 대해 더 알게 되면서 저도 성장했는지 매번 볼 때마다 이해도가 달랐습니다. 책도 그렇고 영상도 그렇고 사람은 아는 만큼 보인다고 볼 때마다 느끼는 점이 다른게 참 재미있는 것 같습니다. 이번 포스팅은 단순히 제가 중요하다고 생각한 포인트를 정리한 것입니다. 강의의 핵심인 의존성을 이용해 설계를 발전시키는 것은 담기가 힘듭니다. 꼭 영상을 한번 보는 것을 추천드립니다. 목차 세미나 목표 클래스 의존성의 종류 의존성 사이클 협력 설계하기 Aggregate.. -
[DB] Query Cache ?
[DB] Query Cache ?
2022.01.16목차 Query Cache란? MySQL Query Cache의 문제점 대안 Query Cache란? Query Cache란 SQL 실행 결과를 메모리에 저장해 둔 것을 의미합니다. SQL을 수행하면 [Query Parsing] -> [Optimization] -> [Execution] 과정을 거쳐 디스크에서 데이터를 읽습니다. 하지만 Query Cache를 사용하면 이러한 과정을 생략하고 같은 SQL이라면 메모리에서 바로 결과 값을 찾아서 사용할 수 있습니다. 몇 개의 레코드를 찾기 위해 몇 백만개의 레코드를 읽는 무거운 쿼리가 자주 사용된다면 Query Cache로 큰 이점을 얻을 수 있습니다. MySQL Query Cache의 문제점 MySQL은 자체적으로 Query Cache 기술을 지원했지만 5.. -
[DB] Index ( Clustered & Non-Clustered )
[DB] Index ( Clustered & Non-Clustered )
2022.01.16쿼리를 잘 짠다는 것의 척도가 되는 1순위는 성능일 것입니다. 이번 포스팅에서는 대다수의 성능의 원인이 되는 인덱스에 대해 공부한 내용을 적어보려합니다. 혹시나 잘못된 정보가 있다면 댓글로 알려 주시길 바랍니다. 목차 Index란? Index 저장 구조 인덱스 특징 Clustered Index & Non-Clustered Index Index 사용시 주의사항 Index란? 인덱스는 실생활에서 쉽게 볼 수 있습니다. 예를 하나 들면, 책의 찾아보기와 같습니다. 책의 찾아보기는 원하는 정보를 빠르게 접근할 수 있도록 도우면서 동시에 찾아보기 목록 또한 빠르게 찾을 수 있도록 사전순으로 정렬되어 있습니다. DB의 인덱스도 다르지 않습니다. Index는 원하는 데이터를 빠르게 조회하기 위해 정렬된 찾아보기와 같..