전체 글 25

2021년 4Q 그간의 기록

신입개발자 라는 본캐에 + 공부에 + 운동에 + 식단관리 계정을 운영하는 부캐까지, 전부 다 해내려니까 상대적으로 덜 급한(?) 개발블로그 기록이 많이 밀렸다. 2021년 4분기에 나는 무엇을 했는가! 기록 남겨 두기 :) 회사 프로젝트 모 지역구의 특구 사업 일환으로 진행되는 프로젝트의 API 개발 업무를 맡았다. 관리자 / 의사 / 간호사 총 3개의 주인공(?)이 있는데 그 중 간호사가 사용하는 시스템에 투입되었고 구체적으로는 간호사가 태블릿을 들고 환자에게 방문해 의사와 화상으로 연결, 진료를 본 후에 문진 내역을 입력하여 저장하고, 의사가 처방전을 발행해 주면 해당 처방전을 출력할 수 있는 기능이 골자이다. 앱 화면은 회사의 프론트엔드 개발자분이 React를 기반으로 구현하셨고, 그에 필요한 모든..

Personal 2021.12.15

210905 10줄 TIL

[ mybatis에서 list를 파라미터로 받기 ] 프로젝트를 DB 두 개에 연결하고 (DB는 이하 각각 A, B라 함) A에서 받아 온 VO의 list를 B에 insert 또는 update 하는 미션이 있었다 예전에 한 번 해 본 것이라 어렵지는 않게 했지만 블로그에도 기록해 둔다. * Mapper (java class) int updateHospitalList(List myList); * Mapper (xml) 1) parameterType : java.util.List - 몇 군데의 블로그에서 mybatis는 list를 받을 수 없으니 map으로 바꾸라고 하는데, 일단 잘 되기에 굳이 map으로 변환하지 않았다. 2) keyProperty = "seq" - 리턴값에 로우 수를 세기 위해 사용하였다...

개발/10줄 TIL 2021.09.06

210901 10줄 TIL

[ 배치와 스케줄러 ] 팀장님께서 "배치 돌리자" 라고 하셨는데, 뭔가 적절한가..? 싶어서 다시금 질문을 드려 보니, 스케줄러를 돌리자는 뜻이셨다. 실제로 배치와 스케줄러를 뭉뚱그려 많이 말한다고. 배치 대용량 데이터 처리가 주 목적 (은행의 전날 거래액 집계 등) 스케줄링 기능이 없어 스케줄러를 보완제로 사용한다 * 아 맞다 통장정리! 해서 가끔 수행하는 것은 배치 작업이지만 스케줄러 작업은 아님. 스케줄러 매 시간, 혹은 지정한 시간에 지정한 동작을 수행 * 1시간마다 신규 데이터 insert여부를 확인하는 작업은 스케줄링 작업이지만 배치 작업은 아님.

개발/10줄 TIL 2021.09.02

210831 10줄 TIL

