Programming
-
Spring cache redisProgramming/Spring boot 2021. 8. 31. 17:13
cache란? 데이터나 값을 미리 복사해 놓는 임시 저장소를 가리킨다. 이러한 cache는 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근 가능하다. 정리하면 디스크에 접근하여 정보를 얻어오는 것 보다 빠른 속도로 데이터 조회가 가능하다. 하지만 인메모리로 설정할 경우 휘발성이기 때문에 서버가 다운되면 데이터는 사라질 수 있다. 즉 영구적으로 보관하기 위한 용도가 아니다. 그래서 이걸 왜? 만약 메인 페이지에 랭킹과 관련된 데이터를 매번 조회한다고 가정하면 해당 웹 서비스에 접속할 때 마다 랭킹 정보들을 데이터베이스에서 조회할 것이..
-
[JPA] JPA 양방향 연관관계 세팅 및 주의사항Programming/JPA 2021. 8. 28. 19:28
JPA 양방향 연관관계 세팅 및 주의사항 Spring Data JPA와 JPA 양방향 연관관계를 세팅하고 사용 시 주의할 점에 대해서 정리하였다. 밑은 간단한 예제 코드를 준비하였다. User는 다양한 Knowledge을 등록할 수 있다. 정리하면 User는 N개의 Knowledge를 등록할 수 있다고 가정한다. 두 엔티티 간의 관계는 1:N이다. 소스 코드 User.java @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id") private Long id; ..
-
[Java] DTO와 VO 그리고 EntityProgramming/Java 2021. 8. 1. 18:45
DTO와 VO 그리고 Entity DTO Data Transfer Object로 계층(Layer) 간 데이터 교환을 위해 사용하는 객체이다. 주로 데이터 교환을 위해서만 사용하기 때문에 특별한 로직을 가지고 있지 않고 getter/setter 메소드만 갖는다. public class UserDto { private String name; private int age; public UserDto(String name, int age) { this.name = name; this.age = age; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getA..
-
[git, github] github-flow 정리Programming/git, github 2021. 8. 1. 14:25
introduction 이번에 프로젝트를 진행하면서 github-flow 적용하기 위해 간단히 관련 내용을 정리해보려 한다. github-flow git 브랜치 전략 중 하나로, 이전에 작성한 git-flow보다 더 간단하게 적용이 가능하다. git-flow에서는 각 역할에 맞게 브랜치를 생성하고 적용해야 했다. 하지만 github-flow에는 별도의 브랜치가 분리되어 있지 않다. 또한 git-flow 방식은 github에서 사용하기엔 복잡한 부분이 많았다. 위 사진과 같이 main 브랜치를 기준으로 모든 브랜치가 뻗어 나간다. 이런한 main 브랜치는 항상 최신의 상태이며, stable한 상태로 배포되는 브랜치이다. 새로운 작업을 시작하기 위해서는 브랜치의 이름을 자세하게 작성하여 github에서 확인..
-
[Spring Security] Spring Security + JWTProgramming/Spring Sercurity 2021. 7. 31. 21:04
Spring Security + JWT Spring boot + Security + JWT를 활용하여 회원가입/로그인 로직 및 권한 체크 기능을 구현하였다. 추가적인 기능은 구현하지 않고 오로지 user 도메인을 활용하여 회원가입과 로그인, 토큰 발급을 진행한다. [무료] Spring Boot JWT Tutorial - 인프런 | 강의 Spring Boot, Spring Security, JWT를 이용한 튜토리얼을 통해 인증과 인가에 대한 기초 지식을 쉽고 빠르게 학습할 수 있습니다., [사진] 본 강의는 Spring Boot, Spring Security를 이용해서 JWT 인증과 인가를 쉽 www.inflearn.com 전반적인 로직과 코드는 위 강의를 참고하였고, 필요에 따라 수정하여 재반영 하였다...
-
[Spring Security] Spring Security 간단 정리Programming/Spring Sercurity 2021. 7. 27. 15:11
Spring Security Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter의 흐름에 따라 처리한다. Filter이기 때문에 Dispatcher Servclet으로 가기 전에 적용 된다. 이러한 Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서 보안과 관련된 로직을 일일이 작성하지 않아도 된다는 장점이 있다. 인증(Authorization)과 인가(Authentication) 인증 Authentication: 해당 사용자가 본인이 맞는지를 확인하는 절차 인가 Authorization: 인증된 사용자가 요청한 자원에 접근 가능..
-
[Java] 매개변수(Parameter)와 인수(Argument)Programming/Java 2021. 7. 22. 00:32
항상 인자, 인수, 매개변수 등등 언어들의 차이를 무시하고 혼용하며 사용해 왔다. 이번 기회에 간단히 차이점을 알아보고 정리해두려 한다. public int add (int a, int b) { return a + b; } 평범한 java 메소드이다. a와 b를 단순히 더하기 위한 용도로 선언하였다. 여기서 int a와 int b가 나타내는 것은 매개변수를 의미하는 Parameter이다. add(3, 4); 위에서 선언한 add 메소드를 실행한 문장이다. 여기서 3, 4는 인수를 의미하는 Argument이다. argument는 실제 메소드가 호출될 때 매개변수에 담기는 값이다.
-
[JAVA] Arrays.asList()Programming/Java 2021. 7. 18. 16:50
java.util.Arrays에는 배열을 조작하기 위한 static method들이 모여 있다. Arrays (Java SE 11 & JDK 11 ) Compares two int arrays lexicographically over the specified ranges. If the two arrays, over the specified ranges, share a common prefix then the lexicographic comparison is the result of comparing two elements, as if by Integer.compare(int, int), at a rel docs.oracle.com 그 중에 배열을 List로 바꾸는데 편리하게 사용할 수 있는 Arrays...