일반적으로 데이터를 영구적으로 저장하고 사용하기 위해 데이터베이스를 사용한다.

todo 예제에서 card 정보를 데이터베이스에 저장하고 사용하고 있다. 그런데 이번 todo-backend 예제에서는 직접 데이터베이스와 통신하는 코드를 작성하지 않았다. 데이터베이스와 연결, 쿼리 실행 및 결과 데이터 가져오기 와 같은 기본 작업은 어디서/어떻게 하고 있을까?

자바 애플리케이션에서 데이터베이스와의 연동을 위해 사용하는 기술을 알아보자

JDBC(Java Database Connectivity)

자바 프로그램이 데이터베이스와 연결되어 데이터를 주고받을 수 있게 해주는 인터페이스이다. (DriverClass, Connection, PreparedStatement, ResultSet)

백기선의 스프링 데이터 JPA 강좌 중

백기선의 스프링 데이터 JPA 강좌 중

JDBC 사용 예시

try(Connection connection = DriverManager.getConnection(url, username, password)) {
	System.out.println("Connection created: " + connection);
	//String sql = "CREATE TABLE card (id int, title varchar(255), assignee varchar(255), status varchar(255), priority int);";
	String sql = "INSERT INTO card VALUES('study spring', 'son.lee', 'TODO', '1');";
	try(PreparedStatement statement = connection.prepareStatement(sql)) {
	    statement.execute();
	}
}

하지만 JDBC를 직접 사용하는 것은(예제) 아주 번거롭다. (드라이버 로딩, 커넥션 맺고 끊기, 데이터 가져오기, ResultSet 매핑)

JDBC를 직접 사용하면 아래의 불편한 점이 있다.

위 불편함을 개선하기 위해 JDBC 대신 도메인 모델을 사용할 수 있다.

도메인 모델 사용

Card card = new Card("study spring", "son.lee", "TODO", 1);
cardRepository.save(card);