본문 바로가기
728x90

Back-end63

[Spring MVC] MVC 패턴에 대해서 MVC 패턴 - 개요 기존 방식의 문제점 기존의 서블릿이나 JSP만을 사용하는 개발 방식에서는 비즈니스 로직과 뷰 랜더링을 구현하는 로직 간의 구분이 모호하고, 유지 보수가 어렵다는 문제들이 있었다. 사실 진짜 문제는 둘 사이(비즈니스 로직과 뷰 파트)의 변경의 라이프사이클이 다르다는 점이라고 한다. 예를 들어 UI를 수정하는 작업과 비즈니스 로직을 수정하는 작업은 각각 다르게 발생할 가능성이 매우 높다. 또한 둘 사이의 연관성이 크게 없을 가능성 또한 매우 높고, 서로에게 영향을 주지 않는 작업이 대부분을 차지한다. 따라서 두 부분을 하나의 코드로 관리하는 것에서 유지 보수에 좋지 않은 영향을 미치는 것이다. 특히 JSP와 같은 템플릿 엔진들은 화면(view)을 렌더링 하는데 최적화되어 있기 때문에, .. 2023. 3. 20.
[Spring MVC] HttpServletRequest, HttpServletResponse HttpServletRequest의 역할 HTTP request message를 개발자가 직접 parsing 해서 사용해도 되지만, 매우 불편한 과정일 것이다. 이러한 일련의 과정을 서블릿이 대신 맡아 HTTP request message를 편리하게 사용할 수 있도록 새로운 객체를 만들어 parsing 한 정보를 관리하는데, 이 객체가 바로 HttpServletRequest이다. START LINE HTTP method URL query string schema, protocol Header 헤더 조회 Body form 형식의 데이터 조회 json과 같이 message body를 통한 데이터 직접 조회 위의 정보들을 편리하게 조회할 수 있도록 도울 뿐만 아니라 여러가지 부가 기능도 함께 제공한다. 임시 .. 2023. 3. 6.
Servlet에 대한 개념 정리 Servlet (서블릿) 이란? 서블릿은 웹 서버에서 가동되는 자바 기반 프로그램이며, HTTP 기반 통신에서 client와 server 사이의 request와 response를 다루기 위해 설계되었습니다. 서블릿은 client의 request에 기반한 동적인 HTML 페이지나, json, xml 형태의 데이터들을 만들기 위해 사용되며, 이 뿐만 아니라 cookie, session 등을 다뤄 stateless한 HTTP 통신에서 상태 정보를 다룰 수 있도록 돕습니다. 위 그림을 보면, HTTP 통신에 따라 client - server간에 request를 보내고 response를 받아오는 과정에서 진행해야할 작업이 굉장히 많음을 파악할 수 있습니다. 여기서 핵심적인 비즈니스 로직 구현을 제외한 다른 부분을.. 2023. 3. 1.
[JPA] JPQL 2 - 중급 문법 정리 경로 표현식 간단하게 .(점)을 찍어 객체 그래프를 탐색하는 것을 의미한다. 접근하는 필드의 타입에 따라서 경로 표현식의 종류가 3가지로 나뉘게 된다. 상태 필드 m.username 단일 값 연관 필드 m.team t 컬렉션 값 연관 필드 m.orders o 어떤 필드에 접근하는지에 따라 내부적인 JPA의 동작 방식이 달라지기 때문에, 유의해서 봐야할 개념이라고 한다. 경로 표현식에 대한 용어 정리 우선 상태 필드와 연관 필드로 접근할 수 있는 필드의 경로가 나뉜다. 상태 필드 (status field): 단순히 값을 저장하기 위한 필드 연관 필드 (association field): 연관관계를 위한 필드 단일 값 연관 필드: @ManyToOne, @OneToOne 관계에 대한 즉, 하나의 엔티티 대상 .. 2023. 2. 24.
[JPA] JPQL 1 - 기본 문법 정리 객체 지향 쿼리 언어 JPQL 이란 JPA에서는 다양한 쿼리 방식을 지원한다. JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate을 JPA와 같이 사용 앞서 배웠던 엔티티 조회 방식은 Entity manager의 find method 호출을 통한 조회 혹은 객체 그래프 탐색(ex entityA.getB())을 통한 entity 조회였다. 하지만, 조건을 포함한 검색 쿼리 같은 경우는 앞서 사용한 방식으로는 해결이 불가능하다. JPA를 사용하는 경우 엔티티 객체를 중심으로 개발을 할 수 있게 되지만, 결국 애플리케이션에서 필요한 데이터만 조회하기 위해서는 SQL의 도움이 필요하다. JPQL 이러한 문제를 해결하기 위.. 2023. 2. 22.
[JPA] 값 타입 기본값 타입 JPA의 기본적인 데이터 타입 분류는 크게 두가지이다. (최상위 분류) 엔티티 타입 @Entity 어노테이션으로 정의하는 객체 데이터가 변해도 식별자를 이용해서 지속적으로 추적 가능 예) 회원 엔티티의 키나 이름 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 의미 식별자 없고 값만 있어 변경시 추적이 불가능하다. 예) 숫자 100 → 200 변경하면, 완전히 다른 값으로 대체된 것 값 타입 분류 기본값 타입 자바 기본 타입 (int, double ...) Wrapper class (Integer, Double ...) String 임베디드 타입 (embedded type, 복합 값 타입) 컬렉션 값 타입.. 2023. 2. 18.
728x90