반응형

분류 전체보기 164

스프링 MVC - 구조 이해

https://surrealcode.tistory.com/128 MVC 프레임워크 만들기프론트 컨트롤러 패턴 소개https://surrealcode.tistory.com/127 서블릿, JSP, MVC 패턴간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 JSP로 개선을 해본 뒤 MVC 패턴을 적용시켜본다. 회surrealcode.tistory.com 스프링 MVC를 이해하기 전에 이전 포스팅에서 직접 만든 MVC 프레임워크를 참고하도록 하자.   스프링 MVC 전체 구조직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보도록 하자.  기존 만들었던 MVC 프레임워크와 사실 스프링MVC 구조는 거의 동일하다(약간 이름에 차이가 있을 뿐) 직접 만든 프레임워크 -> 스프링MVC 비교- Fr..

공부/Spring 2025.03.17

MVC 프레임워크 만들기

프론트 컨트롤러 패턴 소개https://surrealcode.tistory.com/127 서블릿, JSP, MVC 패턴간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 JSP로 개선을 해본 뒤 MVC 패턴을 적용시켜본다. 회원 관리 웹 애플리케이션 요구사항회원 정보이름 : username나이 : age 기능 요surrealcode.tistory.com 프론트 컨트롤러 패턴을 도입하기 전에는 컨트롤러마다 공통로직을 전부 호출해주었어야 했다.(이전 포스팅 참조) 이전 포스팅에서는 포워드가 중복됐었고, viewPath가 중복 됐었고, 사용하지 않는 코드들을 만들었어야 했다. 프론트 컨트롤러를 도입하면(Front Controller도 서블릿이다.)프론트 컨트롤러에 공통 로직을 다 몰아놓고, 각각 ..

공부/Spring 2025.03.15

서블릿, JSP, MVC 패턴

간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 JSP로 개선을 해본 뒤 MVC 패턴을 적용시켜본다. 회원 관리 웹 애플리케이션 요구사항회원 정보이름 : username나이 : age 기능 요구사항- 회원 저장- 회원 목록 조회 우선 회원 객체를 만들어준다.@Getter@Setterpublic class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; }} 이후 회원을 저..

공부/Spring 2025.03.12

서블릿(Servlet)

참고 : 서블릿 JSP 기술은 거의 사장되었다고 봐도 무방한 기술들이다. 하지만 MVC 패턴이 나오게 된 계기가 되는 것들이니 만큼 학습을 하고 넘어가려 한다.+ 아직까지 가끔? JSP를 쓰는 기업들이 보이기는 하는거 같다. 우선 스프링 부트를 사용해 스프링 프로젝트를 생성하자.https://start.spring.io/ Dependencies는 Spring Web, Lombok을 선택하여 만든다.packaging은 war를 선택한다. JSP를 실행하기 위해 필요하다.Hello 서블릿스프링 부트 환경에서 서블릿을 등록하고 사용해보자. *참고 : 서블릿은 톰캣 같은 웹 애플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린 다음, 톰캣 서버를 실행하면 된다. 하지만 이과정은..

공부/Spring 2025.03.11

웹 애플리케이션의 이해

웹 서버, 웹 애플리케이션 서버웹 : 웹은 HTTP 통신을 기반으로 통신한다. 모든 것이 HTTP이다.HTTP 메시지에 모든 것을 담아 전송한다.1. HTML, TEXT2. IMAGE, 음성, 영상, 파일3. JSON, XML(API)4. 서버간의 데이터를 주고 받을때도 대부분 HTTP 사용--> 거의 모든 형태의 데이터가 전송 가능하다. 웹 서버(Web Server)- HTTP 기반으로 동작한다.- 정적 리소스(파일)를 제공하고, 기타 부가 기능이 있다.- 정적(파일) HTML, CSS, JS, 이미지, 영상 등이 정적 파일이다.- ex)NGINX, APACHE  웹 애플리케이션 서버(WAS - Web Application Server)- HTTP 기반으로 동작한다.- 위의 웹 서버 기능 포함 + 정적..

공부/Spring 2025.03.10