[ 다중 데이터소스 사용 Multiple DataSource ] DB를 여러 개 사용할 때 데이터소스를 여러개 잡는 방법! 1. DatabaseConfig.java 파일을 DB 수만큼 만들기 (진행중인 플젝은 'Develop' @Profile이 걸려 있어서 그 부분까지 처리하느라 많아졌는데, PlfmDatabaseConfig.java, PrscDatabaseConfig.java 두 개가 골자다.) 2. 각각의 DatabaseConfig.java 안에 ①DataSource ②TransactionManager ③SqlSessonFactory 를 만들어준다. 나중에 구분하기 위해 각 DB별 @Bean의 이름을 설정해주고, 메인이 되는 DB에는 @Primary를 붙여주어야 혼선이 없다 @Profile("stag..

개발/10줄 TIL 2021.09.01

210830 10줄 TIL

어제 기절해서 못 적어 둔 10줄 TIL 잊어버리기 전에 얼른 정리하기! [ SQL에서의 인덱스 ] SELECT 성능을 향상시켜주는 INDEX, 잘 알고 잘 써야 한다고. 두 테이블을 조인하여 검색을 할 때, 쿼리 옵티마이저는 대부분 최적의 결과를 내기 위해 인덱스가 있는 테이블부터 스캔한다고 한다. 하지만 간혹 인덱스가 없는 테이블부터 스캔하는 것이 성능 면에서 명백히 좋을 때가 있다. (ex. 로우 수가 현저히 적은 경우 등) 이럴 때는 의도적으로 인덱스가 타지 않도록 처리하는 것도 필요하다 속어로 "다리를 부러뜨린다"는 표현을 쓴다고 들었음 (덜덜) 인덱스에 연산을 거는 등 처리를 하면 된다. 참고한 포스팅 : 인덱스가 있지만 인덱스를 안 타는 경우 (엘키의 주절주절 블로그) [ 확인 ] SELEC..

개발/10줄 TIL 2021.08.31

스프링 입문 - (3) 웹 개발 기초 - API 방식

강의명 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강사 : 김영한 님 플랫폼 : 인프런 강좌 : 총 28강 / 321분 가격 : 무료 - 강의 링크 웹 개발 기초 강의에서는 "정적 컨텐츠", "MVC와 템플릿 엔진"을 배운 후 마지막으로 API를 다루었다. 정적 컨텐츠는 컨트롤러에 등록하지 않은 채 static폴더에 파일을 넣고 주소창으로 접근하면 불러오는 방식이라 생략. MVC는 뷰 리졸버를 태우는 기존 예제(이 포스팅의 예제)와 중복되어 생략. API만 정리하기로! 코드 작성 강의에 나온 예제를 하나 다루고, 직접 응용한 예제를 추가로 다루려 한다! HelloController.java 컨트롤러 내부에 Hello라는 클래스를 하나 만든다. 객체를 리턴해 볼 것이므로!..

개발/강의 2021.08.28

스프링 입문 - (2) Controller 작성 후 실행

강의명 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강사 : 김영한 님 플랫폼 : 인프런 강좌 : 총 28강 / 321분 가격 : 무료 - 강의 링크 코드 작성 간단한 코드를 작성하고, 실행했다. HelloController.java - 경로 : java/hello/hellospring/controller/HelloController.java @GetMapping("hello") public String hello (Model model) { model.addAttribute("data", "this is data"); //① return "hello"; //② } @GetMapping 어노테이션 = RequestMapping + method는 Get 이라는 뜻 (스프링 ..

개발/강의 2021.08.27

스프링 입문 - (1) 환경 설정, 프로젝트 생성

강의명 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강사 : 김영한 님 플랫폼 : 인프런 강좌 : 총 28강 / 321분 가격 : 무료 - 강의 링크 환경 설정 Java 11 / IntelliJ 를 설치해야 한다. 이미 자바가 깔려 있다면 버전을 체크한다. 명령 프롬프트를 실행한다. (윈도우 검색창에 cmd) java -version javac -version 아래와 같이 확인할 수 있다. 회사 윈도우 노트북에는 자바 16버전이, 집의 맥북에는 자바 11버전이 깔려 있는데 회사 노트북을 11버전으로 낮출까 고민 중. IntelliJ는 커뮤니티 버전(무료)으로 설치한다. 프로젝트 생성 https://start.spring.io/ 에 접속하여 아래의 설정으로 생성한다. Pro..

개발/강의 2021.08.27

210826 10줄 TIL

API를 만들 때, ①리스트와 ②리스트 총 카운트를 내려주어야 하는 경우가 자주 있다. 위 ①과 ②의 쿼리는 분리해서 짜더라도, API는 분리하지 말고 하나의 기능으로 통일해서 한 번에 내려주는 것이 좋다. 이럴 때는 ①과 ②를 감싸는 객체를 만들어주자. [ 감싸는 객체 예제 ] @Data public class EncounterListEntry { private List result = new LinkedList(); private int count; } * 따로 분리하면 안 되는 이유 기능을 분리해서 각각을 비동기로 호출할 경우, ①과 ② 중 어느 쿼리가 먼저 수행될지 알 수 없고 프론트단에서 두 값을 모두 사용하는 함수가 있을 경우 에러가 발생할 수 있다고 한다. 그러므로 한 번에 내려줄 것! [ ..

개발/10줄 TIL 2021.08.27

Git - IntelliJ로 작업한 로컬 프로젝트 Github에 올리기(commit & push)

학원에서 자바 배울 땐 제대로 알려준 적이 없고, 팀 프로젝트 하면서 처음 쓸 때 깃을 야매로 배워놔서 (훌쩍) 부끄럽게도 통일된 방식이 아닌, 그때그때 다른 방식으로 git 연동을 하고 있었다. 회사 와서 땡겨 둔 프로젝트로 쭉 푸시만 하다가- 오랜만에 개인 깃허브에 커밋푸시할 일이 생긴 김에 연동 방법을 기록하기로 :) * 역시 야매일 수 있음 주의 환경 IDE : IntelliJ IDEA Community Edition (인데 이클립스도 비슷) OS : Windows Git : 2.33.0 로컬 프로젝트 Github에 올리기 1. 로컬에 프로젝트를 생성/작업한다. 2. github 레퍼지토리를 생성한다. 이 때, "Add a README file" 은 체크하지 않고 생성한다. 그 이유는.... 요렇..

개발/Etc 2021.08.25