[자바개념정리] 흐름 및 전달인자 이해하기
[자료제공 : B반 안센세]
Main → UI → Service →Dao →(Mybatis) → DB
★전달인자로 뭘 보내고 가져와야 할지라는 고민을 해야 한다.
Main이라는 사람이 UI라는 공장을 돌린다.
그 공장에는 insert, delete, update, select 라는 생산 라인이 있다.
그럼 이제 UI 공장장은 사장에게 받은 주문을 처리해야 하는데, 'INSERT(삽입)' 주문을 받았다. 그렇다면 '오라클'이라는 해외지사에 완성품을 보내야 한다. 근데 부품인 String이나 Int를 개별 배송할 수는 없으니 'VO'라는 박스에 보내기로 한다.
'VO'를 저장(SET), 출고(GET)하는 회사의 이름(클래스명)이 'Board'라면
Board board = new Board();
→ Board라는 회사가 board라는 별명의 박스를 = new Board(); 보내주었다.
Board라는 브랜드가 주문제작한 board라는 박스에 (String, int) 부품을 열심히 담는다.
Board 박스를 가지고 Service라는 택배사로 gogo!
코드: Service.insertBoard(board)
Service 택배의 insertBoard 팀은 board를 받았지만 안타깝게도 '오라클'은 바다 건너에 있다.
그렇기 때문에 그것을 또 DAO라는 항공상에 보낸다.
코드: DAO.insertBoard(board)
DAO 항공사는 sqlsession Fatory라는 비행기를 가지고 있다. 비행기로 배송 gogo!
그래서 Mapper 공항에 내리면 외국이니까 다른 언어를 사용하는 환경이 된다. (오라클과 자바의 관계)
이제 오라클에 board 박스를 보내고 돌아가야 하는데 잘 보냈다는 영수증을 끊어가야 한다.
INT →(return)→ DAO →(return)→ SERVICE →(return)→ UI
그래서 'INT'라는 영수증을 가지고 왕복 비행기, 차를 타서 다시 UI 공장에 돌아온 INSERT
하지만 영수증에는 0원의 거래금액이 적혀있고,
if(result ==0)
system.out.println("저흰 거래 안해요. 삽입 실패"); 라는 결말을 맞는다.
<핵심 요약 정리>
우리가 UI의 공장장이라고 생각해 보자.
의식의 흐름:
오라클 실행을 생각해 보면
"(0 or 1)개의 행이 삽입, 삭제, 수정되었습니다. "라는 문구를 확인할 수 있는데 여기서 발생하는 0 혹은 1의 값을 가져와 1은 작업 성공을 의미, 0은 작업 실패를 의미한다.
▶INSERT
INSERT → 삽입한다 → 무엇을? 오라클에 넣을 제품을 → 제품 1개의 정보가 가득 담겨 있는 Board board를 가져가 삽입입해야겠군! → 삽입한 영수증을 받아와야지 → Board board를 가져가서 int result로 받아오면 되겠군.
ex) public int insertBoard(Board board);
insert into 테이블명 (컬럼명1, 컬럼명2, 컬럼명3) values(데이터1, 데이터2, 데이터3);
▶DELETE
DELETE → 삭제한다 → 무엇을? 오라클에 있는 제품을? → 삭제할 특정 제품번호를 가져가야겠군! → 삭제한 영수증을 받아와야지 → int board_seq를 가져가서 int result를 받아오면 되겠군.
ex) public int deleteBoard(int board_seq);
delete from 테이블명 where 컬럼명 = (조건);
▶UPDATE
UPDATE → 수정해야 한다. → 오라클에 있는 것을. → 수정할 상품을 가져가야 겠군 → 기존 상품은 현지에서 폐기를 하자 → 바꾸고 나서 영수증을 받아와야지 → VO 객체를 가져가서 int result로 받아오면 되겠군.
ex) public int updateBoard(Board board);
update 테이블명 set 컬럼명 = (수정할 데이터) where 컬럼명 = (조건);
▶SELECT
SELECT → 조회해야 한다. → 무엇을? → 오라클에 있는 제픔을
① 글 1개 조회→특정 제품만 볼 거라면 제품번호만 가져가야겠군
② 글 전체 조회 →그냥 전체 다를 볼 거라면 몸만 가면 되겠군
→ 사장님도 볼 수 있도록 제품을 가져와야 겠구나
→ ①int board_seq or ②( )를 가져가서 VO객체로 받아와야지.
①public Board selectOne(int board_seq);
select * from board where 컬럼명= (조건);
②public List<Board> selectAll();
select * from 테이블명;