디자인(27)
-
[Way to PM] 백 엔드(스프링부트) - 스프링 시큐리티 인증된 유저 정보 가져오기
Over View스프링 시큐리티를 통해 인증 기능을 구현한다면, 현재 인증된 유저(로그인한 유저)의 정보가 필요한 경우가 있습니다. 유저 정보(인증 객체)를 가져올 수 있는 방법은 메서드, 인터페이스, 어노테이션 등 다양하게 있습니다. 1. 메서드로 구현하기private User getAuthenticatedUser() { String username = SecurityContextHolder.getContext().getAuthentication().getName(); return userRepository.findByEmail(username) .orElseThrow(() -> new UsernameNotFoundException("User not..
2024.04.15 -
[Way to PM] 백 엔드(스프링부트) - 연관 관계 매핑
Over View 해당 글은 백엔드 프로젝트를 위해 JPA로 비즈니스 로직을 구현하던 중 배운 관계형 DB의 연관 관계 매핑에 대해 다룹니다. 연관 관계란 두 개 이상의 사물, 사건, 개체들 간에 서로 영향을 미치거나 서로 관련되어 있는 것을 의미합니다. 객체 지향 프로그래밍에서의 연관 관계는 객체 간의 참조가 될 것이고, 관계형 데이터베이스에서의 연관 관계는 테이블 조인이 될 것입니다. 관계형 DB는 조인을 통해 두개 이상의 테이블를 엮을 수 있고, 이를 자바 객체로 표현하기 위해 JPA의 어노테이션을 사용합니다.(@OneToOne, @ManyToOne) 사실 데이터베이스에는 방향이라는 개념이 없습니다. 테이블을 조인하면 양쪽 테이블에 있는 데이터 모두 접근이 가능하기 때문입니다. 반면 객체는 연관된 ..
2024.03.26 -
[Way to PM] 프론트 엔드 - Figma Plugin을 통해 화면 설계 쉽게 접근하기
Over View 해당 글은 백엔드 프로젝트를 위해 화면설계(와이어프레임)를 고안하던 중 Figma Plugin을 사용해 쉽게 접근하는 방법에 대해 다룹니다. 백엔드 프로젝트를 위해 기능명세 작성 후 이를 바탕으로 와이어프레임을 작성해야했습니다.(방밥론은 워터폴방식으로 진행) kakaoOven처럼 화면 설계 자체를 쉽게 도와주는 프로그램도 있었으나, Figma로 작성하면 진입은 상대적으로 어려울 것 같아도 효율적이라 판단했습니다. 기능 명세와 요구사항이 간단한 것도 있었지만, 결국 실무에 가면 Figma를 사용하거나 사용하는 디자이너님과 협업하게 될 것이기 때문에 미리 다뤄보고 싶은 마음도 있었습니다. Figma를 프론트엔드 프로젝트로(백엔드 과정에 앞서 5주동안만 배움) 랜딩페이지를 구현할 때 이미 작..
2024.03.22 -
[Way to PM] 백엔드(스프링부트) - CRUD 테스트 코드
Over View 해당 글은 스프링부트 프레임워크의 핵심 개념인 테스트코드 학습 중 결과 확인에 대한 내용을 다룹니다. 테스크 코드는 대개 given, when, then 구문으로 구성됩니다. given절은 테스트코드를 실험하는데 필요한 데이터를 준비하고, when절은 테스트하고 싶은 기능을 수행하며, then절은 수행한 기능의 결과를 확인합니다. 인텔리제이 기준 검증하고자 하는 컨트롤러에 ctrl + shift + T 단축키를 통해 쉽게 생성할 수 있으며, 반대로 테스트코드에서도 동일한 단축키로 실제 메서드가 있는 클래스에 바로 이동할 수 있습니다. @Test void update() throws Exception { // given : 저장할 데이터 Article article = blogReposi..
2024.03.22 -
[Way to PM] 백엔드(스프링부트) - JPA Update Method
Over View 해당 글은 스프링부트 프레임워크의 핵심 개념 중 기본인 JPA 수정 메서드 구현에 대해 다룹니다. 기본적으로 JPA로 데이터 접근시 @Repository로 주입된 클래스는 JPArepository를 상속받아 Create는 save~() 메서드를 통해, Read는 find~() 메서드를 통해, Delete는 Delete~() 메서드를 통해 쿼리문을 작성하지 않고 기능을 간단히 구현할 수 있습니다. 하지만 Update 메서드는 부재되어 있기 때문에 레포지토리 클래스에 커스텀으로 메서드를 선언하거나, 엔티티를 update할 메서드를 서비스에 선언해 @Transcational로 관리하는 것입니다. import com.estsoft.blogjpa.domain.Article; import org...
2024.03.20 -
[Way to PM] 백엔드(스프링부트) - .yml 파일에 MyBatis 적용 시 띄어쓰기의 중요성
Over View 해당 글은 스프링부트 프레임워크 연습 중 마주할 수 있는 사소하지만 자주 마주하는 오류인 띄어쓰기와 .yml과 MYBatisdml 개념에 대해 다룹니다. 1. .yml이란? .yml은 YAML (YAML Ain't Markup Language) 파일의 확장자입니다. "YAML Ain't Markup Language"는 YAML이 마크업 언어가 아니라는 것을 강조하는 재귀적 약어(recursive acronym)입니다. 이는 YAML이 데이터를 표현하기 위한 언어라는 점을 명확히 하기 위한 것입니다. 처음에는 "Yet Another Markup Language" (또 다른 마크업 언어)라는 의미로 시작했지만, YAML의 설계 목표와 사용 방식이 전통적인 마크업 언어(XML 등)와 다르다는..
2024.03.09