본문 바로가기

개인 공부89

[이펙티브 자바] 아이템 1 : 생성자 대신 정적 팩토리 메서드를 고려하라 ✍️ 학습 목표 객체 생성하기 정적 팩토리 메서드의 장점 정적 팩토리 메서드의 단점 📌 객체 생성하기 객체를 생성하는 가장 흔한 방법은 public 생성자를 사용하는 것이다. 정적 팩토리 메서드를 사용해서도 객체를 생성할 수 있다. 차이는 다음과 같다. 🧐 public 생성자 class Pokemon { private int attack, defense, hp; public Pokemon(int attack, int defense, int hp) { this.attack = attack; this.defense = defense; this.hp = hp; } } public class Item1 { public static void main(String[] args) { Pokemon 피카츄 = new .. 2022. 12. 7.
[자바 ORM 표준 JPA 프로그래밍] 다양한 연관관계 매핑 (6장) 📌 다대일 다대일 관계에서 외래 키는 항상 다쪽에 존재한다. 즉, 연관관계의 주인은 항상 다쪽이다. 1️⃣ 다대일 단방향 [N:1] 회원은 Member.team으로 팀 엔티티를 참조할 수 있지만 반대로는 참조할 수 없다. 2️⃣ 다대일 양방향 [N:1, 1:N] 다대일 양방향에서 핵심은 다음과 같다. 양방향은 외래 키가 있는 쪽이 연관관계의 주인이다. 양방향 관계는 항상 서로를 참조해야 한다. 📌 일대다 다대일 관계의 반대 방향이다. 보통 엔티티를 하나 이상 참조할 수 있으므로 자바 컬렉션을 사용한다. 1️⃣ 일대다 단방향 [1:N] 보통 자신이 매핑한 테이블의 외래 키를 관리하는데 Team.members로 회원 테이블의 TEAM_ID 외래 키를 관리한다. 이 경우 mappedBy 속성을 사용하지 않고 .. 2022. 12. 2.
TIL : StringUtils 사용하기 (17) 🔧 StringUtils StringUtils란? Apache에서 지원하는 문자열을 다루는 라이브러리이다! Spring에서 지원하는 StringUtils가 있는데 그거완 다르다! 🧐 왜 사용할까? str1.equals(str2) // str2이 null 이라면 NullPointerException 발생! StringUtils 라이브러리는 Null-Safety하기 때문이다. 😎 사용하기 라이브러리이다 보니 의존성을 추가해야 한다. 1️⃣ Gradle implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.8' 2️⃣ Maven org.apache.commons commons-lang3 3.8 😋 지원 메소드 너무 많으니까.. 2022. 12. 1.
TIL : JWT, Access Token / Refresh Token (16) 🔐 JWT JWT란? Json Web Token의 약자로 인증에 필요한 정보를 암호화시킨 JSON 토큰이다. JSON 데이터를 Base64 URL-safe Encode로 인코딩하였고, 토큰 내부에 위조 방지를 위한 전자서명도 들어있다. 🧷 구조 (Header.Payload.Signature) Header : 타입과 해시 알고리즘(ex. HMAC SHA256, RSA)의 종류를 담고 있다. Payload : 사용자 권한, 정보 등을 담고 있다. Key-Value로 이루어진 정보를 Claim이라고 한다. Signature : 헤더에서 정해진 알고리즘과 비밀키를 사용해서 암호화한 인증을 위한 데이터이다. 🧐 왜 JWT를 사용할까? Base64를 통해서 암호화한다는 것을 알기 때문에 누구나 Payload를 쉽게.. 2022. 11. 30.
TIL : 서버 인증 방식 (쿠키, 세션, 토큰) (15) 🍪 쿠키 인증 방식 쿠키란? 서버를 통해서 클라이언트 쪽에 저장되는 Key-Value 형식의 문자열 덩어리이다. 이 쿠키를 통해서 클라이언트가 누구인지 인증한다. 🌊 Flow 클라이언트가 서버에 요청을 보낸다. 서버가 요청에 대한 응답 헤더에 쿠키를 담아서 보낸다. 이후 클라이언트가 요청을 보낼 때마다 쿠키를 같이 보내고 서버는 해당 쿠키로 클라이언트를 확인한다. 🧷 단점 요청 시 쿠키의 값을 그대로 보내기 때문에 보안성이 떨어진다. 쿠키에는 용량 제한이 있다. 브라우저마다 쿠키 지원 형태가 다르기 때문에 공유가 불가능하다. 📖 세션 인증 방식 쿠키의 보안 이슈를 해결하기 위해 클라이언트 쪽이 아닌 서버 측 저장소에 보관하는 방식이다. 쿠키와 마찬가지로 Key-Value의 형태의 데이터를 저장하고 Key.. 2022. 11. 30.
TIL : Swagger 사용하기 (14) 📚 Swagger Swagger란? API 명세서를 자동으로 작성해주는 라이브러리이다. Swagger2, Swagger3이 있는데 버전이 다른 게 아니라 진짜 다른 라이브러리이다. (Spring Rest Doc) 1️⃣ 의존성 추가하기 implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' 2️⃣ Configuration 추가하기 @Configuration @EnableSwagger2 public class SwaggerConfig { /** http://loca.. 2022. 11. 28.