개발자 ≒ SQL Mapper 자바에서는 객체를 다루고 관계형 데이터베이스는 테이블을 다루게 된다. 객체를 SQL로 변환해서 RDB에 데이터를 관리한다. 그럼, 데이터베이스 연동을 위해 JDBC나 MyBatis를 사용하는 데, 이 두 가지 모두 SQL query를 직접 작성해서 데이터베이스에 넘겨줘야 한다. 이런 경우 어떤 불편한 점들이 있는지 확인해 보자. 클래스에 새 필드 변수가 추가 또는 삭제 되는 경우 회원 클래스에 memberId, name 두 필드 변수가 있다. 여기서 다른 필드 변수 email이 추가되거나, 변수 name이 삭제되는 경우 아래 query가 수정이 필요해진다. 수정 횟수도 많겠지만, Mybatis는 XML 파일에서 SQL 쿼리를 작성해서 컴파일 전 오류를 잡지 못한다. 그래서 ..
패키지 구조에 대해서 배웠다기 보다 Spring MVC 패턴으로 웹 개발하게 되면 Model, View, Controller 이 세 가지로 나누는 것으로 배웠고, 이 방식이 자연스러운 방식이라고 생각했다. 그런데 github에서 다른 사람들의 코드를 확인하면 내가 배운 내용과 동일한 구조를 가지거나 다른 구조를 가지는 경우가 있었다. 그래서 이참에 한 번 패키지 구조에 대해서 알아보고 정리하고자 작성한다. 1. 계층형 패키지 구조 controller ⎿ TaskController ⎿ MemberController service ⎿ TaskService ⎿ MemberService dao ⎿ TaskDAO ⎿ MemberDAO dto ⎿ TaskDTO ⎿ MemberDTO 위에 패키지 구조가 수업에서 다뤘..
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class LocalDateTimeExample { public static void main(String[] args) { // 현재 날짜와 시간 가져오기 LocalDateTime now = LocalDateTime.now(); // DateTimeFormatter를 사용하여 원하는 형식으로 포맷팅 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDate = now.format(formatter); // 결과 출력 System.out.println(..
JSP 출력 버퍼 JSP의 페이지 처리 방법은 출력 버퍼에 JSP에서 처리된 결과를 모아두었다가 한꺼번에 응답하는 것이다. 2. 장점 2.1 성능 향상 처리 결과가 발생할 때마다 출력을 하게 되면 불필요한 동작이 발생할 수 있는데, 이 문제를 해결함과 동시에 성능 향상까지 할 수 있다. 2.2 최종 출력 이전에 처리 결과 수정 가능 버퍼 없이 데이터를 바로 출력하면 중간에 출력 내용을 수정할 수가 없다. 버퍼를 이용하면 버퍼에 모아둔 중간의 HTTP 응답 헤더 등을 수정할 수 있다. 2.3 기능이나 에러 처리에 용이 a.jsp 페이지에서 모든 작업을 처리하지 못 하고 특정 조건에 의해 b.jsp로 포워딩 해야 하는 상황 버퍼 없는 경우 : a.jsp에서 일부 처리한 결과와 b.jsp의 처리결과와 섞여서 ..
서블릿 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스이다. 자바의 모든 특징을 가지지만, 차이점은 독자적으로 실행되지 못하고 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다는 것이다. 서블릿이 있는 웹의 동작 방식 클라이언트가 웹 서버에 요청하면 웹 서버는 그 요청을 톰캣과 같은 웹 애플리케이션 서버(WAS)에 위임한다. 그러면 WAS는 각 요청에 해당하는 서블릿을 실행한다. 그리고 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송한다. 특징 서버 쪽에서 실행되면서 기능을 수행한다. 기존의 정적인 웹 프로그램의 문제점을 보완하여 동적인 여러 가지 기능을 제공한다. 스레드 방식으로 실행된다. 객체 지향적이다. 컨테이너에서 실행된다. 컨..
정의 정적인 웹 애플리케이션 기능을 그대로 사용하면서 서블릿, JSP, 자바 클래스들을 추가하여 사용자에게 동적인 서비스를 제공하는 프로그램이다. 웹 컨테이너에서 실행되는 JSP, 서블릿, 자바 클래스들을 사용해 정적 웹 프로그래밍 방식의 단점을 보완하여 서비스를 제공하는 서버 프로그램이다. 기본 구조 톰캣과 같은 웹 컨테이너에서 실행하는 웹 애플리케이션의 기본 구조를 파악해보자. 구성 요소 기능 Application Name 웹 애플리케이션의 루트 디렉토리. 다른 웹 애플리케이션 이름과 중복을 허용하지 않으며, JSP, HTML 파일을 저장한다. WEB-INF 웹 애플리케이션에 관한 정보가 저장된 곳이다. 이 디렉터리는 외부에서 접근할 수 없다. classes 웹 애플리케이션이 수행하는 서블릿과 다른 ..