목록개발지식/Spring (13)
마이의 개발 블로그

배경아래 스크린샷의 메시지와 함께 스웨거가 렌더링되지 않는 현상이 발생했습니다. 내용만 보면 간단한 문제같아 보입니다. OpenAPI 설정에 필요한 버전 정보를 명시해주면 되는 것처럼 보이기 때문입니다. 취합한 정보를 바탕으로 여러 가지 방법을 적용해봤습니다. 그 과정에서 application.properties에 설정값도 넣어보고, @OpenAPIDefinition 어노테이션을 통해 문서 정보를 기입해보기도 하고, 별도의 SwaggerConfig 클래스를 생성하여 설정을 주입해보기도 하고, 스프링부트 버전과 springdoc의 버전을 변경해보기도 했지만 문제를 해결할 수는 없었습니다. 문제의 원인1. 파싱 불가능한 형태로 openapi 명세가 리턴됨스웨거에서는 왜 버전 필드를 읽어오지 못했을까요?저..

배경 스프링 부트 프로젝트에서 메모리 관련 트러블슈팅(점유율, 누수, 가비지 컬렉션 등)을 해야하는 상황에서 필요에 따라 메모리를 줄이면서 가비지 컬렉션(GC) 수행 여부를 눈으로 확인할 필요가 있었습니다. 터미널에서 직접 명령어를 통해 옵션을 입력할 수도 있지만 보통은 IDE를 통해 개발을 하기 때문에 IntelliJ를 기준으로 메모리 크기 지정 실행 옵션을 추가하는 방법을 알아보도록 하겠습니다. 메모리 크기 지정 방법 1. 우측 상단 Configurations 클릭 - Edit Configurations - 스프링 부트 앱 선택 2. Modify options 클릭 - Add VM options 체크 - (새로 생성되는 라인에) -Xms16M -Xmx20M 입력 (각각 최소값, 최대값) - Run 버..
배경 ORM의 장단점을 알아보고, 어떤 상황에서 사용되는지 알아보려고 합니다. ORM의 장점 - 객체지향적 접근: 객체와 DB를 맵핑시켜 객체지향 언어로 DB를 조작할 수 있게 됩니다. - 추상화: DB를 추상화하여 접근하므로 구체적인 SQL 지식 없이 간편한 DB 조작이 가능해집니다. - 자동화: 반복적인 CRUD 작업을 자동화할 수 있습니다. 매번 직접 SQL을 작성할 필요가 없기 때문입니다. - 유지보수성 향상: DB 모델이 변경되거나 하는 경우 변경된 부분들에 대한 수정이 상대적으로 용이해집니다. - DB 독립성: ORM을 거쳐 DB에 접근하여 DB에 대한 의존도가 낮아집니다. 만약 DB 벤더가 변경되더라도 그에 따른 제반 작업(SQL 수정 등)을 할 필요가 없어집니다. - 성능 향상: 쿼리 최적..
배경 스프링 진영에서 ORM을 이야기할 때 함께 언급되는 키워드로 JPA, Hibernate, Spring Data JPA가 있습니다. 아래에서 이 네 가지의 개념에 대해 각각 알아보고, 관계를 간단하게 정리해보려고 합니다. ORM (Object Relational Mapping, 객체-관계 매핑) 객체(object)와 관계형(relational) 데이터베이스를 맵핑하는 프로그래밍 기법을 말하며, 객체지향 언어의 객체와 관계형 데이터베이스의 테이블 간의 매핑을 자동화하고 관리할 수 있게 해줍니다. ORM을 도입하면 개발자는 SQL 쿼리를 직접 작성할 필요 없이 이미 구현된 메서드를 통해 DB 조작을 수행할 수 있게 됩니다. JPA (Java Persistence API) 자바 진영의 ORM 표준 명세(s..

MVC 패턴과 스프링 MVC MVC 패턴은 소프트웨어 디자인 패턴 중 하나로 개념적으로 모델(model), 뷰(view), 컨트롤러(controller)의 세 가지 요소로 소프트웨어를 구성하는 방식을 말합니다. 개념적이라고 표현한 이유는 실제 프로젝트로 들어가게 되면 이 세가지의 요소 이외에도 중간 중간 연관된 요소들이 다양한 형태로 존재하여 구조를 한눈에 파악하기가 어렵고 눈에 보이지 않는 곳에서 동작하는 코드가 많기 때문입니다. 스프링 MVC는 스프링 프레임워크에서 MVC패턴 또는 REST API 패턴의 웹 개발을 단순하게 하기 위해 고안된 모듈입니다. 스프링 MVC(Spring MVC)의 구조와 흐름 스프링 MVC패턴의 아키텍쳐는 시간이 지남에 따라 모델1 -> 모델2 -> 모델2 + 프론트 콘트롤..