JaeWon's Devlog
article thumbnail
[DB] DELETE 쿼리 시 Join 사용하기(MySQL)
BackEnd/DataBase 2022. 7. 20. 09:37

DB(MySQL)에서 DELETE 문 에서 Join 을 사용하여 여러 테이블에서 데이터를 삭제하는 방법을 정리해보고자 한다. 1. 일반적인 DELETE 문 --1. 기본 Delete DELETE FROM T_MEMBER; --2. where 문을 사용한 Delete DELETE FROM T_MEMBER WHERE NAME = '개발자'; 2. Join 을 사용한 DELETE 문 - Join 을 사용하여 Delete 를 할 경우 하나의 쿼리로 다수의 테이블에 있는 데이터를 삭제할 수 있다. 2-1. Inner Join - INNER JOIN 과 함께 DELETE 문을 실행하면 기준이 되는 테이블에서 행을 삭제하고, 다른 테이블에서 일치하는 행을 추가로 삭제할 수 있다. - 예를 들어, T1, T2 두 테이..

article thumbnail
[Spring] 의존성 주입(DI) 시 생성자 주입(Constructor Injection)을 사용해야하는 이유
BackEnd/Spring 2022. 7. 17. 14:30

회사에서 소스를 분석하는 도중에 의존성 주입을 필드에 @Autowired 어노테이션을 사용하지 않고, 생성자를 생성하여 주입하고 있었다. 그리고 종종 생성자에는 아예 @Autowired 어노테이션도 사용되지 않고 @RequiredArgsConstructor을 사용하고 있었다. 항상 필드 주입으로 사용하고 있었어서, 궁금해서 시니어 분께 여쭤보니 @Autowired는 deprecated 돼가는 분위기이고, 또한 생성자 주입을 권고하고 있기도 하다는 답변을 받았다. 추가로, 인텔리제이에서도 Autowired 어노테이션을 사용하면 아래와 같이 경고메시지를 보여주고 있었다.(매번 자세히 확인도 안 하고 넘어갔는데...) 대충 번역해보자면 "필드 주입은 권장하지 않습니다. 항상 빈에서 생성자 기반으로 종속성을 주..

article thumbnail
[Java] Lambda 정리
BackEnd/Java 2022. 7. 16. 16:14

