[웹 개발 환경-2] Database : postgreSQL

adam adam·2022년 9월 21일
0

postgreSQL

설명에 따라 다운로드 및 설치

설치 중 옵션값 변경 시 스스로 제어할 수 있는 옵션이 아니라면, 반드시 기본값대로 설치할 것

설명에 따르면,
port ; 5432
root user : postgres
root user password : 본인 기입 값
locale : korea

참고로, 나는

user : com
password : puter
locale : US

이다.

*password는 설명하다가 어짜피 보여지기에 적어둠. 명령어 parameter 값이구나 하게

PostgreSQL sample Data

postgreSQL에서 공식적으로 제공하는 기본 테이블과 데이터를 넣는다.

설명root user 기준 데이터 넣기에 따라 Data를 넣는다.

Download link of sample data을 다운로드 받으면 zip 형태인데 풀면 guide에서 요구하는 tar이다.

gui 인 pgAdmin4으로 load 하는 걸 강력히 강력히 추천한다. 이 또한 기본 제공 툴이다.

Client Tool

db 접근해서 data를 제어하는 도구. 다른 예시로는 oracle sql developer

dbeaver

설명과 postgreSQL port, root user, password 기본값에 따라서 연결

대체로 더 많은 것들이 gui로 표현되서 클릭해보면서 배울 수 있다.

dbeaver - postgreSQL 연결

pgAdmin4

postgreSQL 기본값으로 깔면 주는 툴, tutorial 등에서 사용해서 잠깐 겸함. 근데 dbeaver만큼 여러 DBMS를 지원할 지는 몰겠음

Persistence

설명에 의하면, Persistence (Architecture)란 데이터를 특정 DBMS에 종속되기 보단, data를 저장하는 방식인듯. 이 방법에는 여러 가지 기준이 있는데, 대표적으론 저장기간인듯. 휘발성/비휘발성 이런거

이런 점에서 persistence 관련 api, framework는 우선 노트북껐다켜도 보존해야할 중요데이터를 어디에 어떻게 저장할지를 도와주는 도구로 일단 마무리.

Persistence API ? framework ?

java persistence api - goto

persistence framework - goto

각자 잘 냅두고, 난 persistence 영역이라 일단 퉁친다. 거기에 난 mybatis니까 framework

mybatis framework

구멍가게 코딩단의 스프링 도서 기준

p90 : overview of mybatis

나는 공식문서를 보고 양자택일인 줄 알았는데... 그림과 같이 서로 보완 되는 것으로서 같이 써야 한다.

2개를 모두 써야한다는 걸 알고, 공식문서의 소개 부분을 읽으니까, 호환성이라는 게 이제야 보인다. 다만, 시작하기 스텝의 필요조건 mybatis-spring 2.0.7 을 쓰기 위한 최소 3.5 이상의 mybatis dependency는 예시에 보이지 않는다.

나는 이걸 보고 착각 mybatis-spring 2.0.7 의존성만 추가해서 문제가 있었다. 그럴수있지. 기계도 아니고. 한글번역해준거에 감사

추가 : mybatis and mybatis-spring 설명

p90 : mybatis and spring legacy prj

  • spring-jdbc
  • spring-tx
  • mybatis
  • mybatis-spring

4가지의 디펜던시가 필수적으로 필요하다고 한다. 2가지만 넣고 되는 글도 있는데...내가 안되서 패스, 그리고 tx도 써야하고

pom.xml 에 dependency 추가

https://mvnrepository.com/ 이라는 사이트, 다른말로 Central 사이트, central repository 등등에서

무료로 dependency를 제공한다. 상기 디펜던시를 검색하고, 마냥 최신버전이 아닌, 다른 디펜던시들과 호환되는 디펜던시를 써야한다.

가령, 가장 최신 버전의 spring-tx를 썼을때, 임의 선택한 mybatis dependency 는 최신 버전의 spring-tx를 아직 지원안할수도 있다. 여러 종류의 호환성은 디펜던시별로 설명된다.

goto

vscode로 눈을 소중히

p91 : root-context.xml and SQLSessionFactory

DB connection 관련 객체를 spring은 bean으로 바로 제공한다. Spring Framework가 아니었더라면, 수많은 class들을 손수 코딩하고 또 @Bean 등의 어노테이션으로 빈등록해야한다. 이러다가 손가락 나가는 거인듯

나는 root-context.xml에서 명시하여 호출만 하면 된다.

SQLSessionFactory: SQLSession 모음 bean, 아마 oop의 factory 패턴이 적용되어 bean으로 등록될듯

우선 root-context namespaces 에서 mybatis-spring 추가, xml file 상에서 namespace라는 개념을 쓰던 게 C++로 전달된건가 하고 일단 넘어감.

SqlSessionFactoryBean 추가

한편, 이러한 SqlSessionFactory 가 효과적인 connection pool로, 그리고 특정 DB, user(com)이 port 5432의 postgresql로 접근하도록 설정하는 설정 부분이 밑줄 그은 부분들이다 ; 빨간줄, 검정줄

!! 여기서 bean id는 datasource라고 하고, ref는 dataSource라고 해가지고 1시간 날림 !!
근데, 내가 이것들 다 손수 코딩했으면 최소 1일 날림

참고로, 나는 psql을 통해 com이라는 유저를 생성하였고, 그래서 root user인 postgres가 아니다.

결과 : junit을 통한 테이블 조회

추가적으로 관련 디펜던시 추가 설정해서 rest controller를 만들어서도 조회가능하다. jsp 화면 안만들어도 되서 편하다.

json, xml 리턴 시 필요한 디펜던시

https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.13.3

추가 : data load by psql

Legacy prj나 이로부터 빌드된 앱이 db에 접근하기 위해서는 url, username, password 생성이 필요하다.

공식 문서를 따라 데이터와 유저, com, 를 생성하고 필요정보를 수집해보자

example : postgresql user crud

CREATE USER miriam WITH PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';
CREATE USER com WITH PASSWORD 'puter' VALID UNTIL '2023-09-20';

난 언제쯤 오타를 안낼까, 내면 수정하면 되지

dummy data 설명/출처 보단, 우선 정리본을 추천

chcp65001 해도 한글이 깨지나 했는데, 해외 sample data에 한글이 없을듯?

오히려 한글이 아닌 무언가가 한글로 잘못 표기되다가 생기는 거 같음.

db 까보면 테이블이랑 데이터는 들어가있음. 어쩌면 내가 처음 개인 블로그에서 다운받은 dvdrental.tar가 다소 손상된 상태일 수 있다 정도 생각, 공식사이트 dvdrental.tar로 시도

그리고 다음부터는 심신의 안정을 위해 pgadmin이라는 gui 툴을 쓰자. 주는 데 써야지

유저 생성하고, 이 유저로 접근할 데이터를 세팅했다.

추가 : postgreSQL 12 공식 문서

0개의 댓글