BackEnd(6)
-
[Spring] Spring 3.X에서 jsonb 자료형 사용하기
json 자료형이란? json이라는 자료형은 2011년대 부터 사용되어왔다는데 10년이 지난 지금도 가장 많이 사용하는 자료형이라는 사실은 틀림없다고 생각합니다. Json의 형태는 Key와 Value의 값으로 채워져 있는 형태이며, 직관적으로 데이터를 확인할 수 있다는 점이 장점입니다. jsonb 자료형이란? 이런 json 형태를 DB 컬럼의 데이터 타입으로 사용하면 어플리케이션을 개발함에 있어 편리하지 않을까하는 접근으로 postgresql에서 제공하는 데이터 타입입니다. 기존 json 자료형을 text 형태로 DB에 저장하는 것이 아닌, DB 내부에서 key - value 형태로 관리를 할 수 있도록 하자는 접근으로 만든 데이터 타입이라고 합니다. json과 jsonb를 비교하면... JSON JSO..
2023.02.19 -
[Spring] Gradle multi-module 프로젝트 세팅하기
Gradle Multi Module로 프로젝트를 구성하는 이유 꽤나 잘 만들어진 오픈소스 프로젝트나 회사의 대부분 프로젝트에서는 멀티모듈로 구성하여 프로젝트를 운영합니다. 여러 이유가 있겠지만, 가장 큰 이유 1개만 꼽자면 모듈간 의존성을 줄이기 위함이라고 생각합니다. ( '멀티 모듈 = 모듈의 분산' -> 분산의 가장 큰 이점은 의존성 감소 ) 여러사람이 함께 참여하는 프로젝트에서는 작업 결과물의 반영, 그리고 배포 파이프라인의 분리 등의 이유로 멀티 모듈을 사용한다고 알고 있습니다. Multi Module로 프로젝트 단점 멀티 모듈 구성은 단점도 있습니다. 관리 포인트가 늘어나는 것은 명백한 단점입니다. 흔히 core 혹은 common (같이 쓰는데도 있고)이라 불리는 공통 영역을 두고 사용하는데, ..
2023.02.18 -
[Spring] IoC 컨테이너와 DI에 대해서 가장 기본적인 CRUD 예제로 이해하기
대부분 IoC 컨테이너와 DI에 대한 예제를 찾아보면 다들 너무나도 잘 정리해주신 글들이 많습니다. 그래서 저는 조금 다른 예시로 기본적인 CRUD 예제를 가지고 IoC 컨테이너와 DI를 제가 아는대로 한번 정리해보려고 합니다. 사실 DI나 보통 처음 백엔드 자바 스프링 할 때, 토비의 스프링보면서 UserDao 리팩터링하면서 IoC와 DI를 익히기 보다는 아마도 김영한님 강의 보면서 기본적인 CRUD 만들면서 익히는 분들이 더 많다고 생각이 들어서 저도 그렇게 해볼랍니다. DI에 대한 WIKI를 보면 벌써 부터 쉽지가 않아 보입니다. 흑흑 간단한 프로젝트 구성 : Github Link ( 스프링 어플리케이션 프로젝트 생성 및 기본 Controller, Service, Repository, Entity를..
2022.11.30 -
[Spring] Spring Framework Modules - 스프링 프레임워크 큰 그림 이해하기
요즘 토비의 스프링을 파보고 있는 백엔드 뉴비입니다. 힘드네요. ^^ 3년전 첫 취업으로 국비 배울때 Spring을 했었는데, 임베디드 C언어 개발자가 되고 다시 백엔드로 돌아오려고하니 Spring이 조금 발목이 잡힙니다. 로그 파싱 목적이나 데이터를 취합하는 과정에서 C언어보다는 자바 기반의 스프링 프레임워크가 솔직히 DB 접근이나 클래스단위로 파싱된 내용을 Row단위로 잘 저장가능하다 보니 업무에서도 종종 쓰긴 했는데, 엔터프라이즈 단위의 프로덕션을 개발하려고 생각하니 사실 조금 더 깊이 알아야겠다는 생각이듭니다. 김영한님 강의 중 언급한 말씀을 조금 언급하자면, 정말 스프링을 다시금 접한 저는 망망대해에 표류중인 돛단배 같습니다. 그래서 어디부터 시작하면 좋을까하고 일단 '토비의 스프링'을 딱 펼쳤..
2022.11.30 -
[Java] Object 클래스와 equals(), hashCode()
해당글은 아래 내용을 재구성하여 작성하여 보았습니다. - 자바의 신 - 이펙티브 자바 - 자바 공식 도큐먼트 모든 클래스는 Object 클래스의 상속을 받는다. Object 클래스에 있는 메소드들을 통해서 클래스의 기본적인 행동을 정의할 수 있기 때문이다. ( 자바의 신 p.319 ) 위 공식 도큐먼트에서는 Thread 처리를 위한 메소드들과 함께 명시가 되어있다. 아래는 자바의 신 내용을 발췌하였다. 메소드 설명 protected Object clone() 객체의 복사본을 만들어 리턴 public boolean equals(Object obj) 현재 객체와 매개 변수로 넘겨받은 객체가 같은지 확인하여, 같으면 true, 다르면 false를 반환한다. protected void finalize() 현재 ..
2022.11.24 -
[에러] javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
아시는 분들은 다 아시는 너무 당연한 이야기를 기록삼아 한번 적어본다. 아마도 가끔 설정을 새로이 잡아주다가 보면 한번씩 마주치는 에러 같다. javax.net.ssl.SSLException인에 메시지는 closing inbound before receiving peer's close_notify 이다. 전체 내용은 아래와 같다. SpringBoot Application은 잘 동작하고 있는데, Socket과 관련된 Thread가 종료되고, Socket 연결이 끊어진것만 같은(?) 에러들이 발생했다. 결론 부터 이야기하면 SSL 옵션을 지정해주지 않았기 때문에 SQL을 실행하고 해당 DB Connection을 유지하지 않고 바로 종료하면서 발생시키는 에러라고 한다. 해결책은 SSL = false를 해주거나..
2022.11.22