09 자료구조, Collection API 실습
- Collection framework
- Collection
- 사전적 의미로는 요소(객체)를 수집해 저장하는 것
- Collection framework
- 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리
- java util 패키지 포함
- 인터페이스를 통하여 정형화된 방법으로 다양한 컬렉션 클래스 이용
- Collection
- 컬렉션 프레임워크의 주요 인터페이스
- List
- 순서를 유지하고 저장 (인덱스로 관리)
- 중복 저장 가능
- 종류
- ArrayList
- List<데이터타입> 변수명 = new ArrayList<>(); 형태
- 저장 용량을 초과한 객체들이 들어와도 자동적으로 늘어난다.
- 객체 제거시 자동으로 앞으로 1씩 당겨진다.
- 저장 용량 고정도 가능
- LinkedList
- List<데이터타입> 변수명 = new LinkedList<>(); 형태
- 추가, 삭제 속도는 ArrayList보다 빠르고 검색은 느리다.
- Vector
- ArrayList
- Set
- 순서를 유지하지 않고 저장
- 중복 저장 불가
- 종류
- HashSet
- Set<데이터타입> 변수명 = new HashSet<>(); 형태
- TreeSet
- HashSet
- Map
- 키(key)와 값(value)의 쌍으로 저장
- 키와 값은 모두 객체
- 키는 중복 저장 불가, 값은 중복 저장 가능
- 종류
- HashMap
- Map<키의데이터타입, 값의데이터타입> map = new HashMap<K, V>(); 형태
- TreeMap
- Hashable
- Properties
- HashMap
- List
- List 컬렉션의 주요 메소드
- 객체 추가
- add(index, element)
- 해당 인덱스 위치에 객체 추가
- add(object)
- 해당 객체를 맨 끝에 추가
- set(index, element)
- 해당 인덱스 위치에 저장되어 있는 객체를 주어진 객체로 변경
- add(index, element)
- 객체 검색
- contains(object)
- 주어진 객체가 저장되어 있는 지여부
- get(index)
- 해당 인덱스에 저장된 객체를 리턴
- isEmpty()
- 컬렉션이 비어있는지 확인
- size()
- 전체 객체수 리턴
- iterator()
- 저장된 객체를 한번씩 가져오는 반복자 리턴
- contains(object)
- 객체 삭제
- clear()
- 모든 객체 삭제
- remove(index)
- 해당 인덱스에 저장된 객체 삭제
- remove(object)
- 주어진 객체 삭제
- clear()
- 객체 정렬
- Collections.sort(리스트명)
- 오름차순 정렬
- Collections.sort(리스트명, reverseOrder())
- 내림차순 정렬
- Collections.sort(리스트명)
- 객체 추가
- Set 컬렉션의 주요 메소드
- 객체 추가
- add(element)
- 객체 검색
- contains(object)
- isEmpty()
- iterator()
- size()
- 객체 삭제
- clear()
- remove(object)
- 객체 추가
- Map 컬렉션의 주요 메소드
- 객체 추가
- put(key, value)
- 주어진 키와 값을 추가, 저장되면 값을 리턴
- put(key, value)
- 객체 검색
- containsKey(key)
- 주어진 키가 있는지 여부 확인
- containsValue(value)
- 주어진 값이 있는지 여부 확인
- get(key)
- 주어진 키의 값을 리턴
- isEmpty()
- keySet()
- 모든 키를 Set 객체에 담아서 리턴
- size()
- values()
- 모든 값을 Collection에 담아서 리턴
- containsKey(key)
- 객체 삭제
- clear()
- remove(key)
- 해당 키와 일치하는 값 삭제, 삭제 시 값 리턴
- 객체 전체 출력
- for-each 사용
- for (String key : map.keySet()) { System.out.println(map.get(key)); }
- Iterator 사용
-
Iterator<String> it = map.keySet().iterator(); while (it.hasNext()) { System.out.println(it.next()); System.out.println(map.get(it.next())); }
-
- for-each 사용
- 객체 추가
- Iterator (반복)
- 컬렉션(List, Map, Set)의 저장된 객체를 한번씩 가져오는 반복자 리턴
-
Iterator<데이터타입> it = 컬렉션명.iterator(); while (it.hasNext()) { System.out.println(it.next()); }
- 자바의 데이터 구조
- 변수
- Array
- 인덱스, 대량의 값
- List
- 인덱스, 대량의 값
- 추가, 삭제, 변경
- Set
- 중복, 순서없는 집합 구조
- Map
- Key-Value
- JSON, XML 데이터 구조와 연결 역할
- Class의 변수-값
- Key-Value
JDBC Programming
- JDBC (Java Database Connectivity)
- 자바 프로그램에서 데이터베이스 접속할 수 있도록 만든 API
- JDBC 프로그래밍 개요 (사용 클래스)
- JDBC 드라이버 코드
- System.setProperty()
- Class.forName()
- 데이터베이스 연결
- java.sql.Connection
- Statement 생성
- java.sql.Statement
- java.sql.PreparedStatement
- SQL문 전송
- java.sql.Statement
- executeQuery()
- executeUpdate()
- java.sql.Statement
- 결과 받기
- java.sql.ResultSet
- 연결 해제
- java.sql.Connection
- close()
- java.sql.Connection
- JDBC 드라이버 코드
- JDBC 프로그래밍
- JDBC 드라이버 로딩 (두가지 방법 중 택)
- System.setProperty(”jdbc.drivers”, “com.mysql.jdbc.Driver”);
- Class.forName(”com.mysql.cj.jdbc.Driver”);
- 데이터베이스 연결
- JDBC_URL = “jdbc:mysql://localhost:3306/sqldb”;
- Connection conn = DriverManager.getConnection(JDBC_URL, “DB아이디”, “DB비밀번호”);
- Statement 생성
- Statement stmt = conn.createStatement();
- 사용 후에는 stmt.close();
- SQL문 전송
- stmt.executeUpdate(”insert into 테이블명 values(’ “ + request.getParameter(”username”) + “’,’” + request.getParameter(”email”) + “ ‘)”);
- executeQuery()
- SELECT문 수행 시 사용
- executeUpdate()
- UPDATE, DELETE과 같은 문 수행 시 사용
- executeQuery()
- stmt.executeUpdate(”insert into 테이블명 values(’ “ + request.getParameter(”username”) + “’,’” + request.getParameter(”email”) + “ ‘)”);
- 결과 받기
- ResultSet rs = stmt.executeQuery();
- while문
-
while(rs.next()) { name = rs.getString(1); age = rs.getInt(2); }
- rs.close();
- 연결 해제
- 사용이 끝난 데이터베이스 연결 정보는 닫아주기
- try - with -resource 방법으로 처리
- JDBC 드라이버 로딩 (두가지 방법 중 택)
SQL로 데이터베이스 다루기
SQL문 기본
- 데이터베이스 생성
- create database if not exists 데이터베이스명;
- 데이터베이스 선택
- use 데이터베이스명;
- 주석문
- — 주석내용
- 테이블 생성
- create table 테이블명 ( 컬렴명 데이터유형 추가조건 );
- 추가조건 종류
- not null
- null이 아니어야 한다.
- auto_increment
- 값이 1씩 자동 증가
- primary key
- 기본키로 지정
- not null
- 추가조건 종류
- create table 테이블명 ( 컬렴명 데이터유형 추가조건 );
- 테이블 구조 확인
- DESC 테이블명;
- 레코드 추가
- insert into 테이블명 (컬럼명1, 컬럼명2, …) values (값1, ‘값2’, …);
- 모든 컬럼에 레코드 추가 시 insert into 테이블명 values (값1, ‘값2’, …);
- 테이블 데이터 전체 조회
- select * from 테이블명;
- 레코드 수정
- update 테이블명 set 컬럼명1=’바꿀값’, 컬럼명2=’바꿀값’ where 조건명;
- 레코드 삭제
- delete from 테이블명 where 조건명;
프로젝트와 데이터베이스 연결
- 자바 프로젝트와 MySQL DB 연결
- MySQL Community Downloads
- Select Operating System: Platfrom Independent 선택
- ZIP Archive로 다운로드
- 압축 풀기
- 폴더 안의 mysql-connector-j-8.3.0.jar 파일 복사
- 프로젝트 폴더에 lib 폴더 생성 후 붙여넣기
- 인텔리제이
- Project Structure- Modules- Dependencies 이동
- 왼쪽에 + 버튼 누른 후 Jars or Directories 이동 후 위의 jar 파일 선택
- MySQL Community Downloads
- 데이터베이스 접속 및 쿼리문 실행하는 DAO 클래스 작성
- 테이블명DAO.java
-
import java.sql.*; public class MemberDAO { //데이터베이스 접속 객체 Connection conn = null; //SQL 쿼리를 구현하는 객체 Statement stmt = null; //쿼리에 대한 응답인 ResultSet을 가져오는 객체 ResultSet rs = null; public MemberDAO() { try { //MySQL DB 드라이버 로드 Class.forName("com.mysql.cj.jdbc.Driver"); //데이터베이스 접속 conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mydb", //Host "root", //사용자 "root" //암호 ); } catch (Exception e) { e.printStackTrace(); try { conn.close(); } catch (Exception ex) { e.printStackTrace(); } } if (conn != null) { System.out.println("데이터베이스 접속 성공!!"); } } // 그외 insert, update, select 등 함수 작성 public void close() { if (conn != null) { try { conn.close(); } catch (SQLException e) { throw new RuntimeException(e); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { throw new RuntimeException(e); } } if (rs != null) { try { rs.close(); } catch (SQLException e) { throw new RuntimeException(e); } } } }
-
- 테이블명DAO.java
- DTO 클래스 작성
- 테이블명DTO.java
- 각 열을 멤버 변수로 선언
- 해당 열들의 getter, setter 함수 작성
- Main 클래스 작성
- 테이블명Main.java
-
public class MemberMain { public static void main(String[] args) { // DAO 객체 생성 MemberDAO dao = new MemberDAO(); // 레코드 추가 예시 MemberDTO dto = new MemberDTO (); dto.setMemberno(5); dto.setId("hong"); dto.setName("홍길동"); int result = dao.insert(vo); dao.close(); } }
-
- 테이블명Main.java
'교육 (Today I Learned) > Hanaro' 카테고리의 다른 글
[Hanaro] 45일차 / SQL (집계 함수) (0) | 2024.03.21 |
---|---|
[Hanaro] 44일차 / SQL (단일행 함수) (0) | 2024.03.20 |
[Hanaro] 41일차 / Java (API Method, Exception, Thread, I/O) (0) | 2024.03.15 |
[Hanaro] 40일차 / Java (생성자, abstract, interface) (0) | 2024.03.13 |
[Hanaro] 39일차 / Java (Array, Class, method, 접근 제어자, 싱글톤 패턴) (0) | 2024.03.12 |