최근에 함수형 프로그래밍을 많이 사용하게 되면서, Java 에서도 1.8 버전부터 함수형 방식의 람다(Lambda) 형식을 제공하고 있다. 또한, Java 프로그래밍 중 종종 사용하는 Stream 연산에서도 매개변수로 함수형 인터페이스를 받도록 되어있고, 람다식은 반환값으로 함수형 인터페이스를 반환한다. 이렇게 점점 Lambda 를 자주 접하게 되어 이를 한번 정리하고자 한다. 1. 람다(Lambda)식이란? - 람다식(Lambda Expression)이란 함수를 하나의 식(Expression)으로 표현한 것. - 함수를 람다식으로 표현하면 메소드의 이름이 필요 없기 때문에, 람다식은 익명 함수(Anonymous Function)의 한 종류. (함수이지만 함수를 따로 만들지 않과, 코드한줄에 함수를 써서..

article thumbnail
[SpringBoot] 스프링부트 + 슬랙(slack bot) 연동하기
BackEnd/Spring 2022. 7. 10. 15:55

예전에는 서비스를 운영하다 보면 직원들에게 알림(장애, 배치, 반영 등)을 알려주기 위해 메시지를 보내거나 하였지만, 최근에는 대부분 슬랙(Slack)이란 메신저를 사용한다. 대부분의 회사가 초기에 구축을 해두어, 업무시에는 간단한 양식을 추가하여 사용하고 있는데, 실제 구축하여 연동을 해보고자 하였다. 이번 글에서는 백엔드를 스프링부트로 하여 간단하게 슬랙을 연동해보도록 하겠다. 1. Slack Bot 생성하기 - 기본적으로 Slack에는 가입되어 있다고 가정하고 진행합니다. - 아래 사이트를 통해서 메시지를 보낼 Slack Bot을 생성합니다. - https://api.slack.com/ Slack은 미래의 업무가 이루어지는 곳입니다 Slack은 여러분의 팀과 소통할 새로운 방법입니다. 이메일보다 빠..

article thumbnail
[Java] Lombok 정리
BackEnd/Java 2022. 7. 6. 16:53

Java 언어를 사용해 개발을 하다 보면 DTO, VO 개발을 하다 보면 Lombok(롬복) 이란 라이브러리를 사용하여 개발을 하곤 한다.(물론 아직까지도 안 쓰는 회사도 있기도 하겠지만....) 이번 글에서는 자주 사용하는 Lombok 이란 라이브러리에 대해서 정리해보고자 한다. 1. Lombok 이란? - Java 의 라이브러리로 반복되는 메소드를 Annotation(어노테이션) 기반으로 코드를 자동으로 완성해주는 라이브러리이다. - Lombok 을 이용하면 Getter, Setter, ToString 등과 같은 다양한 코드를 자동 완성시킬 수 있다. - Lombok 을 이용해서 작성한 코드는 컴파일 과정에서 Annotation 을 이용해서 코드를 생성하고 이런 결과물이 .class 에 담기게 된다...

article thumbnail
[Spring] 문자열 유효성 검사(isEmpty(),hasText())
BackEnd/Spring 2022. 7. 3. 14:38

개발을 하던 도중에 종종 문자열 유효성 검증(ex: Null 검증)이 필요할 때가 있다. 해당 상황에서 사용하는 메소드를 살펴보고자 한다. 1. String.isEmpty() - Java에서 제공하는 String 클래스의 isEmpty()메소드가 있다. - 해당 메소드로 문자열 유효성 검사를 진행이 가능하다. - 그러나, 해당 메소드로는 Null 체크가 안되어, 로직에서 String이 null 일 경우에는 NullPointerException(NPE)이 발생한다. - 아래 이미지에서와 같이 length로 길이는 체크하지만 null은 체크하지 않는다. 2. (deprecated)StringUtils.isEmpty() - 스프링에서 제공하는 Util 클래스 중 StringUtils 클래스에도 isEmpty(..

article thumbnail
[MySQL] on duplicate key update(Insert 시 값 존재하면 Update)
BackEnd/DataBase 2022. 7. 1. 16:06

테이블을 생성 시, 중복 저장을 막기 위해 다양한 컬럼에 Unique Key 를 등록한다.(Primary Key와는 다름) 이때, 데이터를 Insert 하는 경우, Unique Key 가 존재하는 값에 대해 실행하면 에러가 발생한다. 이러한 경우에 해당 row(데이터)를 Delete 후 다시 Insert 하는 방법도 있지만, 삭제에 대한 위험요소도 있다. 이때, on duplicate key update 를 사용하여 Unique Key 값이 있는 경우에 Insert 가 아닌 update를 해주는 방법이 있다. 1. Table(테이블) 생성 - 간단하게 테이블을 생성한다. //기존 테이블 삭제 DROP TABLE TEST_MEMBER; //테이블 생성 CREATE TABLE TEST_MEMBER ( mem..

article thumbnail
[Java] String, StringBuffer, StringBuilder 차이 및 장단점
BackEnd/Java 2022. 6. 26. 13:48

Java 에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder 가 있습니다. 항상 개발할때 대부분 String으로 사용하였는데, 작은 시스템에서는 크게 이슈가 발생하지는 않습니다. 그러나 큰 서비스와 시스템에서는 연산횟수가 많아지거나 멀티 쓰레드, Race Condition 등의 상황이 발생하면서 무작정 String으로만 사용한다면 성능에 큰 문제가 발생합니다. 이번 글에서는 각 특징을 이해하고, 상황에 맞는 적절한 클래스가 무엇인지 정리해보도록 하겠습니다. 1. String vs StringBuffer/StringBuilder - String 객체는 한번 값이 할당되면 그 공간은 변하지 않으며, 이것을 불변(Immutable)성 이라 합니다. - Str..

article thumbnail
[DB] Join(조인) 정리하기
BackEnd/DataBase 2022. 5. 7. 16:32

1. Join(조인) 이란? - 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것 - 즉, 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법 - 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다. - 아래 그림은 조인을 쉽게 이해하기 위한 그림이다. - Join의 종류 INNER JOIN : 내부조인(교집합) LEFT/RIGHT JOIN : 부분집합 OUTER JOIN : 외부조인(합집합) 2. DB에서의 조인 필요성 - 관계형 데이터베이스의 구조적 특징으로 정규화를 수행하면 의미 있는 데이터의 집합으로 테이블이 구성되고, 각 테이블끼리는 관계(Relationship)를 가진다. - 이와 같은 특징으로 관계형 데이터베이스는 저장 공간의 효율성과 확장성이..

article thumbnail
[DB] Transaction(트랜잭션) 정리하기
BackEnd/DataBase 2022. 5. 7. 15:21

1. Transaction(트랜잭션)이란? - 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 - 데이터베이스의 작업 중 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미 - 예를들어, 게시판으로 생각해자면 다음과 같다. 게시판 목록을 확인한다. 사용자는 새로운 게시글을 작성하고, 저장 버튼을 누른다. 게시판 목록에서 작성자가 작성한 글이 포함된 목록을 확인한다. - 이러한 과정들이 모두 합쳐서 "게시판 작성" 이라는 하나의 작업 단위를 구성한다. 2. 트랜잭션의 정의 - 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위 - 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위 - 하나의 트랜잭..