Project

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 게시판 페이징 및 N+1문제 최적화 ( Pageable, join fetch )

🤔 페이징(Paging)?많은양의 데이터가 데이터베이스에 저장되어 있고, 정장된 모든 데이터를 한번에 응답하려면 페이지 로딩 시간이 길어지며 사용자가 페이지를 스크롤 하거나 데이터를 찾는데 어려울 수 있습니다. 이러한 성능과, 사용자 경험을 향상시키기 위해 페이징을 사용하여 전체 데이터를 한번에 표시하지않고, 여러 페이지로 나누어 표시하는 기법입니다.  ✔ PageableSpring Data 에서는 페이징 처리를 간편하게 할 수 있도록 Pageable Interface를 제공합니다.구현체로 PageRequest class를 사용합니다. 🔎 PageRequestpackage org.springframework.data.domain;import org.springframework.lang.Nullable..

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 로그인, 로그아웃 기능 구현 및 타임리프 적용 (+스프링 시큐리티)

🤔 시작하기 전에 로그인, 로그아웃 기능 구현을 위해 SpringMVC의 Interceptor를 활용하여 구현하려고 했습니다. 하지만 관련 방법들을 찾아보면서 스프링 시큐리티를 통해 인증과 인가에 대한 부분을 좀 더 안전하고 손쉽게 처리할 수 있었습니다. 사용하기 전에 전체적인 구조, 흐름을 알고 싶어 스프링 시큐리티에 대해 알아보았습니다. 스프링 시큐리티 구조 및 인증과정 [Spring Security] 스프링 시큐리티 알아보기, 구조(Filter Chain) 및 인증 과정 🤔 스프링 시큐리티? 스프링 기반의 어플리케이션의 보안(인증과 인가)을 담당하는 프레임워크를 말합니다. 인증(Authentication) 로그인 과정처럼 사용자가 시스템에게 자신을 식별할 수 있는 자 average1.tistory...

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 게시판CRUD 서비스 로직 작성 + 테스트 코드 추가

🤔 시작하기 전에 개발 과정에서 만난 고민 builder?, Spring Data JPA?, DTO? [SpringBoot + JPA 게시판 만들기] 개발 과정에서 만난 고민 builder?, Spring Data JPA?, DTO? 🤔 고민 강의, GPT, 구글링을 하며 혼자서 개발하다보니 계속해서 새로운 문제에 직면하게 되었다. 객체를 생성할때에는 어떤 방법이 더 좋지? 인터페이스를 만들고 구현체를 만들어 역할과 구 average1.tistory.com 1. 객체 생성시 Builder 패턴을 사용하여 가독성을 높이고 일관성과 불변성을 해칠 위험을 제거했습니다. 2. Entity와 DTO의 범위를 Service계층 까지로 설정하였습니다, 즉 변환( Entity -> DTO, DTO -> Entity )..

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 개발 과정에서 만난 고민 builder?, Spring Data JPA?, DTO?

🤔 고민 강의, GPT, 구글링을 하며 혼자서 개발하다보니 계속해서 새로운 문제에 직면하게 되었다. 객체를 생성할때에는 어떤 방법이 더 좋지? 인터페이스를 만들고 구현체를 만들어 역할과 구현을 분리? Controller계층 즉 표현 계층에는 직접 Entity를 만들지 말고 DTO를 사용해서 값을 전달해줘야 하는데 그럼 DTO의 범위는 어디까지? ... 또 하나를 해결하면 다른 의문들이 떠올라 진행이 어려웠다. ✔ 객체를 생성할 때에는 어떤 방법이 더 좋지? 기존에 생각없이 setter메소드를 통해서 객체를 생성 후 값을 설정해주면서 일관성과 불변성을 해치고있었다. 고민 하던중 builder패턴에 대해서 알게되었다. 🔎 빌더 패턴 정리 [디자인 패턴] builder패턴 🤔 빌더 패턴(Builder Patt..

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 프로젝트 생성 및 환경 설정 + 엔티티(Entity) 생성 - 2

🔥 프로젝트 생성 Spring initializer 를통해 버전 정보, 언어, 이름, 의존성 등을 설정하고 프로젝트를 생성해줍니다. 💡 Dependencies Lombok : 어노테이션을 사용하여 getter, setter와 같은 반복되는 형식적인 코드를 줄이기 위해 의존성 설정합니다. Spring Web : Spring MVC, Apache Tomcat 등 웹개발에 필요한 의존성을 제공합니다. Thymeleaf : Thymeleaf 템플릿 엔진 사용하여 View를 렌더링 하기위해 의존성 설정합니다.Spring Data JPA : JPA를 사용하기 위해 의존성 설정합니다.( 🚨 아직 Spring Data JPA를 배우지 않았기 때문에 JPA만으로 개발하도록 하겠습니다. ) MariaDB Driver : ..

Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 요구사항 및 프로젝트 설계 - 1

💡 시작하기 전에 " 완벽주의를 경계하라 " 완벽을 추구한 나머지 실수와 실패를 두려워 하게되고, 과정은 생각지 않고 결과에만 집중한다. 라는 뜻으로 해석했다. 지금의 나처럼 필요한 스택을 모두 배워서 거창한 프로젝트를 해야지 라는 생각만 할 뿐 시작조차 안하고 있는 나에게 해주고 싶은 말이다. 그래서 일단은 시작하기로 했다 🔥 💻 사용 기술 - 프레임워크 : Spring - ORM : JPA - 데이터베이스 : MariaDB - 템플릿 엔진 : thymeleaf ✔ 게시판 기능 회원가입 로그인/로그아웃 게시물 목록 조회 게시물 상세 조회 게시물 등록 게시물 수정 게시물 삭제 게시물 목록 페이징 게시물 검색 🔎 페이징, 검색 과 같은 더 필요한 기능들은 추후에 기능확장을 통해 추가해볼 생각입니다. ✔ E..

장용석
'Project' 카테고리의 글 목록