전체 글

안녕하세요. 고민하는 개발자가 되고 싶은 Hayden 입니다. 초보 개발자의 공부 과정을 기록하는 블로그입니다. 현재 Spring boot에 관심을 가지고 공부하고 있습니다.
스프링부트에서 DB를 사용할 경우, 대개 Spring Daat JPA를 사용하여 DB와 상호작용한다.JPA를 사용할 경우, 프로젝트를 시작할때, 프로젝트에 정의된 Entity에 따라서 자동으로 DB를 초기화해주는 상황을 한번쯤 본 적 있을것이다. 해당 초기화를 잘 사용하면 DB 테이블을 직접 생성하지 않고도 편리하게 테이블을 사용할 수 있다.이와같은 초기화 방법에 대해 스프링 부트 공식 문서에서는 설명하고 있다.본 글에서는 해당 내용에 대해 정리해보고자 한다.DB 초기화스프링부트에서는 DB를 초기화 하기 위한 두가지 방법을 제공한다.spring.jpa.generate-ddl (boolean) : DB 초기화 기능을 끄고 킬수 있다.spring.jpa.hibernate.ddl-auto (enum) : 위의..
Spring Security를 사용하여 웹 상에서의 인증/인가 작업을 구현할 때는 세션-쿠키 기반의 인증 방식을 사용한다.하지만 이러한 인증 방식에는 몇가지 단점이 존재한다.이러한 단점을 보완하는 인증 방식으로 JWT 인증 방식이 존재한다.이때 JWT가 어떻게 사용되고 왜 필요한지 한번 살펴보자✨ JWT의 개념과 필요성세션-쿠키 기반 인증 방식의 한계세션-쿠키 기반 인증 방식에서는 클라이언트의 세션 정보를 서버의 DB에 저장한다.이 경우 클라이언트의 매 요청마다 DB를 참조해야 하므로 인증 과정이 길어진다.서비스가 확장되어 클라이언트의 수가 많아질 경우, 그만큼 서버에 저장되는 세션 정보도 많아짐으로 서버의 부담도 증가한다.세션-쿠키 인증 방식의 경우, 클라이언트는 발급받은 토큰 아이디를 쿠키에 저장한다..
유저별로 표시할 내용이 달라야 하는 경우, 페이지를 리턴하기 전에 먼저 로그인한 유저가 누구인지 알아야 할 필요가 있다.스프링부트에서는 Controller단에서 로그인된 유저를 얻을 수 있도록 @AuthenticationPrincipal 아노테이션을 지원한다.사용 예시@PostMapping("/diary/write") public String postDiaryWrite(@AuthenticationPrincipal User user, DiaryDto.CreateDiaryDto diaryDto){ diaryService.createDiaryWithUserid(diaryDto,user.getUser_id()); return "redirect:/today"; } 컨트롤러 단에..
프로젝트를 진행하다 보면 엔티티에 생성 시간 또는 마지막 수정 시간에 대한 필드를 넣는 경우가 한번쯤 있을 것이다.이때 가장 단순한 방법으로는 setter 를 사용해서 직접 시간을 설정해 줄수도 있겠지만, 매번 직접 시간을 설정하자니 영 번거롭다.JPA에서는 이러한 상황을 위해, 시간을 자동으로 기록해주는 기능을 제공한다.한번 살펴보자.01.JPA Auditing 이란?Auditing은 '감시', '감사' (thank 말고 다른 감사..)의 의미를 가지고 있다.Auditing은 말 그대로 Entity의 생성, 변경 등을 감시하는 기능이다.JPA에서는 Auditing을 통하여 Entity가 생성되거나 변경되는 시간을 추적하고 기록한다.그럼 해당 기능을 어떻게 사용하는지 알아보자02.JPA Auditing ..
프로젝트를 진행하다 보니, Entity 클래스 내부에 존재는 해야하는데, DB에는 저장할 필요 없는 변수를 사용할 일이 생겼다.properties 파일의 값을 받아오기 위해 @Value를 사용할 변수를 정의했는데, 해당 변수를 DB에는 반영시키고 싶지 않았다.이를 위해 방법이 없나 살펴봤는데 @Transient 아노테이션을 사용하면 DB에 반영되지 않는다고 한다.ex@Entity@Getter@Setterpublic class Diary { @Transient @Value("${path.res.img.default-img}") String defaultImgPath; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) priv..
·Java
자바에서 Karlo API를 사용하던 중, 리턴받은 이미지 URL을 로컬 파일로 저장하는 기능을 구현해야 할 필요가 생겼다.다행히 자바의 Files.copy() 메소드를 사용하여 해당 기능을 쉽게 구현 가능했다.test.javapublic void saveImageUrl(String imgUrl, String savePath) throws IOException { InputStream inputStream = new URL(imgUrl).openStream(); Files.copy(inputStream, Path.of(savePath)); }- 결과아주 잘 저장 되었다.Reference[Java] URL로 부터 File Download 하는 방법
Im_Hayden
Hayden의 개발 일지