[2023.10.17] 개발자 교육 17일 차 : 강의-복습, DB연동, API [구디 아카데미]

DaramGee·2023년 10월 17일
0
post-thumbnail

오늘 정리

싱글톤? 초기에 한 번만 사용되도록 설계하는 것이 필요한 경우가 있다.(예, getInstance처럼 서버가 연결되었던 흔적이 있으면 더는 서버를 새로 만들지 않는 것처럼)

자바는? 자바는 단일 상속만 가능하다.- 다중상속은 불가함 - 다중상속의 단점을 보완하기 위해 인터페이스가 제공된다. 단, 인터페이스는 여러개를 implements할 수 있다.(추상클래스, 인터페이스는 설계관점에서 중요함)

복습

  • DB연동 4단계
    1. 데이터베이스 드라이버 로드(연경통로 확보) : JDBC 드라이버 로드
    2. 연결 생성: 실제로 데이터베이스와의 연결을 생성(연결 정보를 설정하고, 해당 정보를 기반으로 데이터베이스 서버와 통신할 수 있는 연결 객체(Connection Object)를 생성)
    3. 쿼리 실행: 연결 객체를 사용하여 SQL 쿼리를 실행(CRUD(Create, Read, Update, Delete) 작업 또는 다른 유형의 쿼리 작업을 수행)
    4. 결과 처리 및 자원 해제: 쿼리 실행 후 반환된 결과를 받아서 필요한 처리 작업을 수행
  • 오라클이 데이터 조회하는 순서
    - DML문을 파싱
    - DBMS가 실행계획을 작성하여 옵티마이저에 넘김
    - 옵티마이저가 실행계획에 따라 데이터를 찾음
    - open(객체 접근)..cursor(ResultSet)..fetch(메모리에 올리는 과정)..close

강의 내용

  • 메소드

    • printStackTrace(); → 디버깅 시 유용한 메소드(라인번호와 원인 낱말카드 출력)
    • getInt();
      • 숫자보다는 String으로 직접 보여주는 것 좋음.
  • 제네릭

    • 어떤 경우에 제네릭을 Map으로 가져갈 것인가???
    • List<Map<String, Object>> 조인 시 선택!
  • SQL 정규화 - (https://sodayeong.tistory.com/106)

    • 3단계 까지만!

    • 관계형태에 따라 정규화 필요?

      • 1:1/1:n/n:n
      • 조인하지 않는다(카타시안의 곱? 모든 경우의 소가 조회가 되다보니 쓰레기값이 포함되고, 데이터가 복제될 수 있음.)
      • 데이터 목적으로만 사용
      • 업무적 정의, 설계가 덜 되었고, 감춰진 집합이 더 있어야 함.
      • 네츄럴 조인?(equal 조인)
        • 양쪽 집합에 모두 존재하는 것만 출력함.
      • ERwin 실습
        • Logic phisical 선택 시 DML문까지 사용 가능
  • Oracle

    • 데이터 수 조회와 같은 기능 사용 가능.

      SELECT '우리 회사의 사원 수는 '|| count(empno)|| '입니다.'FROM emp;
      --우리 회사의 사원 수는 14입니다.
  • 우편 작업 - ERwin을 작업하여 오라클로 테이블을 가져올 수 있음.

    • generate시 아이디로 로그인하여 진행
    • 톱니바퀴 보고 설정
      • 데이터 설정
      • (데이터, 스키마, 스노리지, 머터리얼, 뷰, 트리거,
      • 테이블 테이블 시노민 체크 ,
      • 뷰, 테이블, 트리거 모든 옵션 해제하기)
      • index pk만 남겨두기
      • refe - 외래키만
    • 데이터 가져오기(import)
      • import → table data

      • object 입력→show data

        SELECT deptno, dname FROM dept;
        
        SELECT empno, ename, sal FROM emp;
        
        SELECT empno, ename, sal, ename 
        FROM   emp, dept
        WHERE emp.deptno = dept.deptno;
        
        SELECT deptno FROM dept;  --인덱스를 읽어서 조회
        
        SELECT dname FROM dept;  --테이블 access 하여 조회
        
        SELECT rowid rid FROM dept; --몇번째로우에 있는 상수값/??
        
        SELECT
        FROM dept
        WHERE rowid = '' ;
        
        SELECT '우리 회사의 사원 수는 '|| count(empno)|| '입니다.'FROM emp;
        
        SELECT
                    /*+index_desc(dept pk_deptno) */ deptno
          FROM dept;
                    
        --주석 : Ctrl B / Ctrl Shift B
        --해당 셀렉트문 드래그 한 뒤  ctrl enter , ctrl e
        -- /* + */  힌트문 : 개발자의 생각을 옵티마이저에게 전달하는 코드
        --List 순서가 있따 - 2차가공 - 공정 늘어남 - 속도 느림
        
        SELECT dname FROM dept
        ORDER BY dname desc;
        
        SELECT 
                    deptno, dname, loc
          FROM dept
        WHERE deptno =: x; --파라미터자리
        select* from zipcode_t;
        
        edit zipcode_t;
        
        select count(uid_no) from zipcode_t;
        select  zipcode, address
        from zipcode_tZIPCODE_T 
        where dong like '당산' || '%';

강의 마무리

  • List/Map 사용 연습하기
  • 오늘 강의 내용 복습하기

0개의 댓글