프로세스는 실행 중인 프로그램을 구분하는 단위
프로세스 내에서의 실질적인 동작 단위로 하나의 프로그램은 여러개의 스레드에서 동작한다.
동시성 문제는 하나의 코드를 여러개의 스레드가 동시에 실행시켰을 때 발생한다.
동시성 문제가 해결된 상태로, 각각의 스레드가 순차적으로 작업을 수행했을 때와 동시에 작업을 수행했을 때 결과가 같은 것
동시성 문제를 해결하는 대표적인 방법으로, 해당 키워드를 붙은 코드를 실행할때에는 다른 스레드의 접근을 못하게 일종의 잠금을 걸어 동시성 문제를 해결한다.
데이터 송수신에 사용하는 전용객체(직접 정의하여 사용)
DB 접속해서 SQL 작업만 하는 전용객체
HTTP요청을 처리하는 객체
웹 애플리케이션이 실행될 때 미리 대상과의 Connection을 만들어두고 요청에 따라 이를 사용, 반환하는 방식
DB 연결만 할때
새로고침할 때마다 DB연결이 생성, 연결이 계속 쌓임
DB 연결 후 끊기
새로고침할 때마다 DB연결이 하나 생성, 다 사용하면 연결 종료
연결이 몰리게 될 경우 MAX Connection을 넘을 위험이 있음
DBCP 적용(싱글톤X)
새로고침할 때마다 DB 연결이 10개 생성, 연결이 계속 쌓임
DBCP 연결 후 끊기
새로고침할 때마다 DB 연결이 10개 생성, 연결이 계속 쌓임
DBCP 적용(싱글톤O)
처음 실행될 때만 DB연결이 10개 생성, 10개의 연결을 다 쓰면 다음 사용자는 접속X
DBCP 연결 후 끊기(싱글톤O)
처음 실행될 때만 DB 연결이 10개 생성, 다른 사용자가 반납한 연결을 돌려서 사용
서버가 클라이언트의 상태를 저장함
서버가 클라이언트의 상태를 저장하지 않음
세션
서버 프로그램에 특정 데이터를 저장해두는 것
쿠키
클라이언트 프로그램에 특정 데이터를 저장해두는 것
최초 로그인시 클라이언트 정보를 세션에 저장 후 해당 클라이언트에 쿠키값 저장
이후 요청시 쿠키값으로 세션을 확인하여 로그인 완료

개발자가 반드시 해줘야하는 작업으로, 사용자가 입력하는 모든 값들을 검증해야한다.
SQL이 정상적으로 동작하지 않도록, SQL에서 사용하는 특수문자 등을 포함한 값을 넘겨주는 기법
이를 방어하기 위해서 Statement를 개선한 PreparedStatement를 사용한다
html의 스크립트 형태로 DB에 저장시켜서 나중에 이를 불러올 때 해당 스크립트 태그 안에 있는 java script코드를 실행시키는 기법