ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (국비교육) 17 - 2회 시험 + Mariadb 다운 + 자바와 데이터베이스 연결(+기능단위 쪼개기)
    개발/국비교육 2023. 6. 23. 09:33

    ■ cache pool (중요x)

     

     

    integer 은 처음에 cache pool 에 저장된다.

    cache pool = 1byte = 바이트 영역이라 

    true 값이 나온다.

                              

    바이트 영역을 넘어가면 용량을 넓혀서 저장한다.

     

    R타입의 경우 == 은 객체 주소값 참조한다라고 기억

     

    ■ Mariadb Connectors 다운로드

     

     

    mariadb Connectors 클릭

     

     

    java 8+ connector 로 선택

     

    ■ 자바와 데이터베이스 연결하기

     

     

    Build Path -> Configure Build Path

     

     

    Libraries -> Classpath -> Add External JARs

     

     

    여기서 우리는 Driver 를 이용할 것이다.

     

     

    String url = "jdbc:데이터베이스://아이피:포트/디비명";

    String url = "jdbc:mariadb://127.0.0.1:3306/employees"; 
    String url = "jdbc:mariadb://localhost:3306/employees"; 

     

    127.0.0.1 혹은 localhost 로 작성해도 상관없다.

     

     

    JDBC 란 자바에서 제공하는 데이터베이스와 연결하여

    데이터를 주고 받을 수 있도록 하는 인터페이스이다.

     

     

     

    우리는 자바 밖 외부 jars 파일을 사용해서 접속하고 소통하기 위해

    자바 영역 밖으로 나가야하고, 나갈때는 try catch를 써줘야 한다.

     

    예외일 경우 어떻게 처리하는지 catch 로 작성준다.

     

     

    Class.forName() 을 이용해서 드라이버 로드

    DriverManager.getConnection() 으로 연결 얻기

    Statement stmt = conn.createStatement(); Statement 객체 생성

    ResultSet rs = stmt.executeQuery("SELECT * FROM employees LIMIT 10"); 객체의 결과를 ResultSet 으로 받기

     

     

    해당 부분을 불러오지 못하면 접속 객체가 없다고 뜬다.

     

     

    DB 는 1부터 시작이다.

    따라서 첫 번째 것을 가져와야 해서 rs.getString(1) 해줬다.

     

     

    COUNT(*) 로  employees 개수를 구할 수 있다.

     

     

    Employee가 없으니 class Employee 를 만들어준다.

     

     

    Employee 클래스에 필요한 필드값 다 등록해준다.

     

     

    외부에서 함부로 변경하지 못하도록 privae 설정해두고,

    이를 메소드 getter setter 로 불러주면 이용 가능하다.

     

     

    한번에 게터 세터 만드는 방법은 

    Source -> Generate getter~ -> Select All -> 생성

     

     

    Class.forName() : 드라이브 호출

    conn = DriverManager.getConnection : conn에 접속 정보 저장 (URL, ID, PW)

    stmt = conn.createStatement(); 객체 생성해서 stmt에 저장해라. / 실제 일은 stmt 이 진행

    String sql = "SELECT * FROM employees LIMIT 10"; // 할일

    rs = stmt.executeQuery(sql) : 쿼리 문장 실행한 값을 rs 저장

    rs.next() : next() 뽑을 값 있으면 true 가 나온다.  while 넣어서 값 다 출력해주기.

     

     

    java에서 자동으로 닫지만 확인차 그냥 한 번 더 try catch 를 통해 확실히 닫아준다.

     

     

    이제 해당 저장된 값을 for each 구문을 통해 출력해준다.

     

     

    혹은 for 구문을 통해서도 출력이 가능하다.

    List 로 만들어진 Employee 형태의 멤버를  만큼을 출력할 것으로 member.size()를 통해 반복 횟수를 정하고,

    member.get(i) 는 get() 메소드를 통해 리스트의 번지를 가져오고

    Employee 에서 사용할 수 있는 메소드 getEmp_no() 를 통해 출력한다.

     

    ■ 기능 단위로 쪼개서 DB 연결하기

     

    * EmployeeDTO

     

     

    - 데이터 전송객체(DTO) : 데이터베이스에서 온 값을 담을 그릇

    ex) 게시판 1줄 dto 1

     

    * DBConnection

     

     

    DBConnection 은 데이터베이스 접속 정보를 저장하는 기능을 합니다.

    Class.forName() 을 통해 드라이브 연결해준다.

    밑줄 오류는 try/catch 넣어주면 해결된다.

     

     

    불러오는 정보를 url 에 저장하고 conn에 접속 정보 저장한다. (URL, ID, PW)

    그리고 getConn() 의 메소드가 return conn; 이기 때문에 호출되면 접속 정보를 저장하는 메소드가 된 것이다.

     

    * EmployeesDAO

     

     

    데이터베이스에 접속해서 일을 하는 DAO 이다. 

     

    10명을 뽑을 것으로 10명을 뽑는 selectList() 라는 이름의 메소드를 만든다.

    우리가 이전에 만들었던 List로 EmployeeDTO 타입의 list를 만들어준다. 

     

    DB 접속 정보를 가져온다.

    DB를 가져오기 위해서는 DBconnection 접속 정보 타입의 객체를 생성하고,

    DBconnection 에 저장된 getConn() 메소드를 통해서 접속 정보를 conn 에 저장한다.

     

    SQL문을 만들어준다.

    우리가 실행할 것을 String 타입의 sql 에 저장하고

    Statement  stmt 와 ResultSet rs 를 null 값으로 각각 저장해준다.

     

     

    conn.createStatement() 를 통해 stmt 에 객체를 생성하고

    stmt.executeQuery(sql) 을 통해 실행해주고 그 값을 rs 에 저장한다.

     

    while 문을 통해 이제 list 에 값을 넣어줘야 한다.

    넣는 방법은 우리가 생성한 EmployeeDTO 형태의 새로운 객체 dto를 생성해준다.

     

    연결하여 뽑은 값이 rs 에 저장돼 있으므로 해당 번지의 타입과 번지를 고려하여

    해당 값을 저장해야 함으로 set 메소드를 통해 각 필드값에 그 값을 저장하도록 만들어준다.

     

    각 1~6번지 값을 list.add 를 통해 모두 저장해준다.

     

    그리고 이는 return list 값을 하게 된다.

     

    * Employees

     

     

    이제 Employees 클래스에서 실행하는 EmployeeDAO 타입을 가지는 dao 객체를 만들어주고,

    dao.selectList() 메소드를 실행한 값을 list 에 넣어준다.

     

    이를 for each 구문으로 출력하면 우리가 원하는 값을 얻을 수 있다.

     

    * 2회차 시험문제

    1. 자바의 기본타입(primitive type)이 아닌 것을 고르세요. 1) String

     1) String
     2) int
     3) boolean
     4) double
     5) char

     

    2. 보기의 자바 코드 출력 결과를 고르세요. 2) 5

    System.out.println((3 + 8) / 2);

     

    [문항3]  보기의 자바 코드 출력 결과를 고르세요. 3) 5.5

    System.out.println((3 + 8) / 2.0);

     

    [문항4]  자바에서 조건문(분기문)을 작성할 때 사용되는 키워드를 고르세요. 4) if

     

     1) let
     2) const
     3) var
     4) if
     5) public

     

    [문항5]  자바에서 반복문을 작성할 때 사용되는 키워드를 고르세요. 5) while

     

     1) final
     2) let
     3) switch
     4) if
     5) while

     

    6. [문항6]  자바에서 break; 문의 역할을 고르세요. 1) 반복문을 종료할 때 사용된다.

     

     1) 반복문을 종료할 때 사용된다.
     2) 프로그램을 종료할 때 사용된다.
     3) 메소드를 종료할 때 사용된다.
     4) 클래스를 종료할 때 사용된다.
     5) 객체를 종료할 때 사용된다.

     

    [문항7]  자바 switch 문에 사용할 수 있는 자료형이 아닌 것을 고르세요. 3) long

     

     1) int
     2) String
     3) long
     4) short
     5) char

     

    ※ 최대가 int 까지이다.

     

     

    8. [문항8]  조건문과 반복문에 대해 잘못 설명한 것은 무엇입니까? 4) 

     1) if 문은 조건식의 결과에 따라 실행 흐름을 달리할 수 있다.
     2) break 문은 switch 문, for 문, while 문을 종료할 때 사용할 수 있다.
     3) for 문은 카운터 변수로 지정한 횟수만큼 반복시킬 때 사용할 수 있다.
     4) switch 문에서 사용할 수 있는 변수의 타입은 int, double이 될 수 있다.

     

    [문항9]  문자열의 길이를 리턴하는 String의 메소드를 고르세요.  2) length

     

     1) len
     2) length
     3) size
     4) width
     5) height

     

    [문항10]  String 타입이 가지고 있는 메소드를 두 개 작성하세요.

     

    length, indexOf, contains, split, equals, charAt, substring, toUpperCase, toLowerCase

     

    https://escapefromcoding.tistory.com/127

     

    Wrapper class / Integer cache pool

    기본타입 래퍼 클래스 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean Wrapper class란 자바의 기본 데이터 타입(primitive)을 객체 형태의 참조타입으로 만든 것이다. primit

    escapefromcoding.tistory.com

     

    https://homzzang.com/b/java-14

     

    홈짱닷컴

    홈페이지 제작, 그누보드 강의, 웹코딩, HTML, CSS, JAVASCRIPT, JQUERY, PHP, SQL

    homzzang.com

     

    * 요청사항 

    DTO, VO 차이 논문으로 쓰기..ㅠ

    DTO(Data Transefer Object) -> EmployeeDTO (데이터 전송 객체)

    VO(Value Object) -> 값 객체  

    ※ 배달의 민족 DTO VO 역사, 왜 같은 이름으로 부르는지

Designed by Tistory.