본문 바로가기

국비지원_핀테크

22일차_ [java] javaFX DB연동, 회원가입 구현

 

 

 

 

 

javaFX DB 연동

( 21일차의 회원가입 구현 내용에 이어서 회원 정보를 DB 와 연동 )

 

 

 

DB 에 저장할 테이블과 컬럼 생성

 

MemberDTO 클래스에 자료를 담을 변수를 선언, getter / setter 생성

 

MemberServiceImpl 클래스에 DTO 객체 생성하여 사용자가 입력한 값을 저장 ( 취미는 합으로 결정 : 만약 음악, 영화 두 개를 선택했다면 3 값을 저장 )

 

MemberServiceImpl 에 DAO 변수 선언 및 생성자 선언하여 dao 객체화

 

DAO 객체 생성하여 저장된 값을 가지고 있는 dto 객체를 매개변수로 넘김

 

module-info 에 java.sql 추가 ( import 로 자동으로 추가되지 않으므로 프로젝트 우측 클릭 해서 자동으로 module-info 생성하거나 직접 넣어줘야 함 )

 

위 코드 실행 시 오류코드 발생 ( ojdbc8 을 추가해주지 않았기 때문!!! )

 

ojdbc8 을 추가해줘야 함 ( DB 와 연동하기 위해서 )

 

DB 연결 성공

 

쿼리문 작성하여 dto 객체에 저장된 값을 DB 에 저장

 

코드 실행 영상

 

age 컬럼의 값이 10 바이트라 20대 미만, 50대 이상 은 12 바이트 값이라 저장이 되지 않는 오류가 발생 > age 컬럼의 값을 늘려주면 해결 완료

 

 

 

 

 

- 무한 로딩 오류 발생 -

※ DB 에 데이터를 저장하고 다시 확인하려 sqldeveloper 로 쿼리문을 사용해서 테이블의 행을 삭제한 뒤 다시 데이터 추가를 시도하니 무한 로딩이 발생함 > sqldeveloper 에서 쿼리문을 실행한 뒤 commit 해주지 않아서 eclipse 에서 커밋이 진행될때까지 로딩을 반복함 > sqldeveloper 는 무조건 쿼리문 작성한 뒤 commit 을 해줘야 함!! ※

 

>>> 테이블 생성, 테이블의 정보 수정은 커밋이 필요하지 않지만 값에 대한 수정은 무조건 커밋을 해줘야 한다!!!

 

 

 

 

 

DAO 에서 실행 결과를 성공 : 1 , 실패 : 0 으로 반환받아 MemberServiceImpl 에서 처리

 

 

 

 

 

이제 어제 로그인을 가상의 데이터로 연결해 놓은 부분을 실제 DB 와 연동

 

LoginServiceImpl 에 DAO

 

javaFX 에서 사용자가 입력한 아이디 값을 받아 dao 의 getUser 메소드에 전달하여 확인한 뒤 반환된 dto 값을 저장

 

getUser 메소드를 LoginDAO 클래스에 생성

 

LoginDAO 에 사용자가 존재한다면 값이 담긴 id, pwd, name 이 담긴 dto 값 반환, 사용자가 존재하지 않는다면 null 값이 담긴 dto 를 반환

 

코드 실행 영상

 

알림 창은 모든 클래스에서 동일하게 사용하는 것이니 CommonService 인터페이스로 따로 구현 ( 인터페이스에 메소드를 static 으로 실체화는 할 수 있음, 일반적인 메소드는 구현 불가능 )

 

기존에 LoginServiceImpl 에서 따로 사용하던 alert 주석 처리 이후 CommonService 에 구현한 alert 로 대체

 

MemberServiceImpl 에서 Alert 가 필요한 부분에 CommonService 인터페이스에 생성한 알림창 메소드 사용

 

MemberServiceImpl 에서 Alert 가 필요한 부분에 CommonService 인터페이스에 생성한 알림창 메소드 사용

 

스테이지를 닫는 코드도 중복되므로 따로 CommonService 인터페이스에 static 으로 구현하여 고용으로 사용

 

LoginServiceImpl 에 기존에 창 닫는 코드 주석처리 후 CommonService 에 구현한 코드 적용

 

MemberServiceImpl  에 기존에 창 닫는 코드 주석처리 후 CommonService 에 구현한 코드 적용

728x90