웹 백엔드 17

서블릿이란?

📌 서블릿의 가장 주된 핵심은?서블릿의 가장 중요한 역할은 "클라이언트의 HTTP 요청을 처리하고, 적절한 응답을 생성하는 것"이야.즉, HTTP 전송 방식(요청 방식)에 따라 다르게 처리하는 것이 서블릿의 핵심 기능 중 하나야.✅ 1. HTTP 요청 방식(전송 방식)에 따른 처리웹에서 클라이언트(브라우저)가 서버로 데이터를 요청할 때 HTTP 요청 방식을 사용해.서블릿에서는 요청 방식에 따라 doGet(), doPost() 등 적절한 메서드를 실행한다.HTTP 메서드설명서블릿에서 실행되는 메서드GET데이터를 조회하는 요청 (브라우저 주소창, 링크 클릭)doGet()POST데이터를 전송하는 요청 (로그인, 회원가입 등)doPost()PUT기존 데이터를 수정하는 요청doPut()DELETE데이터를 삭제하..

웹 백엔드 2025.02.07

객체의 null상태와 notnull상태

null과 not null 상태는 객체가 초기화되었는지 여부에 따라 달라집니다. 아래는 코드에서 각 객체(ResultSet, PreparedStatement, Connection)가 null 또는 not null 상태가 되는 상황에 대한 설명입니다.1. 객체가 null인 경우초기화만 하고, 실제로 객체를 생성하지 않았을 때:ResultSet rs = null; // 초기화만 했으므로 rs는 null객체 생성 중 예외가 발생하여 생성되지 못했을 때:try { PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); // 쿼리 실행 중 예외 발생} catch (SQLException e) { ..

ResultSet 객체와 가비지 컬렉터의 동작

ResultSet 객체와 가비지 컬렉터의 동작을 정확히 이해하기 위해 다음과 같이 정리하겠습니다.1. ResultSet과 메모리ResultSet 객체는 일반적으로 JDBC 드라이버에 의해 생성되고, JVM의 힙 메모리에 할당됩니다.ResultSet.close()를 호출하면:데이터베이스 리소스와의 연결이 해제됩니다. (예: 네트워크 연결 해제, 서버 커서 반환)그러나 JVM 힙 메모리에 있는 ResultSet 객체 자체는 여전히 존재합니다.2. 가비지 컬렉터가 ResultSet 객체를 회수하는 조건가비지 컬렉터가 객체를 회수하는 조건은 다음과 같습니다:더 이상 참조되지 않을 때ResultSet 객체가 더 이상 어떤 변수나 객체에서도 참조되지 않을 때, 가비지 컬렉터가 이를 회수합니다.ResultSet rs..

자바와 데이터 베이스 연결, 그리고 닫기(Open, Close)

Open과 Close는 객체나 리소스(예: 파일, 데이터베이스 연결 등)의 상태를 관리하는 기본적인 동작입니다. Java에서는 주로 리소스 사용 전 Open, 리소스 사용 후 Close 패턴으로 사용됩니다. 이 두 동작의 차이를 정리하면 다음과 같습니다:1. Open (열기)역할:리소스(파일, 데이터베이스 연결 등)를 사용할 수 있도록 초기화하거나 연결을 생성하는 작업.파일, 네트워크 소켓, 데이터베이스 연결과 같은 외부 리소스에 접근하는 작업을 수행합니다.예시:파일을 읽거나 쓰기 위해 열기.데이터베이스 연결을 생성.네트워크 소켓을 열기.주요 특징:리소스가 정상적으로 사용될 수 있도록 필요한 설정 및 초기화를 수행합니다.리소스가 열려 있는 상태에서는 다른 작업(쓰기, 읽기 등)을 수행할 수 있습니다.코드..

객체가 null인 경우와 notnull인 경우

null과 not null 상태는 객체가 초기화되었는지 여부에 따라 달라집니다. 아래는 코드에서 각 객체(ResultSet, PreparedStatement, Connection)가 null 또는 not null 상태가 되는 상황에 대한 설명입니다.1. 객체가 null인 경우초기화만 하고, 실제로 객체를 생성하지 않았을 때:ResultSet rs = null; // 초기화만 했으므로 rs는 null객체 생성 중 예외가 발생하여 생성되지 못했을 때:try { PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); // 쿼리 실행 중 예외 발생} catch (SQLException e) { ..

개념 정리9 - 행의 출력 순서를 결정(ResultSet에서 커서를 이동하는 주요 메서드들)

