개발/KH국비지원과정

[KH국비지원 웹개발자 과정] Day_31 키워드 JDBC

mabb 2022. 7. 25. 20:31
반응형

 안녕하세요. 삶의 질을 높이고자 노력하는 영차영차입니다.
드디어 국비지원 학원을 다니며 공부에 전념을 할 수 있게 되었습니다.
해당 포스팅은 강의 복기용으로 키워드를 기록하는 용도의 포스팅입니다.
--------------------------------------------------------------------------------------------------

-Java DataBase Connectivity
:Java로 DB에 접근할 수 있게 해주는 API. 각 DBMS 벤더 별로 jar파일로 구현되어 있다.

-JDBC를 사용하려면
1) OJDBC를 오라클에서 다운받고 jdk폴더에 넣는다.
    경로:  C:\Program Files\Java\jdk1.8.0_144 \jre\lib\ext

2) 이클립스 라이브러리에 추가한다.
  프로젝트의 Java Build Path - Libraries - add External JARs
  해당 경로의 ojdbc6.jar를 추가해줌

-JDBC는 절차만 알면 어렵지 않다.
1.Driver 등록
2.DBMS와 연결
3.Statement 생성
4.SQL 전송
5.결과 받기
6.닫기

드커스리클
드라이버, 커넥션.스테이트먼트,리절트,클로즈

라이버등록
Class.forName(DRIVER);

넥션 객체 생성
Connection conn =  DriverManager.getConnection(url,user,password);

테이트먼트 객체 생성
Statement st =  conn.createStatement();

절트셋객체( select) 또는 리절트( insert/update/delete)
ResultSet resultSet = st.executeQuery(query);
또는
int result = st.executeUpdate(query);

로즈
역순으로 클로즈.

-JDBC 는 DML만 가능.

-에러발생 시 파란글씨를 누르면 에러코드로 이동하여 편리하다.
에러를 잘 봐두는 것이 중요함. 왜냐하면 같은 에러를 계속 발생시키기 때문.

-JDBC 실습. OOP
MVC패턴의 간단한 학생관리 프로그램.
등록, 조회, 수정, 삭제 기능 구현

발생한 문제를 최대한 스스로 해결하고자 함.
1.JDBC워크스페이스를 분리하는 과정에서 이클립스 오조작으로 지금까지 작성한 모든 프로젝트의 소스가 삭제됨.
  깃허브를 이용하여 pull 하였으나 Aleady up to date 라는 문구가 나오며 원격저장소에 백업된 내용이 pull되지 않음
 ->구글링 ->
$ git fetch --all
$ git reset --hard origin/master
출처: https://programming119.tistory.com/109 [개발자 아저씨들 힘을모아:티스토리]
->fetch 기능을 잘모르는 상태로 사용해보았으나 원하는 대로 해결이 되지 않아서 깃허브 백업 파일을 다운로드받음.
->이클립스에서 워크스페이스를 다시 import하여 해결함.
import - general - Existing Projects into Workspace

2. JDBC SELECT 동작을 수행하였으나 아무런 일도 벌어지지 않음  -> DB 커밋을 하지 않음

3. JDBC INSERT 동작을 수행하였으나 익셉션 발생. -> java.sql.SQLIntegrityConstraintViolationException 제약조건 위반으로 제약조건을 지킬 수 있도록 입력값 부분 수정.

궁금증) 정규표현식으로 전화번호와 이메일의 입력을 처리하고자 함. Pattern.matches(regex,string) 을 이용하고
 전화번호는 {2,3)-{3,4}-{4} 이메일은 \w+@\w+\.\w+(\.\w+)? 로 regex 구성해봄. 실무에서는 어떤식으로 처리하는지?

4. 로직이 제대로 실행되지 않음  -> isEmpty 를 그대로 조건문에 넣음. -> !(not) 처리하여 해결

5. NullPointerException 발생!ArrayList가 null인 상태로 add를 진행

중간중간 에러가 발생할 때마다 강사님께 도움을 요청하고 싶었으나 스스로 해결하는 능력을 갖추는 것이 중요한 것 같아 오늘 수업 중 발생한 문제들은 모두 혼자 해결해보았다.

JDBC 패키지 구조 (MVC)

RUN패키지
  -> 실행용 패키지. main패키지 보유.

VIEW패키지
-> 클라이언트에게 화면을 통해 데이터를 보여주고, 입력받는 역할.

MODEL패키지
-> 입력받거나 출력할 데이터( DB의 컬럼개체 (Entity)) 를 저장하는 클래스인 VO클래스
   VO는 DTO(Data Transfer Object), DO(Domain Object), Entity, Bean(EJB용어) 등과 같은 의미로 사용. 캡슐화, 직렬화, 생성자오버라이드 필요.
-> DBMS에 접속하여 실제 쿼리문을 수행하는 DAO클래스

CONTROLLER패키지
->VIEW에서 받은 데이터를 디코딩하여 처리할 수 있도록 전달하고, 처리된 데이터를 출력할 수 있도록 인코딩하여 전달하는 등 중간에서 데이터를 가공하고 전달하는 역할을함.

 

 

 

 

반응형