포스트

LG CNS 부트캠프 학습일지 19일차

학습 내용

  • Optional<T> 을 반환하는 메소드 만들기
  • 관계형 데이터베이스의 기본

Optional<T> 을 반환하는 메소드 만들기

Optional<T>가 왜 만들어졌는지 생각해보자.

Clean Code 저자는 null을 반환하는 메소드를 만드는 것을 지양하라고 했다. 대신에 예외를 던지라고 했다. 하지만 그 조언을 따르지 않는 사람이 있고 우리는 null을 반환하는 메소드를 마주할 수 밖에 없다.

어떤 함수(메소드)가 객체를 반환하면 그 객체를 사용하기 전에 그 값이 null인지를 확인해야 한다. 그렇지 않으면 null의 메소드를 호출하려고 하게 되고 NullPointerException이 발생한다. 하지만 메소드 반환값을 다룰 때마다 null 값을 확인하면 문제가 생긴다. 코드의 가독성이 떨어진다는 것이다. 조건문이 반복되기 때문에 프로그램의 정상흐름이 한 눈에 보이지 않게 된다. 하지만 Optional<T>은 객체가 null인지 여부를 확인하지 않고 코드를 작성할 수 있게 해준다.

1
2
3
4
5
6
7
8
9
10
11
public Optional<MyObject> getOptionalMyObject() {
	return new MyObject();
}

public void otherMethod() {
	Optional<MyObject> optional = getOptionalMyObject();

	MyObject object = optional.orElse(new MyObject());

	optional.orElseThrow(); // NoSuchElementException
}

결국 가독성이 좋고 이해하기 쉬운 코드를 작성하기 위한 자바 언어 설계자들이 고안해낸 것이다.

관계형 데이터베이스의 기본

자바 기본문법을 배우고 스프링부트를 배우기 전에 데이터베이스 사용법과 SQL 언어 문법을 배우기 시작했다. 정보처리시가 시험에도 나오는데, 필기시험을 볼 때는 벼락치기로 기출문제만 풀었기 때문에 정확한 문법은 잘 모른다.

그래도 완전 생소한 것은 아니다. 마인크래프트 서버 데이터를 부분적으로 삭제할 때, SQL을 사용해서 원하는 데이터를 필터링했었다. 물론 대화형 인공지능의 도움을 받았지만 말이다. 그래도 이제 제대로 기본기를 배운다는 느낌이었다.

데이터베이스란 무엇인가, 어떤 조직을 생각해보자. 조직 구성원들 사이에서 소통하기위해 유지관리하는 데이터가 있을 것이다. 하지만 각 부서가 별도로 데이터를 관리하면 데이터가 중복되어 효율성이 떨어지고 데이터가 일치하는지 여부도 확인해야 해서 번거롭다. 데이터베이스는 데이터를 저장하는 곳을 통합해서 중복을 줄이고 데이터의 무결성을 보장하기 위한 것이다.

DDL, DML, DCL 이라는 용어가 나온다. 데이터 정의어, 데이터 조작어, 데이터 제어어이다. Define, Modify, Control을 그대로 번역한 것이다. 우선 데이터베이스에서 원하는 정보를 얻는 방법부터 배웠다. SELECT를 사용한다.

1
2
3
4
5
6
7
8
9
SELECT * FROM employees;

SELECT SALARY FROM employees;

SELECT DISTINCT AGE FROM employees;

SELECT ADDRESS AS `HOME ADDRESS` FROM employees;

SELECT * FROM employees WHERE AGE = '30'

프로그래밍 언어와 다른 점은 어떤 값이 동일한지를 따질 때 이등호(==)를 사용하지 않고 일등호(=)를 사용한다는 것이다. 그리고 30 같은 값을 그대로 사용하지 않고 따옴표로 둘러서 사용한다. 문자열의 경우 ` (back tick) 을 사용해서 묶을 수 있다. 다만 공백이 들어간 문자열을 하나로 묶으려고 하지말고 언더바를 사용하는게 더 좋을 것 같다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Comments powered by Disqus.