분류 전체보기510 열거형(Enum) 을 알아보자 열거형(Enum) 은 서로 관련된 상수를 편리하게 선언하기 위해 사용합니다. 입력해야할 값이 정해져있는 경우, ex) 회원권한, 요일(월~일) 등 이러한 경우에는 Enum 타입으로 생성하면 다른 불필요한 값이 들어올 수 없으므로 더욱 효율적인 코드를 작성할 수 있도록 도와줍니다. 클래스에서 상수를 선언하기 위해서는 아래와 같은 방법을 사용했습니다. public class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; } Enum 을 사용하면 아래와 같이 변경할 수 있습니다. public class Card { enum Kind {CLO.. 2023. 2. 12. Generics (지네릭스) 를 알아보자 Generics는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능입니다. 장점으로는, 컴파일 시에 체크하기 때문에, 문법적인 오류를 바로 확인할 수 있고, 타입의 안정성을 높일 수 있습니다. 또한, 다룰(사용할) 객체 타입을 미리 명시함으로써, 형변환의 번거로움을 줄여줍니다. 지네릭는 아래와 같이 선언되어있습니다. 지네릭을 사용하지 않는 객체의 타입은 아래와 같습니다. class Box { Object item; public Object getItem() { return item; } public void setItem(Object item) { this.item = item; } } Box 으로 지네릭클래스를 설정할 수 있습니다. T는 타입 변수를 뜻하며, 원.. 2023. 2. 12. JWT 토큰 + @AuthenticationPrincipal @AuthenticationPrincipal 어노테이션을 사용하면 JWT 토큰 정보에 필터링 된 유저정보를 Controller 에서 간단히 가져올 수 있습니다. 이번 포스팅에서 변경해볼 사항은 SecurityContextHolder (이전) -> @AuthenticationPrincipal(변경) 해보겠습니다. Spring Security 에서는 인증된 사용자 정보를 SecurityContextHolder 내부의 SecurityContext 에 Authentication 객체로 저장을 하고 이후 필요할 때 꺼내어 사용합니다. SecurityContextHolder 에 저장된 회원을 꺼내어 사용하는 방법을 알아보겠습니다. 먼저 해당 어노테이션을 몰랐을 때, 사용했던 방법은 아래와 같은 방법을 통해 auth.. 2023. 2. 11. [CS] RDBMS 와 NoSQL 의 차이 프로젝트 때 RDBMS 의 종류인 MySQL을 사용해서 진행했는데, NoSQL은 사용해보지 않아 RDMS 와 NoSQL 의 차이를 알아보려고 합니다. 먼저 데이터베이스란 무엇일까요? 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리하는 데이터의 집합입니다. 특징으로는 실시간접근 , 지속적인 변화, 동시 공유가 있습니다. RDBMS 는 관계형 데이터 베이스 입니다. 정해진 스키마에 대에 따라 데이터를 저장합니다. 따라서, 데이터 구조가 명확할 때 사용하는 것이 좋습니다. 장점으로는 정합성을 보장할 수 있고, 데이터의 중복이 없기 때문에 수정이 쉽습니다. 단점으로는 연관된 테이블은 join 을 이용해서 관계를 맺는데, 시스템이 커지면 성능저하의 가능성이 있습니다. 또한, 성능을 향상시키기 위해서는 s.. 2023. 2. 9. SpringSecurity Enum 타입으로 권한 설정하기 사전과제로 여러 요구사항 중 권한을 부여하는 요구가 있어 정리했습니다. 이전에 프로젝트할 때 구현을 해보았을 때 권한부분에서는 순조로웠는데, 이번에는 403 에러가 계속 발생해 설정에 관한 부분을 다시 한번 학습할 수 있었습니다. 권한을 Enum 으로 지정한 클래스입니다. Enum 으로 지정한 이유는 잘못된 권한(값) 이 들어오지 않도록 하기 위해서 입니다. 3가지 권한이 있는데 여기서 실수가 있었습니다. ROLE_ 을 안붙여줘서 403 에러가 발생했습니다. 붙여야 하는 이유는 SpringSecurity 가 prefix를 자동으로 "ROLE_" 을 넣어주기 때문입니다. @Getter public enum AccountType { ROLE_LESSOR("임대인"), ROLE_REALTOR("공인중개사"),.. 2023. 2. 7. querydsl 다중 조건 검색 만들기 https://josteady.tistory.com/848 이전에 학습하려고 간단히 예제를 만들어보고, 개인프로젝트에 적용해보려고 합니다. 전 포스팅에서는 0원 이상 0원 이하의 조건으로 검색했으나, 이번에는 카테고리를 추가해보려고 합니다. querydsl 를 위한 customRepository는 이전에 만들었으니 바로 코드를 확인해보겠습니다. public class GoodsRepositoryImpl implements GoodsRepositoryCustom { private final JPAQueryFactory queryFactory; private final CategoryRepository categoryRepository; public GoodsRepositoryImpl(EntityManage.. 2023. 2. 5. Querydsl 동적 쿼리 - 기초 예제 Querydsl 학습을 하면서 기초이지만, 기초를 토대로 응용할 수 있기때문에 정리해보았습니다. 동적쿼리에 관련된 코드를 짜지 못해보았는데 연습하면서 접해볼 수 있어서 동적쿼리가 무엇인지, Querydsl를 왜 사용해야하는지 알게되었습니다. 해당 예제는 Dto 타입을 조회하는 것이 아닌 Entity 를 조회하는 예제입니다. 만들 예제는 아주아주 간단한, 설정한 값 사이에 있는 상품을 조회하는 것 입니다. 실제로, 상품이 000원~ 000원 사이의 상품을 검색해본 경험이 많아서 주제로 선택했습니다. 스프링 데이터 JPA 인터페이스를 따로 만들어주고, 사용자 정의 인터페이스를 하나 더 작성해주었습니다. 먼저, 스프링 데이터 JPA 인터페이스를 만들었습니다. 기본적인 CRUD 기능을 자동으로 지원해줍니다. G.. 2023. 2. 4. [solvesql] SQL 문제 풀이 (5) 1. 첫 주문과 마지막 주문 select date(min(order_purchase_timestamp)) as first_order_date, date(max(order_purchase_timestamp)) as last_order_date from olist_orders_dataset; 2. 많이 주문한 테이블 찾기 select * from tips where total_bill > ( select avg(total_bill) from tips ); 2023. 2. 3. QueryDsl 설정 방법 - Spring boot 2.7.x + 23.02.03 수정 + 23.02.04 내용추가 ( Unable to load class 'com.mysema.codegen.model.Type'. 에러 ) https://www.inflearn.com/questions/355723/compilequerydsl-%EC%98%A4%EB%A5%98 compileQuerydsl 오류 - 인프런 | 질문 & 답변 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼 www.inflearn.com 김영한님의 실전 Querydsl 강의를 시작하고 Querydsl 설정방법에 대해 간단히 정리하고자 합니다. 강의의 버전은 2.. 2023. 2. 3. 이전 1 ··· 9 10 11 12 13 14 15 ··· 57 다음