MyBatis 특징 SQL 매핑 프레임워크 SQL문과 저장 프로시저(Stored Procedure)등의 매핑을 지원하는 퍼시스턴스 프레임워크(persistence framework) JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 처리를 대신해줌 Map 인터페이스 그리고 자바 POJO를 설정 데이터베이스와 매핑해서 사용 가능 XML과 Annotation 설정을 통해 사용할 수 있음 MyBatis 동작 구조 MyBatis는 SQL을 처리하고 Java 객체와 DB간의 매핑을 처리한다. MyBatis 구성 요소 MyBatis는 SqlSession 인터페이스를 통해 DB와 상호작용 한다. SqlSessionFactory SqlSession 객체를 생성하는 팩토리 클래스 런타임 도중 CRUD 처리 ..
JDBC JDBC란? Java Database Connectivity, 자바 프로그래밍 언어를 사용해 데이터베이스에 접근할 수 있도록 하는 자바 API JDBC를 이용하여 DB에 접속, SQL 실행, 데이터를 가져오거나 삭제하는 등 데이터를 다룰 수 있음 JDBC가 등장하게 된 배경 DB 접근의 표준화를 위해서 등장 JDBC 등장 이전 DB마다 존재하는 고유한 API를 직접 사용 이에 따라 개발자는 기존의 DB를 다른 DB로 교체해야하는 경우 DB에 맞게 기존의 코드도 모두 수정해야 했으며 심지어 각각의 DB를 사용하는 방법도 새로 학습해야 했음 → JDBC의 표준 인터페이스 덕분에 개발자는 DB를 쉽게 변경할 수 있게 되었고 변경에 유연하게 대처할 수 있게 됨 JDBC를 알아야 하는 이유 JDBC는 매..
File Upload 파일 업로드 클라이언트가 서버로 파일을 전송하는 과정 여러 개의 파일을 업로드 할 수 있음 기존 방식의 Form 기존에 사용하던 은 문자 위주의 데이터를 사용 enctype="application/x-www-form-urlencoded" 기본 값(생략 가능) HTTP Body에 문자로 key=value 형태로 전송하고, 여러 개의 데이터라면 & 기호를 통해 구분하였음 파일 업로드 방식의 Form 파일은 문자가 아닌 바이너리 데이터를 전송 파일만 전송하는 것이 아니라 다른 데이터를 같이 전송하기도 함 enctype="multipart/form-data", method="POST" 필수 여러 개의 파일을 업로드하고 싶다면 multiple="multiple" 속성 추가 필요 참고할 블로그..
MVC 패턴을 접한지는 어느덧 반년이 넘었다. MVC 패턴을 처음 접하고 Model, View, Controller를 구현하면서 정말 재미있게 구현했던 기억이 난다. 그러다가 Model, View, Controller에 이어서 Service를 분리하여 구현하는 코드를 접하게 되었다. 하지만 그때의 나는 왜 꼭 Service가 필요하지? Controller에서 모든 코드를 구현하면 안되나? 라고 생각하며 Service의 필요성을 확실하게 느끼지 못하였고, 현재까지도 개발할 때 Service를 만들긴 하였으나, 왜 Service가 필요한지, Controller와 어떻게 분리해야 하는지에 대한 확실한 이해가 없이 개발을 해왔던 것 같다. 그렇기 때문에 이번 기회를 통하여 Controller와 Service의 ..
오늘은 Filter와 Interceptor에 대한 공부를 하였다. 먼저 Listener, Filter, Interceptor의 정의에 대해서 알아보고, 이번 내용의 핵심인 Filter와 Interceptor를 비교하면서 정리하고자 한다. Listener부터 시작하겠다. Listener, Filter, Interceptor Listener란? 프로그래밍에서 Listener란 특정 이벤트가 발생하기를 기다리다가 실행되는 객체 이벤트란 특정한 사건 발생 버튼 클릭 ,키보드 입력, 컨테이너 빌드 완료, 웹 어플리케이션 시작, HTTP 요청 수신 등 서블릿 컨테이너에서 발생하는 이벤트 감지 web.xml 파일에 태그를 이용하여 사용 가능 리스너가 여러 개일 경우 보통 선언된 순서대로 실행되지만 아닌 경우도 있음 ..
관점 지향 프로그래밍(AOP) AOP(Aspect Oriented Programming) 어플리케이션 로직에는 핵심 기능과 부가 기능이 존재 핵심 기능: 객체가 제공하는 고유의 기능 부가 기능: 핵심 기능을 보조하기 위한 기능(시간 측정, 로그 추적, 트랜잭션 관리 등) OOP에서 모듈화의 핵심 단위는 클래스, AOP에서 모듈화의 단위는 Aspect Aspect는 여러 타입과 객체에 거쳐서 사용되는 기능(Cross-Cutting, 트랜잭션 관리 등)의 모듈화 AOP는 OOP를 대체하는 것이 아닌 보조하는 것이 목적 AOP 용어 Target: 핵심 기능을 담고 있는 객체 → 부가기능을 부여할 대상 Aspect 여러 클래스에 공통적으로 적용되는 공통 관심 사항(AOP의 기본 모듈) Advice + Point..