본문 바로가기

일단고39

[Mysql] 프로시저 기초 사용법 베하! 오랜만이네요 여러분! 그동안 무척 바빴답니다 ㅎㅎ 그리웠다고 말해줘요 오늘 가져온 주제는 프로시저 사용법입니다! 두둥! 많은 분들이 쿼리문을 사용하여 DB의 내용을 조회하거나 변경하는 등의 작업은 익숙하실 거예요. 하지만 프로그래밍처럼 코드를 짜서 DB 서버에 무언가 실행하는 프로시저 방법은 생소할 것이라고 생각하여 들고온 주제입니다. 프로시저(Procedure)란? 본격적으로 설명하기에 앞서 프로시저란 정확하게 무엇일까요. 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합을 의미 데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로, 영구저장모듈(Persistent Storage Module)이라고도 불립니다. 만약 여러 개의 칼럼을 조회하.. 2024. 3. 7.
java Exception 전파 베하! 안녕하세요 여러분! 일단고 팀입니다. 오늘은 개발을 진행하다가 겪은 java의 기초이자 중요한 부분인 Exception 관련한 내용입니다. 저는 트랜잭션이 작동하기 위해 테스트하는 과정에서 Exception에 대해 설명 드린적이 있었고 그 과정에서 저는 Exception이 특정 함수를 호출한 함수에서만(try-catch를 처리 유무와 상관없이) 해당 예외가 전파되는 줄 알았습니다… 하지만 최근 특정 로직에 대해 커스텀 예외를 던지고 그 예외에 대한 메시지를 API 클라이언트까지 전달하기 위해서 작업을 하던 중 예외 전파 범위에 대해 알게 되어 공유드리고자 합니다. Exception 전파 A method가 있고 B method가 있고 C method가 있을 때 C에서 Exception이 발생하면 해.. 2024. 2. 8.
[Mybatis] For input string 에러 베하! 안녕하세요 여러분! 일단고 팀입니다. 오늘은 개발을 진행하다가 겪은 에러에 대해서 공유하고자 합니다. 에러 발생 상황 Mybatis 쿼리문을 작성하던 상황이었습니다. 예시 : SELECT a.id , a.name FROM user a WHERE 1=1 AND a.del = 'Y' 테스트를 진행하니 다음과 같은 에러가 나왔습니다. ### Error querying database. Cause: java.lang.NumberFormatException: For input string: ”Y" ### Cause: java.lang.NumberFormatException: For input string: "Y" 에러 원인 이 에러에 대한 내용은 ‘Y’라는 문자열을 숫자로 변환하려 하는데, 숫자로 변환하니.. 2024. 1. 17.
Spring Boot Model validation 관련 애노테이션 베하! 새로운 한 해가 시작되었습니다. 저도 아직 마음만 먹고 시작을 하지 못했답니다. ㅠㅠ 하지만 반드시 새해라고 무언가를 해야한다는 압박에서 벗어나서 늘 잘해왔던 여러분들이 이번 해도 똑같이 꾸준하기만 한다면 다른 목표를 달성하는 것보다 더 좋은 여러분과 제가 되지 않을까 생각합니다. 시작말 오늘 들고 온 이야기 주제는 Spring boot에서 웹 백엔드를 개발할 때 객체를 통해 Request를 받아 처리하는 경우가 많죠? 그럴 때 우리는 model 혹은 vo, dto class에 valid 애노테이션에게 알려줄 제한사항을 쉽게 설정해서 유효성을 검사하기도 합니다. 저는 그 유효성 검사를 도와주는 애노테이션들을 가볍게 정리하려 합니다. 사실 진작에 알았다면 굳이 controller나 service 레.. 2024. 1. 12.
Overloading과 Overriding의 차이 베하! 새로운 한 해가 시작되었습니다. 모두들 2024년도 힘찬 시작을 하셨나요? 오늘 들고 온 이야기 주제는 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이입니다. 객체 지향 프로그래밍에서 다형성은 같은 이름의 메서드나 연산자가 다른 클래스에 대해 다른 동작을 하도록 하는 것을 말합니다. 이것을 구현할 때 오버로딩, 오버라이딩 한다. 라고 할 수 있습니다. 이러한 오버로딩과 오버라이딩이 무엇인지 좀 더 자세히 알아보고 차이를 이해하는 시간을 가져봅니다. 오버로딩(Overloading) 오버로딩의 개념 메소드 오버로딩은 같은 이름의 메소드가 매개변수의 수나 타입에 따라 다르게 동작하는 것을 말합니다. 즉, 동일한 메소드 이름을 가지지만 서로 다른 시그니처를 갖는 메소드를 여러 개.. 2024. 1. 5.
연말 프로젝트 회고 안녕하세요 여러분 일단고팀입니다. 베하! 이제 2023년이 몇 일 남지 않았습니다. 다들 2023년은 어떠셨나요? 2024년에도 즐거운 나날을 보내셨으면 합니다. 2023년에 저는 개발에 대해 공부하면서 프로젝트를 많이 했습니다. 초보 개발자에게 현업 개발은 쉽지가 않았고 우여곡절이 너무 많았습니다. 프로젝트를 짧든 길든 참여했던 프로젝트가 무려 3개를 진행했습니다. (찍먹도 있습니다 ㅎㅎ) 오늘 글은 저의 이 3개 프로젝트에서 백엔드 프런트엔드 개발 작업을 진행하면서 개인적인 회고를 한번 적어볼고 공유해볼까 합니다. 2023년의 일단고 팀의 일단 가봤던 프로젝트 회고를 통해 깨달은 점을 2024년에 꼭 그 깨달음을 반영할 수 있는 사람이 되어야 겠습니다. 오늘은 앞 시간에 예고한 대로 저의 개인적이자 .. 2023. 12. 29.
SVG 파일 넌 누구니? 안녕하세요 여러분 일단고팀입니다. 베하! 여러분은 보통 사진을 활용할 때 어떤 파일을 사용하시나요? 주로 사용하는 사진 확장자는 .jpg나 .png일텐데요, 오늘은 svg 파일에 대해서 알려드리겠습니다. SVG 파일이란? SVG (Scalable Vector Graphics)는 확장 가능한 벡터 그래픽을 나타내는 XML 기반의 파일 형식입니다. 비트맵 이미지와 대조적으로 SVG는 이미지를 구성하는 도형과 경로를 정의하므로 확대 또는 축소 시 이미지의 품질이 유지됩니다. SVG 파일의 특징 크기 조절 가능성: SVG는 벡터 기반으로, 얼마나 크게나 작게든지 이미지의 해상도가 유지됩니다. 편집 용이성: SVG 파일은 텍스트로 저장되며, 일반적인 텍스트 편집기로 편집 가능합니다. CSS 적용: SVG는 CSS.. 2023. 12. 22.
Spring boot API ExceptionHandler 안녕하세요. 여러분 12월의 마지막이 다가오고 2023년의 마지막이자 2024년의 시작이 다가옵니다. 일단고 팀의 많은 글들이 도움이 되셨을지 궁금합니다. 그리고 이제 일단고 팀의 테크 블로그는 내년에도 볼 수 있을지.. ㅠㅠ 오늘 기술적인 부분을 마지막으로 업로드해볼까 합니다. 얼마전 API를 개발하고 사용하면서 예기치 못한 에러가 발생했습니다. 초보 개발자인 저는 깜짝 놀랐는데요. 특정 상황에 대한 예외처리가 부족했고 client가 응답받기 위한 응답을 정의하지 않아 client가 적절히 처리하기 어려웠습니다. 그래서 오늘은 Spring boot에서 ExceptionHandler를 이용해 Controller나 service에서든 예외에 대한 적절한 대응하는 방법을 말하고자 합니다. 1. Excepti.. 2023. 12. 22.