전체 글

참개발
·spring
Spring에서는 클라이언트에서 받아온 정보를 Validation을 이용하여 검증을 하였는데 Spring Boot에서 제공해주는 Bean Validation이라는 기능을 이용하여 조금더 수월하게 검증을 이뤄보려고 합니다. build.gradleimplementation 'org.springframework.boot:spring-boot-starter-validation' Item@Datapublic class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999..
·spring
웹 사이트를 개발하다보면 같은 문구가 여러 페이지에서 반복해서 들어가는 경우가 많이 존재합니다.만약 모든곳에 직접 문구를 기입하는 와중에 특정 문구를 일괄로 바꿔야 하는 상황이 생긴다면 해당 문구가 사용되는 페이지를 모두 찾아가면서 직접 바꿔야하는 수고가 발생 합니다. 그렇기 때문에 그런 메세지들은 한곳에 보관하여 값을 불러와 화면에 뿌려준다면 매우 편리하게 관리가 가능해 질 것입니다. application.propertiesspring.messages.basename=messages앞으로 메시지를 관리할 파일의 이름을 messages.properties로 할 것이며 application.properties에 위처럼 명시해줍니다. messages.propertieslabel.item=상품 label.it..
·DB
개인 프로젝트를 진행하기 위해 구글 클라우드에 마리아디비를 설치하여 사용하려고 합니다.기본적으로 구글 클라우드에 마리아디비가 설치되어 있다는 전재로 진행하겠습니다.MariaDB 실행하기sudo service mariadb start MariaDB 접속하기mysql -u [유저id] -pex) mysql -u root -p해당 명령어를 친 다음에 비밀번호를 입력하면 됩니다.마리아디비에 접속을 햇다면 접속한 사용자가 사용가능한 데이터베이스를 확인해봐야합니다. 사용자 데이터베이스 확인하기show databases;MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| RECOVER_YO..
·spring
웹 사이트에서 Validation으로 데이터를 검증하는 작업은 중요한 작업 입니다 하지만 검증자체가 코드가 짧지 않기 때문에 모든 컨트롤러에 직접 작성하게 되면 전체코드가 길어지게 되고 실행 컨트롤러 작업코드를 찾기 어려울 것입니다. 그래서 Validaion코드는 따로 java파일로 만들어 분리해주는게 좋습니다.@Componentpublic class ItemValidation implements Validator { @Override public boolean supports(Class aClass) { return Item.class.isAssignableFrom(aClass); } @Override public void validate(Object o, Err..
·spring
기본적인 Validation에 대해서 마지막글인 V5에 대해 포스팅하겠습니다.이제껏 V4까지는 에러코드를 어떻게 화면에 보여줄지 설명을 햇다면 이번엔 타입오류가 발생했을때 어떻게 처리하면 되는지 설명하는 글이 되겠습니다.@PostMapping("/add")public String addItemV4(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes , Model model) { //검증 로직 if(!StringUtils.hasText(item.getItemName())) { // 상품이름이 없으면 bindingResult.rejectValue("itemName","r..
·spring
Validation V4에서는 V3에서 해당 필드에 에러메세지를 직접 default메세지를 직접 기입한 것을 따로 에러 메세지를 모아놓은 errors.properties파일에 모아두어 불러오는 방법을 소개하려고합니다. resources/errors.propertiesrequired.item.itemName=상품 이름은 필수입니다.range.item.price=가격은 {0} ~ {1} 까지 허용합니다.max.item.quantity=수량은 최대 {0} 까지 허용합니다.totalPriceMin=가격 * 수량의 합은 {0}원 이상이어야 합니다. 현재 값 = {1} application.propertiesspring.messages.basename=errorsV4 - 1@PostMapping("/add")pub..
·spring
Validation V2에 이어 이번에는 오류메세지를 받아오면서 입력받은 값을 유지하는 방법을 소개하려고한다.변화하는건 bindingResult에 field나 globalErrors를 담을 때 인자를 변경하면 된다.기존의 new FieldError는if(!StringUtils.hasText(item.getItemName())) { // 상품이름이 없으면 bindingResult.addError(new FieldError("item","itemName","상품이름은 필수입니다."));}if(item.getPrice() == null || item.getPrice() 1000000){ //상품가격이 1000에서 1000000사이가 아닐경우 bindingResult.addError(new Fiel..
·sqld
select 사원번호,사원명,입사일자,매니저번호from 사원start with 매니저번호 is nullconnect by prior 사원번호 = 매니저번호and 입사일자 between '2013-01-01' and '2013-12-31'order siblings by 사원번호; 문제에서 이런식으로 테이블과 계층형 쿼리를 주고 정답을 추론해야 하는 문제는 SQLD 매 회차마다 적어도 한문제에서 두문제는 출제가 되는것 같습니다.절대 놓쳐서 안될 문제이고 누구도 이해하기 쉽게 설명을 하려고 글을 작성합니다.계층형 쿼리를 읽는 순서1. START WITH from에서 테이블을 만들었다면 where조건이 아닌 start with인 시작행부터 봐야합니다.위의 쿼리를 보게되면 '매니저번호 is null'이라는 조건이..