Java 25

[Spring Boot] JPA로 REST API 개발하기 (3)

이전 글에서는 JPA를 활용하여 게시글 관리 REST API를 개발하고 CRUD 기능을 구현하는 과정을 다뤘습니다. 이번에는 댓글 관리 기능을 추가하여, 게시글에 대한 사용자 의견을 저장하고 조회할 수 있도록 개선해보려고 합니다. 엔티티 클래스 작성package com.demo.domain;import java.util.Date;import org.hibernate.annotations.DynamicInsert;import org.hibernate.annotations.DynamicUpdate;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.GenerationType;i..

[Spring Boot] JPA로 REST API 개발하기 (2)

이번 글에서는 JPA를 활용해서 포스트 관리 REST API 개발 과정입니다.게시글 작성(Create), 게시글 조회(Read), 게시글 수정(Update), 게시글 삭제(Delete) 엔티티 클래스 작성package com.demo.domain;import java.util.Date;import org.hibernate.annotations.DynamicInsert;import org.hibernate.annotations.DynamicUpdate;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.GenerationType;import jakarta.persistence..

[Spring Boot] JPA로 REST API 개발하기 (1)

Spring Boot와 JPA를 이용한 REST API 개발사용 기술 : Spring Tool Suite4(STS 4), Spring Boot, Spring Web, Spring Data JPA, Spring Boot DevTools, Oracle DB, Oracle Driver, Lombok, ThymeleafREST API(Representational State Transfer API) : 클라이언트와 서버 간 통신을 HTTP 프로토콜을 기반으로 설계하는 방식Resource(자원) 중심 설계 : URI를 통해 자원 식별HTTP 메서드GET : 데이터 조회POST : 데이터 생성PUT : 데이터 수정DELETE : 데이터 삭제JSON, XML 응답JPA(Java Presistence API) : Ja..

Spring Security를 활용한 사용자 권한 기반 접근 제어

저번 글의 Spring Security를 활용한 로그인 이후로 이번에는 관리자 페이지를 구현하면서 Role에 따라 접근 가능한 페이지/기능을 제어하는 방법을 공부하고 기록해 보려고 합니다.. 오류만 안난다면.... 금방 끝나겠지!? +++ 이전 게시글에서 수정 +++MemberController에서 "/main" 매핑을 삭제, MainController 생성package com.demo.controller;import org.springframework.security.core.Authentication;import org.springframework.security.core.context.SecurityContextHolder;import org.springframework.stereotype.Cont..

개인 공부 2024.12.24

Spring Security를 활용한 로그인!?!?

예전에 한 회사에서 면접을 볼 때 "Spring Security 사용해 본 적이 있나요?" 라고 했을 때 없다고 했었는데 개인 공부를 하면서 웹 개발 중 제일 처음 배웠던 로그인 기능을 Spring Security에 대해서 공부도 할 겸 활용해 보겠습니다..(그 때, 사용한 적 없다고 했지만 어떤 기능인지 알고 잘 대답했더라면 합격 했을 수도 있었을 것 같네....) Spring Security???Spring 기반 애플리케이션에서 인증(Authentication)과 권한 부여(Authorization)를 처리하는 강력한 보안 프레임워크.ㅇㅐ플리케이션을 외부 공격으로부터 보호하고, 사용자의 접근 권한을 제어하는데 필요한 다양한 기능을 제공합니다. Spring Security의 주요 기능인증(Authent..

개인 공부 2024.12.21

MVC 패턴이 뭔데...

SpringBoot를 통한 프로젝트를 하다보니 내가 제대로 이게 어떤 기능이고, 어떻게 사용하는지에 대한 설명을 제대로 하지 못하는 모습을 보고 혼자 공부도 하고, 면접 준비를 위한 글입니다요.... 초보 개발자로 살아남기가 많이 힘드네요 ㅠ_ㅠ MVC가 뭔데...  Model-View-Controller 랍니다!!! 이건 기본이겠죠..? 아무튼 이렇게 나눠서 구현하는 디자인 패턴이랍니다. application의 구성 요소를 분리하여 관리하기 쉽고, 코드의 유지보수성을 높이는데 도움을 준다는데.. 말이 너무 어렵네요. Model : 애플리케이션의 데이터와 비지니스 로직을 처리하며, DB(데이터베이스)와 상호작용을 하거나, 로직을 수행하는 역할.View : 사용자에게 데이터를 시각적으로 표현. Html, ..

개인 공부 2024.12.18

Spring Boot - 국립 도서관 Open API를 활용한 도서 검색 구현

이번 글에서는 국립 도서관의 Open API를 활용하여 도서 검색 및 결과를 웹 페이지에 나타내는 방법을 소개해 볼게요. 부족한 실력 탓에 설명이 미흡합니다... 이해해주세요 :) *** 지난번 글에서 api의 key에 대한 설명이 없었던 것 같아서 여기에 작성해 볼게요 ***저는 api key를 application.properties에 따로 저장해서 사용했습니다. library.api.key : 국립 중앙 도서관의 api key.aladin.api.key : 알라딘 api key (이건 여기서 사용하지 않아서 필요 없어요!!!) ItemDTO (저번과 똑같아요 수정할 필요 없습니다..)package com.demo.dto;import com.fasterxml.jackson.annotation.Json..

Spring Boot - 국립 도서관 Open API를 활용한 사서 추천 도서 목록 구현

이번 글에서는 국립 도서관의 Open API를 활용하여 사서가 추천하는 도서를 가져오고, 웹 페이지에 표시하는 방법을 소개해 볼게요. 부족한 실력 탓에 설명이 미흡합니다... 이해해주세요 :) API에서 반환데는 데이터를 매핑할 DTO 작성package com.demo.dto;import jakarta.xml.bind.annotation.XmlElement;import jakarta.xml.bind.annotation.XmlRootElement;import lombok.Getter;import lombok.Setter;@Getter@Setter@XmlRootElement(name = "item")public class BookRecommendation { private String drCodeNam..

Spring Boot - 관리자 페이지 (5)

지난 글에 이어서 관리자 페이지에서의 회원 질문 관리에 대한 기능 구현과 설명을 이어가겠습니다.부족하더라도 이해해주세요. :) adminMain.html 질문 관리 고정 질문 회원 질문 회원 질문 링크 클릭 시 이전 글에서 미리 만들어 둔 Controller 처리로 회원 질문 페이지로 이동.// 회원질문 페이지@GetMapping("/admin-customer-qna")public String customerQuestions(HttpSession session, Model model) { Member admin = (Member)session.getAttribute("admin"); if(admin == null) { model.addAt..

Spring Boot - 관리자 페이지 (4)

이번 글에서는 관리자 페이지에서의 사이트의 질문(Q&A)관리에 대한 기능설명과 코딩을 만들어 보겠습니다.부족하더라도 좋게 봐주세요. :) ===== 질문 관리 =====Qna 클래스 생성package com.demo.domain;import java.util.Date;import org.hibernate.annotations.ColumnDefault;import org.hibernate.annotations.DynamicInsert;import org.hibernate.annotations.DynamicUpdate;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.Gene..