[Q] 스프링 페이징 기법은 무엇일까?
·
SPRING
스프링 데이터 페이징 가이드: Page, Pageable, PageRequest와 Thymeleaf를 활용한 페이징 네비게이션대용량 데이터를 한 번에 모두 조회하면 성능 저하와 사용자 경험 문제로 이어질 수 있습니다.따라서 웹 애플리케이션에서는 페이징 처리가 필수적입니다.스프링 데이터 JPA는 이 문제를 해결하기 위해 강력한 페이징 기능을 제공하는데, 그 핵심이 되는 것이 Page, Pageable, PageRequest입니다.이들 객체가 무엇인지, 어떻게 작동하는지, 그리고 Thymeleaf의 #numbers.sequence 함수를 활용하여 사용자에게 페이징 네비게이션을 제공하는 방법을 공부해 보았습니다.페이징 처리의 필요성과 기본 개념왜 페이징 처리가 필요한가?성능 최적화: 데이터베이스에 수천 건 또..
[Q] DTO vs 엔티티: 왜 엔티티만으로 데이터를 주고받으면 안 될까?
·
SPRING
DTO vs 엔티티: 왜 엔티티만으로 데이터를 주고받으면 안 될까?스프링 공부를 하면서 DTO를 사용해서 계층 간 데이터를 전달했습니다.DTO가 무엇이고 왜 엔티티로 데이터를 주고 받지 않을까 하는 궁금증으로 이 글을 작성하게 되었습니다.엔티티와 DTO 기본 개념엔티티(Entity)란?정의엔티티는 데이터베이스의 테이블과 1:1로 매핑되는 클래스입니다.예를 들어, 데이터베이스에 users라는 테이블이 있다면, 이 테이블의 각 행(row)을 자바 객체로 표현한 것이 엔티티입니다.특징데이터베이스와의 직접적인 매핑: 엔티티 클래스는 보통 JPA(Java Persistence API)를 사용하여 데이터베이스와 직접 연동됩니다.비즈니스 로직 포함 가능: 일부 엔티티는 데이터베이스와 관련된 기본적인 비즈니스 로직을 ..
[Q] Model과 ModelAndView의 차이
·
SPRING
Model과 ModelAndView의 차이점은 무엇일까? 스프링 공부를 하면서 책과 강의마다 Model을 쓰기도 하고 ModelAndView를 쓰기도 하였습니다.이 둘의 차이점이 무엇이고 각각의 장단점이 궁금하여 이 글을 작성하게 되었습니다.MVC 아키텍처와 스프링 부트스프링 부트는 MVC(Model-View-Controller) 아키텍처를 따릅니다.Model(모델): 애플리케이션의 데이터나 비즈니스 로직을 담는 부분입니다.View(뷰): 사용자에게 보여지는 화면(UI)을 담당합니다.Controller(컨트롤러): 사용자의 요청을 받아 모델에서 데이터를 처리한 후, 어떤 뷰로 결과를 보여줄지 결정하는 역할을 합니다.여기서 View Resolver(뷰 리졸버)는 컨트롤러에서 전달받은 뷰 이름을 실제 뷰(H..
[Q] 의존성 주입은 무엇이고 스프링에서는 어떻게 관리할까?
·
SPRING
의존성 주입은 무엇이고 스프링에서는 어떻게 관리할까?스프링 공부를 하면서 의존성 주입이 무엇이고 여러 방법과 각각의 장단점이 궁금했습니다.의존성 주입(Dependency Injection, DI)이란?의존성(Dependency): 객체가 자신의 기능을 수행하기 위해 필요한 다른 객체나 서비스입니다.예를 들어, Car 클래스가 Engine 클래스를 필요로 하는 경우, Engine은 Car의 의존성입니다.의존성 주입(Dependency Injection): 객체가 직접 의존 객체를 생성하는 대신, 외부에서 필요한 의존 객체를 제공(주입)받는 디자인 패턴입니다.이를 통해 객체 간의 결합도를 낮추고, 코드의 유연성과 재사용성을 높일 수 있습니다. Inversion of Control (IoC)IoC 개념: 전통..
[SPRING]#85 도서 쇼핑몰 구현 (DB 연동10)
·
SPRING
CRUD 메소드를 사용하여 도서 삭제하기 이어서 JdbcTemplate 클래스의 update() 메소드로 도서 쇼핑몰에서 저장된 도서 정보를 삭제하고 뷰 페이지에 출력하는 것을 구현해 보겠습니다. BookRepository.java 도서를 삭제하는 setDeleteBook() 메소드를 추가합니다. package com.springmvc.repository; import java.util.List; import java.util.Map; import java.util.Set; import com.springmvc.domain.Book; public interface BookRepository { List getAllBookList(); List getBookListByCategory(String categ..
[SPRING]#84 도서 쇼핑몰 구현 (DB 연동9)
·
SPRING
CRUD 메소드를 사용하여 도서 정보 수정하기 마찬가지로 JdbcTemplate 클래스의 update() 메소드를 사용해서 도서 쇼핑몰에서 등록된 도서 정보를 수정해서 뷰 페이지에 출력되는 것을 구현해 보겠습니다. BookRepository.java 도서 정보를 수정하는 setUpdateBook() 메소드를 추가합니다. package com.springmvc.repository; import java.util.List; import java.util.Map; import java.util.Set; import com.springmvc.domain.Book; public interface BookRepository { List getAllBookList(); List getBookListByCategory..
[SPRING]#83 도서 쇼핑몰 구현 (DB 연동8)
·
SPRING
CRUD 메소드를 사용해서 신규 도서 삽입하기 앞서 배운 JdbcTemplate 클래스의 update() 메소드를 사용해서 실습 진행 중인 도서 쇼핑몰에서 새로운 도서 정보를 저장하는 기능을 구현해 보겠습니다. BookRepositoryImpl.java setNewBook() 메소드를 다음과 같이 수정해 줍니다. package com.springmvc.repository; import java.util.List; import java.util.Map; import java.util.Set; import javax.sql.DataSource; import com.springmvc.domain.Book; import com.springmvc.exception.BookIdException; import jav..
[SPRING]#82 도서 쇼핑몰 구현 (DB 연동7)
·
SPRING
데이터 삽입, 수정, 삭제 JdbcTemplate 클래스에서 지원하는 삽입, 수정, 삭제 등 메소드를 공부해 보겠습니다. JdbcTemplate 클래스는 삽입, 수정, 삭제 쿼리를 수행할 수 있는 update() 메소드를 지원합니다. int update(PreparedStatementCreator psc) int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) int update(String sql, PreparedStatementSetter pss) int update(String sql, Object[] args, int[] argTypes) int update(String sql, Object... args) 매개변수는 다음과 ..