Java(15)
-
[유신사 프로젝트] 로그인 & 회원가입 기능 2
코드를 짜면서 좀 헷갈렸던 개념이랑 새로 알게 된 개념을 정리해봤다. 1. @MapsId@MapsId는 연관관계의 외래키를 복합키의 일부로 사용하고 싶을 때 쓰는 어노테이션이다.예를 들어, user_role 테이블은 user_id와 role 두 개 컬럼을 PK로 가진다.이때 user_id는 동시에 user 테이블을 참조하는 외래키(FK)이기도 하다. @Entitypublic class UserRole { @EmbeddedId private UserRoleId id; @MapsId("userId") @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; ...} 여기서 @Ma..
2025.09.21 -
바인딩 어노테이션 정리
맨날 사용하지만 가끔씩 헷갈릴 때가 있어서 정리해두면 생각을 하던 찰나 생각난 김에 정리하기로 했다. 애노테이션 설명 예시 @RequestParam 요청 파라미터(쿼리 스트링, 폼 데이터)를 개별 변수로 바인딩 @RequestParam("name") String name → ?name=sangyun @PathVariable URL 경로 변수 바인딩 @PathVariable("id") Long id → /users/10 @ModelAttribute 요청 파라미터를 객체에 바인딩 (폼 처리 시 주로 사용) @ModelAttribute UserDTO user @RequestBody..
2025.04.10 -
보물찾기 게임
수련회에서 레크레이션 TF 팀을 맡으면서 간단한 미니게임을 만들었었다. 여기저기 돌아다니면서 QR을 찾고 그 중에 보물이나 문제를 찾는 게임이다. 사진이 왜 이거밖에 없냐하면... 여러가지 예시 이미지 스샷을 찍고 서버를 내렸어야 했는데... 증거 스샷을 남기기 전에 서버를 내려버렸다. 보물 QR같은 경우에 문제 대신에 위 사진들이 들어갔다고 보면 된다.
2025.03.26 -
Lombok을 이용한 생성자 주입
항상 기본 생성자 주입 방법과 필드 주입 방식만 사용했었는데 Lombok의@RequiredArgsConstructor를 썼더니 난 이게 좀 더 편한 것 같았다. @Service@RequiredArgsConstructorpublic class EventService { private final EventRepository repository; // 이하 Entity 및 함수들} 앞으로 많이 애용할 것 같다.
2024.11.10 -
DTO의 중요성을 알아버렸다...
최근 프로젝트를 하면서 협업을 하다보니, DTO명이나 기능이 서로 잘 안맞는 경우가 많았어서 회의를 하면서 일단은 DTO를 사용하지 말고 리팩토링 할 때 Entity를 DTO로 바꾸자고 먼저 제안하였다. 이 결정은 얼마 지나지 않아 당연히 번복되었는데 DTO를 사용하지 않기로 하면서 여러 불편한 점이 많았기 때문이다. 일단 ChatGPT가 알려준 DTO를 사용해야 하는 이유는 아래와 같다. 1. 불필요한 정보 노출 방지엔티티에는 비즈니스 로직과 관련된 다양한 필드가 포함되어 있습니다. 예를 들어, 민감한 사용자 정보나 내부적으로만 사용되는 필드를 외부에 그대로 노출하면 보안 및 정보 관리에 문제가 생길 수 있습니다.DTO를 사용하여 필요한 정보만 클라이언트에 전달하면, 데이터 노출을 최소화하고 보안을 강..
2024.11.10 -
@Controller와 @RestController의 차이점
@Controller와 @RestController는 모두 스프링 MVC에서 사용되는 애너테이션으로, 웹 요청을 처리하는 컨트롤러 클래스를 정의하는 데 사용됩니다. 그러나 두 애너테이션의 사용 목적과 동작 방식에는 몇 가지 중요한 차이점이 있습니다.@Controller@Controller는 전통적인 스프링 MVC 컨트롤러를 정의하는 데 사용됩니다. 주로 HTML 뷰를 반환할 때 사용되며, JSP, Thymeleaf 등 템플릿 엔진을 통해 서버 측에서 뷰를 생성합니다. 주로 웹 애플리케이션의 프론트엔드와 백엔드 간의 상호작용에서 사용됩니다.주요 특징:뷰 리졸버 사용: @Controller는 문자열을 반환하면 해당 문자열이 뷰 이름으로 해석됩니다. 스프링의 뷰 리졸버(View Resolver)가 이 뷰 이름..
2024.05.17