
SELECT * FROM emp
-> 행 ( 칼럼, 칼럼, 칼럼, 칼럼 ... )
-> 행 14줄
커서를 내리면서 출력은 되나 커서를 다시 올리는건 안됨
중간에 데이터를 다시 출력할수가 없다는 소리 ( 출력하면 메모리에서 데이터 사라짐 )
-> 행 ( EMPNO, ENAME, JOB, MGR, SAL, COMM, DEPTNO)
int string string int int int int -> 이걸 클래스에 한번에 담을예정, ( 클래스만 저걸 다담을수 있다)
-> 행 14줄을 ArrayList에 담아넣고 빼서 쓰면 된다.

DB의 하나의 행 = 자바의 class 함수(entity)
Emp 라는 Entity를 만들었다.

private는 행위를 통해서 상태를 바꾸기 위해 전부다 붙혀야함.
getter, setter 이야기 맞다.

스키마의 순서와 같이 입력해야 보기 편함.


만드는법과 완성품.
저번에 한번 다뤘기 때문에 넘어가겠다

while은 14바퀴 돌아야함.
그렇다고 for로 잡으면 안됨 ( 데이터는 추가 및 삭제가 될 수 있기 때문. )


서로 차이점이 뭘까?
main 스택 안에 try스택 안에 while스택이 열려있다.
main에 int a =10잡고 try나 while에서 출력하면 출력됨 ( main이 스택이 더 넓음 )
하지만 try나 while안에 잡고 main에 출력시키면 안됨 ( 스택 종료시 데이터 날라감 )
즉 왼쪽처럼 잡으면 emp를 heap에 14번 불러낸다는 소리다.
try에 Emp를 emp라 선언하게 된다면.
그럼 while스택이 종료되더라도, emp는 heap에 남는다. ( 스텍이 종료되지 않아 가비지 컬렉션 안됨 )

제네릭을 하나 만들었다.
-> 숫자를 지정하지 않는 방식으로 만드는 이유는 데이터는 추가 및 삭제가 될 수 있기 때문.

while에서 나오는 데이터를 추가함.
Emp emp = new Emp(); 를 안에 잡고 하단에 add를 추가한다면 heap에 emp가 남는다.
순서를 설명하자면
1. while 1번째 스택에 emp라는 변수가 만들어짐 ( heap에 new emp 가르킴 )
2. while 1번째 스택에 있는 emp가 heap에 있는 new emp에 값을 담아넣음
( while 1번째 스택에 있는 emp -- > heap에 있는 new emp 를 가르킴)
3. emps 0번지에 heap에 있는 new emp에 값이 저장됨.
4. 데이터 저장후 while 종료. ( while 스택에 있는 데이터 날아감 )
5. emps가 heap에 있는 new emp을 가르키고 있어 가비지 컬렉션이 안됨.
-> emps는 main스택에 존재하기 때문에 while이 끝나도 데이터가 안사라지는거
이러한 이유 때문에 제네릭은 항상 최상단에 만들어야함. ( 메모리에 항상 떠잇어야 하기 때문에 )

for문으로 받아내보자.

for문이 돌때 emps라는 메서드를 호출함 ( 점프한다고 표현 )
점프
- 위에서 아래로 쭉쭉 가다가 해당 메서드를 호출하면 그 위치에 있는 메서드를 불러야 함 그래서 점프라함

이렇게 한번만 가지고 오게 하면 해당 데이터를 다 불러올때까지 점프하지 않고 한번만 점프하게 할 수 있다.

이름만 호출해보니 데이터가 다 잘들어가있는 모습임.
'캠퍼스 > Java' 카테고리의 다른 글
| 55. JAVA로 DB추가,수정,삭제 (0) | 2022.08.16 |
|---|---|
| 54.JAVA로 DB 리드 (0) | 2022.08.16 |
| 52.오류 잡아내기 (0) | 2022.08.16 |
| 51.for문으로 그림 (0) | 2022.08.14 |
| 50. 자바와 DB 연동하기 (0) | 2022.08.12 |