개발자 채용 과제 수정해보기
2021. 10. 28. 18:49ㆍ개인노트
반응형
이전에 특정회사에서 과제전형으로 주어진 걸 Mybatis로 셋팅하여서 확장자 체크를 수행하는 과제를 했었는데...
(아래주소)
https://lollaziest.tistory.com/168
그걸 피드백받은 방식 + 서비스회사에서 주로 사용하는 JPA기본 을 사용하여 변경해보았다.
변경해보고 느낀점은..음 날 왜 안뽑았는지 알 듯했다^^; 많이 부족한 설계능력+Mybatis로 인한 난잡한 코드들... 부끄럽다고 느꼈지만 그래도 그러한걸 다 남겨둬야 나중에 티스토리 블로그를 살펴보다가 이런때가 있었지 할듯하여 남기기로했다.
확장자를 갈아끼우는 형태로도 가능하게 하려고 몇개의 테이블+메뉴코드 테이블이 엮여있는 테이블이 아닌 기능만을 위한 심플한 테이블을 생성하는 Entity를 만들었다. 처음에는 Y,N값으로 구분하려고 했으나 Enum이 그런부분에 있어서 강점이 있다고해서 바꿨다.
기본적인 Extension Entity생성
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.NotBlank;
import org.hibernate.validator.constraints.Length;
import com.test.flow.file.type.ExtensionType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Extension {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@NotBlank // not null
@Length(max = 20)
String extension; //확장자값
@Enumerated(EnumType.STRING)
ExtensionType fixExtension; // Y,N 고정확장자여부 체크값
}
간단한 Enum생성
public enum ExtensionType {
FIX,CUSTOM
}
그리고 그걸 사용할 JpaRepository 생성
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.test.flow.file.Entity.Extension;
import com.test.flow.file.type.ExtensionType;
@Repository //생략가능
public interface ExtensionRepository extends JpaRepository<Extension, Long>{
List<Extension> findAllByFixExtension(ExtensionType fix);
void deleteByExtension(String extension);
Long countByFixExtension(ExtensionType custom);
Extension findByExtension(String extension);
}
위와 같이 수행할 경우
JPQL로 심플하게 작성한 쿼리 + CRUD로 매우 심플하게 돌아가는 로직이 완성되었다.
나머지의 상세변경등에 대한 코드들은 깃허브에서 확인가능하다.. 이렇게 쉽게 가능한 부분들을 참 어렵게도 짰구나라는 생각이 절로 들었다;;
https://github.com/helloworldkim/extensiontest
반응형
'개인노트' 카테고리의 다른 글
API서버 RequestBody 여러번 읽는방법 (0) | 2023.02.07 |
---|---|
NPM 사용 할 때 고려되어야 하는 사항 (0) | 2023.01.12 |
(인터셉터+어노테이션)로그인 체크하기(session) (0) | 2021.10.19 |
Java 리플렉션(reflection)으로 만들어보는 dispatcher-servlet,컨트롤러 및 커스텀 어노테이션 (0) | 2021.10.15 |
Spring AOP 테스트 및 커스텀태그 적용해보기 (0) | 2021.10.14 |