Spring JPA과 QueryDSL

Spring JPA스프링 데이터 JPA는 JPA를 사용할때 지루하게 반복하는 코드를 자동화 해준다. 이미 라이브러리는 포함되어있다. MemberRepository를 스프링 데이터 JPA로 변경해보자.public interface MemberRepository extends JpaRepository { //select m from Member m where m.name = ? List findByName(String name);}public class MemberService { private final MemberRepository memberRepository; //회원 가입 @Transactional public Long join(Member member) { ..

공부/Spring Boot 2025.02.20

API 개발 고급 - 실무 필수 최적화

OSIV와 성능 최적화Open Session In View : 하이버 네이트Open EntityManager In View : JPA(관례상 OSIV라고 한다.) spring.jpa.open-in-view : JPA 기본값 애플리케이션을 동작하면 시작지점 로그에 warn이 하나 뜨게 되는데, WARN 6920 --- [  restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. spring.jpa.open-in-view is enabled by default라는 warn 로그가 출력되는 것을 알 수 있다. OSIV 전략은 트랜잭션 시작(서비스계층의 @Transactional)..

공부/Spring Boot 2025.02.19

API 개발 고급 - 컬렉션 조회 최적화

https://surrealcode.tistory.com/121 API 개발 고급 - 지연 로딩과 조회 성능 최적화https://surrealcode.tistory.com/120 API 개발 고급 - 준비현업에서는 API 개발을 한 이후 성능이 나오지 않아 튜닝을 하기도 하는데 보통은 아래와 같은 문제를 지키지 않아 발생한다.- 지연로딩, 조회 성surrealcode.tistory.com앞서 본 API 개발은 xToOne 관계만 있는 개발이었다. 이번에는 컬렉션인 OneToMany 를 조회하고, 최적화를 진행해 볼 예정이다. 주문내역에서 추가로 주문한 상품 정보를 추가로 조회하자.Order 기준으로 컬렉션인 'OrderItem'과 'Item'이 필요하다. 컬렉션 조회 같은 경우에는 DB 입장에서 뻥튀기가..

공부/Spring Boot 2025.02.19

API 개발 고급 - 지연 로딩과 조회 성능 최적화

https://surrealcode.tistory.com/120 API 개발 고급 - 준비현업에서는 API 개발을 한 이후 성능이 나오지 않아 튜닝을 하기도 하는데 보통은 아래와 같은 문제를 지키지 않아 발생한다.- 지연로딩, 조회 성능 최적화- 컬렉션 조회 최적화- 페이징, 한계 돌surrealcode.tistory.com개발에 앞서, 이전 포스팅을 참고하여 조회용 데이터 샘플을 넣어주도록 하자.  지연 로딩과 조회 성능 최적화이전까지는 단일 엔티티만을 조회하는 API를 만들었다. 이번엔 주문 + 배송정보 + 회원을 조회하는 API를 만들어본다.여러 정보를 조회하는 API의 문제는 지연 로딩이다.지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해보자. **참고 : 지금부터 설명되는 내용은 정말 중..

공부/Spring Boot 2025.02.03

API 개발 고급 - 준비

현업에서는 API 개발을 한 이후 성능이 나오지 않아 튜닝을 하기도 하는데 보통은 아래와 같은 문제를 지키지 않아 발생한다.- 지연로딩, 조회 성능 최적화- 컬렉션 조회 최적화- 페이징, 한계 돌파- OSIV, 성능 최적화 보통은 API 장애의 90%는 조회 쪽에서 발생한다. -> 사람들이 조회를 많이 하기 때문이다.  조회용 샘플 데이터를 입력하도록 하자.우선 application.yml파일의 ddl-auto를 create로 만들어주도록 하자. - userA  - JPA1 BOOK  - JPA2 BOOK- userB  - SPRING1 BOOK  - SPRING2 BOOK 클래스를 하나 만들고 데이터들을 집어넣어주었다./** * 총 주문 2개 *- userA * - JPA1 BOOK * - JP..

공부/Spring Boot 2025.01.31
반응형