SpringMVC(5)
-
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 -
연관관계 매핑 기초
※ 기본 용어 정리 1) 방향 : 1 - 1) 단방향 : 관계가 있을 때 둘 중 한쪽만 참조하는 것을 단방향 관계라고 한다. 1 - 2) 양방향 : 관계가 있을 때 서로를 참조하는 것을 양방향 관계라고 한다. 2) 다중성 : 다대일(N : 1), 일대다(1 : N), 일대일(1 : 1), 다대다(N : M) 다중성이 있다. 3) 연관관계의 주인 : 양방향 연관관계로 만들 시 연관관계의 주인을 정해야 한다. 1. 단방향 연관관계 다음과 같은 상황을 가정한다. - 회원과 팀이 있다. - 회원은 하나의 팀에만 소속될 수 있다. - 회원과 팀은 다대일 관계다. ● 객체 연관관계 - 회원 객체는 Member.team 필드로 팀 객체와 연관관계를 맺는다. - 회원 객체와 팀 객체는 단방향 관계다. 회원은 Membe..
2024.04.11 -
타임리프 간단히 알아보기
타임리프 사용 선언 속성 변경 - th:href th:href="@{/css/bootstrap.min.css}" - href="value1" 을 th:href="value2" 의 값으로 변경한다. - 타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx 값으로 변경한다. 만약 값이 없다면 새로 생성한다. - HTML을 그대로 볼 때는 href 속성이 사용되고, 뷰 템플릿을 거치면 th:href 의 값이 href 로 대체되면서 동적으로 변경할 수 있다. - 대부분의 HTML 속성을 th:xxx 로 변경할 수 있다. 타임리프 핵심 - 핵심은 th:xxx 가 붙은 부분은 서버사이드에서 렌더링 되고, 기존 것을 대체한다. th:xxx 이 없으면 기존html의 xxx 속성이 그대로 사용된다. - HTML을 파..
2024.02.11 -
요청 매핑
1. @GetMapping("/mapping/{userId}") @GetMapping("/mapping/{userId}") public String mappingPath(@PathVariable("userId") String data) { log.info("mappingPath userId={}", data); return "ok" } - 위 어노테이션은 다음과 같이 쓸 수도 있다. @RequestMapping(method = RequestMethod.GET, value = "/mapping/{userId}") - {} 안에 있는 변수는 @PathVariable을 통해 가져오는 것이 가능하다. 2. 파라미터로 추가 매핑 - params="mode" - params="!mode" - params="mode..
2024.02.06