본문 바로가기

코딩 공부/web & Java127

[Spring / Redis] Redis LocalDateTime 역직렬화 오류 Redis LocalDateTime 역직렬화 오류오류에 대해서 설명하기 전에 직렬화와 역직렬화에 대해 설명을 하려고 합니다.🏷️ 직렬화(Serialization)와 역직렬화(Deserialization) 객체를 데이터로 변환하고, 다시 데이터를 객체로 변환하는 과정을 의미하며, 주로 네트워크 통신이나 파일 저장 등에서 객체를 전송하거나 저장할 때 사용합니다.✅ 직렬화직렬화는 객체를 바이트 스트림(데이터를 바이트(byte)의 연속으로 나타낸 것)으로 변환하는 과정입니다. 직렬화를 위해서는 직렬화 가능한 클래스에 Serializable 인터페이스를 구현해야 하지만, Spring Boot에서는 직렬화된 객체를 웹 요청 또는 응답으로 전송할 때 자동으로 직렬화를 수행합니다.Spring Boot 에서는 일반적으.. 2024. 10. 3.
[Spring / Vue] Spring과 Vue를 연동시 주소로 입력하면 오류나는 문제 Spring과 Vue를 연동시 주소로 입력하면 오류나는 문제Spring과 Vue를 연동하여 같이 실행되도록 하고 vue의 router-link를 통해서 페이지를 이동하면 문제가 없으나 주소창의 URL을 직접 입력하거나 새로고침을 할경우 404에러가 발생하는 문제가 생겼습니다.🏷️ 원인 SPA(Single Page Application)는 말 그대로 단일 페이지에 동적으로 내용을 변경하여 웹 페이지를 구성하게됩니다. SPA의 모든 경로는 결국 단일 페이지(index.html)로 향하게 되어있기 때문에 다른 경로에서 새로고침을 한다면 그 경로로 GET 요청을 보내는 것과 같기 때문에 404 해당 경로를 찾을 수 없는 에러가 발생하게 됩다.   즉, vue.js에서 라우팅을 통해 페이지 이동을 하지 않고 브.. 2024. 10. 3.
[Java / TDD] 테스트 케이스 작성시 발생한 영속성 관련 오류 ✔️ 사용된 엔티티1. QuestionBoard@Getter@Setter@Table(name = "question_board")@ToString(callSuper = true)@Entitypublic class QuestionBoard extends AuditingFields { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // UsreAccount와 연결 -> JoinColumn을 통해 user_id와 연결 @JoinColumn(name = "user_id") @ManyToOne private UserAccount userAccount; // 유저 정보 @Column(null.. 2024. 8. 28.
[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.
[JPA] N + 1 문제 N + 1 문제 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오는 현상입니다. 🏷️ 예시 위와 같이 DB가 만들어져 있었을 때, EAGER(즉시 로딩)으로 한 경우와 LAZY(지연 로딩)으로 한 경우를 살펴보겠습니다. ✅ Fetch 모드를 EAGER(즉시 로딩)으로 한 경우 // User 엔티티 @Entity public class User { @Id @GeneratedValue private long id; private String firstName; private String lastName; @ManyToOne(fetch = FetchType.EAGER)// 즉시 로딩 @JoinColumn(name = "team_id.. 2024. 4. 23.