본문 바로가기

분류 전체보기128

iBatis CDATA(Character Data - 문자 데이터) XML(마크업 언어)에서 SQL 작성 시 특수문자를 태그가 아닌 데이터로 명시하고 싶을 때 사용 CDATA 사이에 포함된 모든 문자는 파싱되지 않고 문자 그대로 해석(특히 & 문자열은 그대로 인식) CDATA 영역 안의 모든 를 문자열로 만들어버리기 때문에 동적 쿼리를 작성하는 곳에는 주의해서 사용 작성 방식 2024. 1. 31.
Spring 교육 web.xml에 spring 설정 추가하여 spring 구조로 실행 spring 주요 디자인 패턴 Front Controller Pattern - 사용자 요청이 들어왔을 때 하나의 컨트롤러가 관문역할을 하고 해당 요청을 처리할 수 있는 서블릿이나 페이지로 분배하는 패턴 - 요청 처리의 일관성과 효율성을 높임 Transfer Object Pattern - 데이터를 한 객체에서 다른 객체로 전송하는 데 사용 - 데이터베이스와 같은 소스로부터 데이터를 검색하고 전달하는 데 활용 Data Access Object Pattern - 비즈니스 로직과 DB 분리 - DB 사용 방식이 달라져도 서비스 로직이 변경되지 않도록 DB 로직을 캡슐화하여 분리 Session Facade Pattern - 다양한 서브 클래스들을.. 2024. 1. 18.
Transaction Transaction 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위 트랜잭션이 일어난 후에는 commit을 통해 변화를 반영하거나 rollback이 이루어진다. 트랜잭션의 특징 4가지 특징 Atomicity, Consistency, Isolation, Durability의 앞글자를 따서 ACID라고 부른다. 원자성 ( Atomicity ) 하나의 트랜잭션이 작업이 그중에 일부분만 실행되거나 중단되지 않는 것을 보장해주는 것 All or Noting, 하나의 트랜잭션 즉 작업단위에 대해서 전체 성공 혹은 전체 실패만을 보장하며 데이터베이스의 부분적인 갱신으로 더 큰 문제가 야기되는 것을 방지한다. 일관성 ( Consistency ) 작업이 성공적으로 완료가 되더라도 작업 이전과 같은 일관성 있.. 2023. 12. 30.
AOP - Proxy Pattern AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 여러 메서드에 중복되어 나타나지만 핵심로직이라고 할 수 없는 부가 기능을 cross-cutting concerns(횡단관심사, 흩어진관심사) 로 보고 이를 모듈화하는 것 프록시패턴(Proxy Pattern) 프록시(Proxy)를 번역하면 대리자, 대변인의 의미를 갖고 있다. 대리자, 대변인은 누군가를 대신해서 그 역할을 수행하는 존재이다. 이는 프로그램에도 똑같이 적용된다. 즉, 프록시에게 어떤 일을 대신 시키는 것이다. 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조하는 것이 아닌 해당 객체를 대항하는 객체를 통해 대상 객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설.. 2023. 12. 30.
DB - Oracle(효율적인 SQL 작성법) View 사용자에게 접근이 허용된 자료만 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블 실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하고 있지는 않는 가상 테이블 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도 활용 복잡한 쿼리를 단순화 쿼리 재사용 가능 특징 기본 테이블과 같은 형태의 구조로 기본 테이블 조작법과 비슷함 가상 테이블로 물리적으로 구현되어 있지 않음 데이터의 논리적 독립성 제공 필요한 데이터만 정의해서 처리할 수 있어 관리가 용이하고 명령문이 간단해짐 뷰를 통해서만 데이터에 접근하게 하면 뷰에 표출되지 않는 데이터 보호 가능 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야 삽입, 삭제, 갱신, 연.. 2023. 12. 26.
Interceptor / RequestDispatcher - forward() VS Response - sendRedirect() Interceptor Interceptor : 클라이언트의 요청 전, 후 특정 작업을 처리하고자 할 때 사용하는 기능 ex) 로그인 처리, PC/모바일 분기 처리 등 AOP의 @Around와 비슷한 성격 AOP는 메소드 단위 (코드)로 설정, 인터셉터는 특정한 URL 단위로 설정 Filter : 주로 인코딩 처리 시 사용(선처리만 가능) 실행순서 : Filter > DispatcherServlet > Interceptor > AOP RequestDispatcher/forward() RequestDispatcher : 전달 받은 요청을 다른 리소스(servlet, html, jsp)로 넘겨주는 역할을 하는 인터페이스 forward() : 요청에 의해 컨테이너에서 생성된 request와 response를 다.. 2023. 12. 21.
JNDI / DBCP Connection Pool의 생성배경 웹 어플리케이션 소스단에서 직접 DB를 연결하여 작동하는 어플리케이션의 경우 -> 어플리케이션 구동시 DB와 커넥션을 맺는 부분에서 상당히 많은 시간이 걸리게 됩니다. -> 따라서 어플리케이션에서 DB에 접속하면 할수록, 쿼리를 사용하면 할수록, 어플리케이션은 급격히 느려지게 됩니다. 이러한 속도 저하를 막기 위해서 한번 DB와 맺은 Connection을 제거하지 않고 다른 쿼리들도 사용할 수 있도록 재활용 하도록 도와주는 라이브러리(DBCP)입니다 매번 접속마다 Connection을 열닫는 절차가 줄어듬으로써 속도가 빨라짐 WAS에 DataSource를 설정 하는 이유 그전에 WAS에 Datasource를 설정 하는 이유에 대해서 간략하게 말씀 드리겠습니다. 보통.. 2023. 12. 20.
프론트 컨트롤러(DispatcherServlet) 프론트 컨트롤러 패턴 도입 전 : 공통로직 => 각 컨트롤러 (공통로직이 계속 반복됨) 도입 후 : 프론트 컨트롤러 => 각 컨트롤러 (하나의 프론트 컨트롤러로 반복 사용 가능) FrontController 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러 찾아서 호출 입구를 하나로 통합하여 공통 처리 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 Spring Web MVC와 FrontController 스프링 웹 MVC의 핵심이 FrontController DispatcherServlet이 FrontController 패턴으로 구현되어있음 요청 처리 단계 클라이언트 HTTP 요청 FrontController(DispatcherS.. 2023. 12. 14.
Servlet 웹 애플리케이션 서버의 요청 응답 구조 웹 브라우저(클라이언트)에서 요청 전송 웹 애플리케이션 서버에서 MetaData(Request, Response) 생성 서블릿 컨테이너로 전달 서블릿 컨테이너에서 전달받은 MetaData의 요청 정보 확인 및 작업 수행 작업 결과를 Response에 담아서 웹 애플리케이션으로 전달 웹 애플리케이션에서 응답값 웹 브라우저(클라이언트)로 전달 HttpServletRequest HTTP 요청 메시지를 편리하게 조회할 수 있도록 지원 임시 저장소 기능 ex) request.setAttribute(), request.getAttribute() 세션 관리 기능 ex) request.getSession() 2023. 12. 14.