<흐름 읽어보기>
▶ 사용자 → UI → SERVICE → (DAO) → DB
▶ DB(에서는 작업 여부에 따라 Mybatis를 통해) → DAO → SERVICE → UI로 전달
한 방향으로 갔다가 다시 한 방향으로 되돌아 온다.
최종적으로 받는 값은 int result이다.
0 or 1에 따라 작업이 성공했는지 아닌지 알 수 있다.
①User.ui는 사용자의 입장에서 화면에서 입출력해주는, 보는 부분을 처리해주는 역할을 한다.
②User.ui는 서비스 객체(UserService)를 만들도록 생성을 함.
③DB에 접촉하기 위해 dao쪽으로 코드를 보낸다.
④dao쪽에서는 요청이 들어온 것을 받아서 DB에 접속
: dao가 DB에 접속하기 위해서는 DB는 자바의 경계가 아닌 밖에 있는 개념이기 때문에 direct로 접촉하기 위해서는 여러 가지 설정 사항이 필요하다. 설정을 위해서는 db.properties가 필요하지만, 있어도 되고 없어도 된다.
파일 3가지가 필요하다.
1. db.properties
2. mybatis-config.xml
3. userMaooer.xml
db.properties(인증정보를 가지고 있음) 안에 들어있는 driver는 일종의 클래스이다. 오라클에서 자기네 오라클에 접속해도 된다는 것을 알려주기 위한 일종의 코드이다. (프린터기를 설정하는 것과 비슷한 개념이다.) 굳이 빼놓은 일은 회사 서버의 DB서버가 여러 대인 경우가 많기 때문이다. 손쉽게 수정 보안하기 위해서 db.properties를 파일로 빼놓는 것이다.
mybatis-config.xml은 db.properties의 정보를 읽어다가 접속을 할 수 있게 하는 정보들이 들어있다. mybatis-config.xml는 실제로 DB를 구동시킬 수 있는 정보들과 DB에 접속하고 데이터를 받아오기 위해서는 어떤 VO에 받아오는지에 대한 정보가 담겨있다. userMaooer.xml과 같이 쿼리가 어디에 있는지에 대한 정보가 들어있다.
db.properties와 mybatis-config.xml는 자바가 아니기 때문에 프로그램에서 UI, SERVICE, DAO를 구동을 시키는데 직접적으로 필요, 도음을 주는 것이 아니라 자바코드에서 사용할 정보만 제공해준다.
[정보를 주는 방향]
db.properties → mybatis-config.xml → MybatisConfig.java
MybatisConfig는 DB의 경계를 넘어가기 위서 Session 정보라는 것이 필요하다. DB에 접속하기 위한 정보를 주는 역할을 MybatisConfig.java가 한다. MybatisConfig.java는 세션 정보를 가지고 있다가 UserDAO가 달라고 할 때 던져주는 역할을 한다. UserDAO를 가지고 데이터를 주고 받고 하는 것이다. UserDAO가 구동을 하기 위해선 ①db.properties, ②mybatis-config.xml, ③MybatisConfig.java 안의 정보가 모두 필요하다. DB 안에 들어있는 테이블 안의 (select, delete, update)와 같은 쿼리문은 userMapper.xml 안에 있는 데이터들이 실제 DB 안에 들어있는 쿼리를 실행할 수 있게 한다.
이렇게 하면 다오로 타고 넘어간다.
dao랑 mapper쪽!이 헷갈릴 수 있다.
[delete]부터 다시 해보기!
delete()의 쿼리문을 상상하며 하기
delete from userinformation where userid = 'a01'
ui에서는 service로 삭제할 정보를 보낸다.
UserService에서 public int delete(String userid)
dao쪽에서 호출할 수 있도록
dao는 실제로 연결하는 클래스, 연결하는 session을 열어두는 작업을 해줘야 한다.
deleteUser(userid)는 정수값을 반환한다.
userMapper.xml로 가서 쿼리문 작성!
[input 수정]
//CRUD // 트랜잭션 commit insert, delete, update는 commit을 해줘야 한다.
[update]
update의 쿼리 생각해보기
[수정 전]
UPDATE userinformation
SET
userid= 'b01',//바꿀 수 없다. 삭제
userpwd = '1234',
username ='김길동', //바꿀 수 없다. 삭제(잘 바꾸는 정보가 아니기 때문에)
phone ='010-4444-5555',
birth = '91/11/23' //바꿀 수 없다. 삭제
WHERE
userid = 'a01';
[수정 후]
UPDATE userinformation
SET
userpwd = '1234',
phone ='010-4444-5555'
WHERE
userid = 'a01';
정보를 바꾸고자 한다면 내 아이디가 존재하는지 확인부터!
//데이터베이스로 가기 전에 확인해볼 코드들이 있다.
User u = service.selectOne(userid);
if(u != null) {
System.out.println("** 존재하지 않는 아이디입니다.");
return;
}
어디로 보낼 것인가 ui-> service
3개의 정보를 따로 보내는 것이 아니라 객체로 묶어서 보낸다.
보낼 정보가 없으면 null
update를 userservice에 만들어줌!
dao에도 update가 없기 때문에 오류가 뜸!
dao에 가서
SqlSession session = factory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
user받은 것을 전달!
mapper에 가서 쿼리문 넣어주기!
;은 절대 하지 않아요!
'개발자로 가는 길(국비지원과정) > 2. Oracle' 카테고리의 다른 글
[210603목] 새프로젝트 자바와 오라클을 연결해 게시판 만들기(인터페이스, 게시글 등록, 전체 글 조회, 글 삭제, 글 검색) (0) | 2021.06.03 |
---|---|
[210602수] 자바, 오라클 연동 전체조회, 새로운 프로젝트(게시판 board 생성) (0) | 2021.06.02 |
[210531월] 오라클, 자바 연동 복습 User (0) | 2021.05.31 |
[210530일] 오라클 데이터베이스 sql A분반 연습문제 (0) | 2021.05.30 |
10주차 질문 (0) | 2021.05.29 |