본문 바로가기

Spring3

프레임워크를 사용하는 이유 자바만으로 어플리케이션을 만들 수 있는데 우리는 왜 프레임워크를 사용하는지가 문득 궁금해졌다. 자바는 어플리케이션 개발을 위한 많은 오픈소스들과 라이브러리가 있고, 활발하게 업데이트가 되고있다. 때문에 프레임워크는 어플리케이션을 완성하기 위해 필수품은 아니다. 그러나 아래와 같은 이유로 프레임워크를 사용하는 것을 권장한다. 보일러 플레이트가 아닌 핵심업무에 집중할 수 있다. 다년간의 정보들이 디자인 패턴의 형태로 모아져 있다. 업계 및 규제 표준을 준수할 수 있다. 어플리케이션의 총비용을 줄일 수 있다. 아래와 같은 문제점도 존재한다. 특정 방식으로 어플리케이션을 만들도록 강요한다. 특정 버전의 언어와 라이브러리에 묶인다. 어플리케이션이 차지하는 리소를 늘린다. 보일러 플레이트(boilerplate) :.. 2023. 10. 6.
@Transactional의 작동 방식과 롤백되지 않는 문제(Checked Exception) HTML 삽입 미리보기할 수 없는 소스 ‘스프링 부트 쇼핑몰 프로젝트 with jpa’ 책의 코드를 따라가던 중 상품 등록 과정에서 문제가 생겼다. 상품의 이미지 등록이 실패하면 상품 정보는 DB에 저장되고 이미지는 저장되지 않았다. 이미지가 저장되지 않았던 원인은 파일을 저장할 폴더가 없기 때문이었다. 하지만 @Transactional 이 제대로 작동한다면 상품정보와 상품이미지 모두 데이터베이스에 들어가지 않았어야 한다고 생각했고, 원인을 찾기 위해 @Transactional의 동작방식과 원인에 대해 알아봤다. 원인 @Transactional 에서 Checked Exception은 롤백하지 않는. 이미지 파일을 저장할 때 FileNotFoundException 이 발생했고, 이는 Checked Exce.. 2023. 8. 31.
Spring Data JPA Projections Spring Data JPA를 이용해 개발하던 중 모든 컬럼을 조회할 필요없이 특정 컬럼만 조회하면 되는 경우가 생겼다. 이런 경우 Projection을 사용하는데, 정확한 사용법을 알아보자. class Person { @Id UUID id; String firstname, lastname; Address address; static class Address { String zipCode, city, street; } } interface PersonRepository extends Repository { Collection findByLastname(String lastname); } Interface-based Projections 위와 같은 코드에서 이름만 필요한 경우 Interface-based .. 2023. 4. 24.