TIL 2021.03.15

Kyu·2021년 3월 15일
3

TIL

목록 보기
64/322

오늘은 AWS에 우분투 OS로 서버를 열어서 거기에 MySQL을 설치하고 JDBC와 연결하는 것을 배웠다. 더 나아가서 JDBC의 문제점과 현재 MyBatis나 JPA를 왜쓰는지도 배웠다.

음, 배웠다기보다 클라우드 서버에 있는 DB를 로컬에서 JDBC로 조작할 수 있는 전체적인 윤곽을 호눅스와 함께 그려봤다고 해야할까?

AWS 라는 외부에 있는 서버를 단순히 내 컴퓨터로 원격으로 접속해서 나의 DB를 만들었다는 것 자체부터 일단 인상깊었다. 그리고 JDBC를 이용해서 그 DB를 조작한다는 것은? 어마머마하다 👏👏👏

일단 여기서 중요한 부분은 일반사용자를 외부 접속허용하게 해주는 부분이라고 생각했다.

일반사용자 외부 접속 허용

$ sudo -i
$ cd /etc/mysql
$ grep -r 'bind'
# bind-adress=127.0.0.1 내용 주석처리 (앞에 #을 붙임)
$ cd /etc/mysql/mysql.conf.d
$ sed -i 's/bind/# bind/' mysqld.cnf
$ cat mysqld.cnf | grep bind
$ sudo systemctl restart mysql
$ exit

이렇게 해줘야 JDBC에서 AWS에 만들었던 인스턴스에 할당된 주소를 통해 접속할때 문제가 생기지 않는다. (추측)

JDBC를 쓰면 불편하다. JDBC를 이용하면 쿼리를 자바파일 안에 넣어서 이렇게 조작하니 직접 연결하고 해제하고 그런 메서드들도 불편하지만, 쿼리문이 자바파일안에 같이 있으니 유지보수면에서 좋지가 않다.

이런 것을 처음에 프로시져라는 것을 이용해서(?) 쿼리문을 외부에서 만들고 코드에서는 그것을 부르기만 하도록 하면 되도록 해서 사용했다. 요즘도 게임이나 네이버카페(?)는 그렇게 쓴다고한다.

그러나 프로시져도 문제점이 있다. 예를 들어서 코드의 버전이 변경되면 쿼리문도 그에 맞춰서 바꿔줘야하는데 이게 깃처럼 버전을 관리할 수 있는 게 아니라서 손으로 다 다시 바꿔줘야한다고 한단다.

그래서 요즘 한국에서는 MyBatis 를 이용한다고 한다. MyBatis는 XML파일에서 쿼리문을 관리한다. 문제점이있다면 이 쿼리문에 맞춰서 코드를 작성해야하기 때문에 객체지향적으로 코드를 만들수없다고 한다.

그래서 JPA를 쓰고 지금 나도 배우고 있는데, 문제점은 배우기가 어렵다고 한다. MyBatis는 디비잘하는 사람 자바잘하는 사람 이렇게 따로 있으면 되는데 JPA를 잘 사용하려면 JPA를 사용하는 사람이 디비와 자바를 동시에 잘알아야한다.(?)

profile
TIL 남기는 공간입니다

0개의 댓글