next()가 아닌 다른 메서드를 사용하면 ResultSet의 데이터 접근 순서를 다르게 할 수 있다.next()는 ResultSet의 커서를 한 행씩 순차적으로 이동시키면서 데이터를 읽는 방식이지만, 다른 커서 이동 메서드를 사용하면 행 순서가 달라질 가능성이 있습니다.ResultSet에서 커서를 이동하는 주요 메서드들next()커서를 현재 행에서 다음 행으로 이동합니다.일반적으로 while (rs.next()) 구조에서 사용되며, 데이터베이스의 행을 순서대로 읽어옵니다.previous()커서를 현재 행에서 이전 행으로 이동합니다.TYPE_SCROLL_SENSITIVE 또는 TYPE_SCROLL_INSENSITIVE와 같은 스크롤 가능한 ResultSet에서만 사용 가능합니다.행을 역순으로 처리할 때 ..

헷갈리는 개념 2. PreparedStatement와 prepareStatement - DQL(selelt)구문 실행하여 테이블 객체 읽어오기.

PreparedStatement와 prepareStatement는 서로 밀접하게 관련된 개념이지만, 역할과 용도에서 차이가 있습니다. 아래에서 둘의 차이와 관련성을 명확히 설명하겠습니다.1. PreparedStatement정의: JDBC 인터페이스 이름.역할: SQL 문을 미리 컴파일하고 실행하기 위해 사용됩니다.특징:SQL 쿼리를 동적으로 처리할 수 있습니다.파라미터 바인딩(?)을 통해 보안(SQL Injection 방지)과 성능 최적화를 제공합니다.데이터베이스와 독립적으로 동작하지 않고, JDBC 드라이버가 제공하는 구현체입니다.사용 예시PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE age > ?");pstmt.s..

SQL 명령어 정리.

SQL 주요 명령어(DQL, DML, DDL, DCL, TCL)SQL의 주요 명령어 분류SQL은 데이터베이스 작업을 위해 다양한 명령어로 구성되며, 이를 DQL, DML, DDL, DCL, TCL로 분류할 수 있습니다.1. DQL (Data Query Language)역할: 데이터베이스에서 데이터를 조회하는 데 사용.명령어:SELECT: 데이터를 조회하여 결과 집합을 반환.특징: 데이터 조회만 수행하며 데이터의 구조나 내용을 변경하지 않음.예:SELECT * FROM students WHERE age > 20;2. DML (Data Manipulation Language)역할: 데이터의 내용을 조작(추가, 수정, 삭제)하는 데 사용.명령어:INSERT: 데이터를 테이블에 삽입.UPDATE: 테이블의 데이..

헷갈리는 개념 1. Statement와 ResultSet 투플과 튜플, 객체와 개체

1. 자바와 데이터베이스가 연동하기 위해 생성되는 객체는 자바코드에서 만들어지고 스태틱,스택,힙 모메리 중에 저장되는거야?2. java.sql은 JDBC와 java.jar 두 곳에 존재해?3. ResultSet 객체는 하나만 존재할 수 있어?4. boolean first()와 boolean next()는 투플 가리킨다고 하는데, 투플은 튜플을 말하는건가? 그리고 투플은 뭐야?자바와 데이터베이스 연동 객체의 메모리 저장 위치자바 코드에서 생성되는 객체는 힙 메모리에 저장됩니다.예를 들어, Connection, Statement, ResultSet 객체는 new 키워드나 JDBC 메서드를 통해 생성되며, 힙 메모리에서 동적으로 할당됩니다.스택에는 메서드 호출 시 사용하는 지역 변수(참조 변수)가 저장됩니다...

개념정리8 - PlaceHolder()란 무엇이며, 어떻게 사용되는가?

PlaceHolder()란 무엇이며, 어떻게 사용되는가?PlaceHolder는 PreparedStatement에서 사용할 수 있는 매개변수 자리 표시자입니다. SQL 문에서 값이 들어갈 자리를 ?로 표시합니다.추가질문1:1. 매개변수 자리를 왜 표시해야하지?2. 구분하기 어렵나?1. 매개변수 자리를 왜 표시해야 하지?1.1. 매개변수 자리를 표시하는 이유SQL과 값의 분리:매개변수 자리 표시자는 SQL 구조와 데이터 값을 분리하여 코드를 더 안전하고 효율적으로 만듭니다.값이 SQL에 직접 포함되지 않고 따로 처리되므로 SQL 문 자체가 더 간결해지고, 재사용 가능해집니다.보안 강화 (SQL 인젝션 방지):매개변수 자리 표시자(?)를 사용하면 값이 SQL 구문으로 실행되지 않고 데이터로 처리됩니다.예: S..