Spring(9)
-
[유신사 프로젝트] 로그인 & 회원가입 기능 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 -
@Controller와 @RestController의 차이점
@Controller와 @RestController는 모두 스프링 MVC에서 사용되는 애너테이션으로, 웹 요청을 처리하는 컨트롤러 클래스를 정의하는 데 사용됩니다. 그러나 두 애너테이션의 사용 목적과 동작 방식에는 몇 가지 중요한 차이점이 있습니다.@Controller@Controller는 전통적인 스프링 MVC 컨트롤러를 정의하는 데 사용됩니다. 주로 HTML 뷰를 반환할 때 사용되며, JSP, Thymeleaf 등 템플릿 엔진을 통해 서버 측에서 뷰를 생성합니다. 주로 웹 애플리케이션의 프론트엔드와 백엔드 간의 상호작용에서 사용됩니다.주요 특징:뷰 리졸버 사용: @Controller는 문자열을 반환하면 해당 문자열이 뷰 이름으로 해석됩니다. 스프링의 뷰 리졸버(View Resolver)가 이 뷰 이름..
2024.05.17 -
프록시와 연관관계 매핑
1. 프록시엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다. JPA는 이런 문제를 해결하려고 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연 로딩이라 한다. 그런데 지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라 한다. 1 - 1. 프록시 기초JPA에서 식별자로 엔티티 하나를 조회할 때는 EntityManager.find()를 사용한다. 이 메소드는 영속성 컨텍스트에 엔티티가 없으면 데이터베이스를 조회한다. 이렇게 데이터베이스를 조회해야 하는 상황에서 엔티티를 실제 사용하는 시점까지 데이터베이스 조회를 미루고 싶으면 EntityManager.getReference()..
2024.05.06