-
221230. DB 10. JDBC (수정, 삭제)스타터스 백엔드 3기 2023. 1. 3. 14:24
하루입니다.
- update는 sc.nextLine 사용함.
- 이걸 split() 한다.
- 모르는 부분 : split()의 리턴값은 String[]이다. 이 값을 hashMap<>에 어떻게 넣지?
- String 배열의 값을 hashMap<>에 넣는 법
1. split()한 결과물을 String[]에 넣는다.
2. split()한 결과물과 배치되는 column명을 String[]에 담는다.
3. hashMap<>을 생성한다.
4. 3번의 hashMap<>에 for문을 사용해서 key에 column명을, value에 split()한 결과물을 넣는다.
UpdateView
빈칸이 아닐 경우만 map에 put한다.

userDao

delete 하기 위한 두 가지 방법이 있다.
- 1. User 테이블에 deleted 컬럼을 만들어서 Y/N 이런 값 주는 것.
- 2. DeletedUser 테이블을 만들어서 User테이블에서는 삭제하고, DeletedUser 테이블으로 붙여넣는 것.
아래는 2번 방법이다.

주의점
- 이 방식은 2개의 테이블을 다룬다.
- sql1은 제대로 적혔고, sql2는 잘못 적혓다고 하자.
- sql1이 실행되어 DeletedUser 테이블으로 해당 id의 데이터가 insert되지만, sql2는 오류로 실행되지 않아 delete되지 않을 것이다. 그러면 삭제 요청한 유저의 정보는 member 테이블에 남아있겠지만, Deleteuser테이블에도 남아있게 된다. 잘못됨!!!
- 이런 경우를 방지하기 위해 Connection의 serAutoCommit() 설정을 false로 한다.
- 만약 에러가 발생한 경우, catch되어 rollback() 된다. (try catch 또 한 건 rollback 자체가 예외를 처리하도록 강제되었기 때문)
- 에러가 발생하지 않은 경우, commit()된다.

workspace_java
jdbc
member_crud : MemberUpdateView, MemberSeleteView, MemberInsertView, MemberDeleteView 참고
'스타터스 백엔드 3기' 카테고리의 다른 글
[ Servlet / JSP ] 2. 기초 (0) 2023.01.04 [ Servlet / JSP ] 1. 기초 (0) 2023.01.03 유데미 스타터스 취업 부트캠프 3기 - 백엔드 6주차 (0) 2022.12.30 221229. DB 8. JDBC (0) 2022.12.29 221229. DB 7. 트랜잭션 (0) 2022.12.29