전체 글 (40) 썸네일형 리스트형 다양한 데이터베이스와 데이터베이스 구조 설계 RDBMS(Relational Database Management System)정의: 관계형 데이터베이스 관리 시스템. 데이터를 행(Row)과 열(Column) 구조의 테이블(Table) 형태로 저장함.스키마: 테이블 구조(열의 이름, 데이터 타입 등)를 사전에 정의한 스키마(Schema) 를 따름.주요 예시: Oracle, MySQL, PostgreSQL 등사용 언어: SQL(Structured Query Language) – 데이터를 생성, 조회, 수정, 삭제하는 데 사용관계 설정:여러 테이블 간 관계를 설정할 수 있음.이를 위해 외래 키(Foreign Key) 를 사용하여 Join(조인) 연산 가능핵심 특징:테이블 간 관계 설정 가능데이터 정합성과 일관성 유지구조화된 질의 가능 (복잡한 검색, 조인.. 데이터 무결성과 트랜잭션 관리 데이터베이스 설계에서 정규화(Normalization)는 필수적인 과정이다. 그 이유는 한 릴레이션(테이블) 안에 서로 다른 엔티티(Entity)들의 속성(Attribute)이 혼합되어 있을 경우, 다음과 같은 문제가 발생하기 때문이다.중복된 데이터 저장으로 인해 저장 공간이 낭비되고,중복된 데이터 중 일부만 갱신될 경우, 어떤 정보가 정확한지 판단할 수 없는 상황, 즉 데이터의 불일치(Inconsistency)가 발생한다.이러한 문제를 갱신 이상(Anomalies)이라 부르며, 이를 해결하기 위해 정규화 과정이 필요하다.삽입 이상 (Insertion Anomaly)새로운 데이터를 삽입하려 할 때, 불필요한 정보를 같이 넣어야 하거나혹은 필요한 데이터가 누락되어 삽입 자체가 불가능한 상황을 말한다. 예.. 추가기능(보안 필터 추가 및 서버 구조 개선) 이번 과제에서는 기존에 구현한 서블릿 서버 구조에 보안 필터(AuthFilter) 기능을 추가하여,특정 경로에 대해 클라이언트 요청을 검증할 수 있도록 기능을 확장하였다. 1. AuthFilter 클래스 구현 package depth.servlet.filter;import depth.servlet.core.HttpRequest;import depth.servlet.core.HttpResponse;public class AuthFilter implements MyFilter { @Override public void doFilter(HttpRequest request, HttpResponse response, FilterChain chain) throws Exception { if .. AOP(Aspect-Oriented Programming) AOP(Aspect-Oriented Programming)란 ?>-프로그래밍 패러다임 중 하나로, 관심사의 분리를 위해 사용되는 기술-어플리케이션의 핵심 비즈니스 로직과 관련 없는 부가적인 기능들을 모듈화 -> 코드의 중복을 줄이고 유지보수성 향상-다양한 관점(Aspect)을 정의 -> 관점들을 핵심 로직에 적용 중복 코드 처리: 서비스(Service), DAO 등에서 반복되는 공통 코드(commit, rollback, log 처리 등)를 별도의 영역(Aspect)으로 분리함. 장점: - 핵심 비즈니스 로직과 공통 기능을 분리하여 깔끔한 코드 유지 -소스 코드 중복 감소 -재사용성 증가 (필요할 때마다 가져다 쓸 수 있음) -핵심 관심사 (Primary Concern): .. 트랜잭션 DB 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위또는 한꺼번에 모두 수행되어야 할 일련의 연산들상황: 온라인 쇼핑몰에서 결제할 때① 판매자에게 돈 보내기② 판매자에게 상품 받기중요한 원칙:두 작업은 모두 성공하거나,둘 다 실패해서 원상복구 되어야 한다.핵심 개념:commit: 모든 작업이 성공했을 때 결과를 확정rollback: 하나라도 실패하면 처음 상태로 되돌리기-> 트랜잭션은 작업 전체가 완전히 성공하거나, 아예 안 한 것처럼 만드는 기술~!Atomicity (원자성)→ 모든 작업이 다 성공하거나, 하나라도 실패하면 전부 실패한 걸로 처리Consistency (일관성)→ 트랜잭션 전후에 DB의 규칙이 항상 지켜져야 함Isolation (격리성)→ 동시에 여러 트랜잭션이 실행돼도.. 의존성 주입(Dependency Injection) 을 구현한 예제<알림 서비스> 1. Sender.java(인터페이스)메시지를 보내는 기능을 정의 package depth.notification.sender;public interface Sender { void send(String message);} 2. EmailSender.javaSender 인터페이스를 구현한 구체적인 클래스send 메서드를 구현하여 이메일 메시지를 발송하는 기능을 제공package depth.notification.sender;public class EmailSender implements Sender { @Override public void send(String message) { System.out.println("[EMAIL 발송]: " + message); }} .. 의존성 주입(Dependency Injection) 클래스나 모듈 간의 관계를 의미한다. 즉, 하나의 클래스가 다른 클래스의 기능을 사용하고 있다는 뜻이다.예를 들어 OrderService 클래스가 PaymentService 클래스를 사용한다면, OrderService는 PaymentService에 의존하고 있는 것이다.이런 의존 관계는 객체 지향 설계에서 매우 흔하며, 클래스들 간의 결합도를 나타내는 중요한 요소이다Dependency Injection) ?>클래스가 필요한 의존 객체(다른 클래스 인스턴스)를 직접 생성하거나 관리하지 않고, 외부에서 주입받는 방식이다.즉, 의존성을 외부에서 넣어주는 것:내부에서 new 키워드로 직접 객체를 생성하지 않고,생성자나 메서드 등을 통해 외부에서 해당 객체를 넣어준다.// 의존성 주입을 사용한 예시: 주문 서비스.. 서블릿 필터와 리스너 [필터란?]서블릿이나 JSP에 요청이 도달하기 전에 요청과 응답을 가로채서 처리하는 컴포넌트이다. 필터는 요청을 수정하거나, 응답을 변경하거나, 로깅 및 인증 등의 작업을 수행할 수 있다.1. 사용자가 브라우저에서 /hello 요청2. Filter1에서 로그 찍음 → 다음 필터 호출3. Filter2에서 인증 체크 → 통과 시 다음 필터 호출4. Filter3에서 헤더 추가 → 다음으로 넘어감5. ExampleServlet 실행 → "Hello" 응답 생성6. 응답이 Filter3 → Filter2 → Filter1 역순으로 거쳐 나감7. 클라이언트에게 응답이 도착 필터 : 요청 전/후 공통 로직 처리필터 체인 : 여러 필터가 연결된 구조doFilter() : 다음 필터 또는 서블릿 실행 [구현할 구성요.. 이전 1 2 3 4 5 다음