본문 바로가기

Java715

[JWT] JWT 0.12.5 최신화 문제 해결 예전 공부할 때, 사용했던 JWT 및 Key 생성을 직접 사용해 보고 그때보다 좀 더 최신 버전을 사용하고 싶었습니다.public class JwtTokenUtils { // 토큰에서 username 가져옴 public static String getUserName(String token, String key) { return extractClaims(token, key).get("userName", String.class); } // 종료 시간 public static boolean isExpired(String token, String key) { Date expiredDate = extractClaims(token, key).getExpir.. 2024. 7. 20.
[Java] 팩토리 메소드 팩토리 메소드팩토리(Factory)는 '공장'이라는 뜻을 가지고 있습니다. 일반적으로 클래스의 객체를 생성할 때, 생성자를 통해서 객체를 생성하지만 팩토리 메소드 라는 공장을 통해서 객체를 만들 수도 있습니다.public class User{ private String username; public Person(String username){ this.username = username; }}위에 코드는 Java로 객체를 작성할 때, 많이 사용하던 코드입니다.User user = new User("유저 이름");그리고 우리는 객체를 생성할 때, 위와 같이 생성자 호출을 통해서 객체를 생성했습니다. 그런데 우리는 생성자의 인자만 봐서는 이것이 유저 이름을 나타내는 것인지.. 2024. 7. 13.
[Java] DTO를 Record로 만드는 이유 Record// 레코드 선언법public record 레코드명(컴포넌트1, 컴포넌트2, ...) { }값의 집합으로 이루어진 간단한 객체를 심플하게 개발하기위해 고안되었으며, immutable data(불변데이터)를 다룰 class 구현에 최적화되어있습니다. 따라서 웹서비스 구현에서 많이 사용되는 DTO 개념에 적용하면 유용합니다. 생성자, accessors(getter), equals(), hashCode(), toString() 등 DTO 특성의 클래스를 개발할때 매번 개발자가 직접 구현해주어야 했던 반복적인 작업이 줄어듭니다. 또한, "이 클래스는 data carrier 용도이다"를 명시적으로 나타낼 수 있으므로 코드에 대한 이해를 돕고 해당 클래스의 목적에 맞지 않는 구현을 하지 않도록 방지해줍니.. 2024. 4. 17.
[Java] Lombok LombokLombok이란 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리입니다. Lombok을 이용하면 Getter, Setter, Equlas, ToString 등과 다양한 방면의 코드를 자동완성 시킬 수 있습니다. 예를 들어 객체에서 생성자도 필요하고, toString 함수도 Override 해야하는 등 추가적인 작업이 필요하다면 1개의 VO 클래스만 해도 상당히 길어지고, 코드의 가독성은 떨어지는 등의 단점이 있습니다. 하지만 Lombok을 적용한다면 아래와 같이 단순화시킬 수 있습니다.// Lombok 적용 전public class User { private String useuId; // 유저ID private String password; // 비밀번호 // 생.. 2024. 3. 10.
[JPA] findById와 getReferenceById 🏷️ 데이터를 가져오는 방식 ✅ findById Optional findById(ID id) ▪️ Optional: 조회된 엔티티를 Optional로 감싼 반환 타입입니다. Optional은 엔티티가 존재하지 않을 수도 있는 경우에 사용됩니다. ▪️ ID: 조회할 엔티티의 식별자(ID) 타입입니다. ▪️ 조회된 엔티티 객체를 Optional로 감싸서 반환합니다. ▪️ CrudRepository와 JpaRepository 인터페이스에서 모두 제공되는 메소드입니다 ✅ getReferenceById public T getReferenceById(ID id) ▪️ T: 반환 타입으로 엔티티의 클래스 타입입니다. ▪️ ID: 조회할 엔티티의 식별자(ID) 타입입니다. ▪️ 엔티티가 영속성 컨텍스트에 없으면 Ent.. 2024. 3. 9.
[Java] Optional Optionalpublic final class Optional { // If non-null, the value; if null, indicates no value is present private final T value; // 생략}Java8에서는 Optional 클래스를 사용해 NPE를 방지할 수 있도록 도와줍니다. 즉, Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와줍니다. Optional 클래스는 아래와 같은 value에 값을 저장하기 때문에 값이 null이더라도 바로 NPE가 발생하지 않으며, 클래스이기 때문에 각종 메서드를 제공합니다. 🏷️ NPE(NullPointerException)// names가 n.. 2024. 1. 27.