본문 바로가기

분류 전체보기141

스프링 트랜잭션 @Transactional 개념 (+주요 설정값) 스프링에서 트랜잭션을 사용하는 @Transaction 어노테이션을 추가 하게 된다. 일반적으로 DB에서 데이터를 조회, 추가, 수정, 삭제 등을 하는 경우 메소드 상단에 트랜잭션 어노테이션을 붙인다. 보통은 그정도로만 사용해서 상세하게 트랜잭션에 대해 공부해야 한다는 생각을 하지 않는다. 실무에서도 프로젝트에서도 일반적으로 트랜잭션 설정값을 거의 안쓰거나, 보통은 설정값으로 readOnly 정도만 사용하는 경우가 많다. 하지만 대용량 동기화, 배치 등을 진행 할때 트랜잭션 관련 설정을 하게 되는 경우가 있다. 그럼 관련된 설정이나 설명을 봐도 명확하게 이해가 되지 않기도 한다. 또한, 개발자 기술 면접에서도 아래와 같이 질문 하는 경우도 다수 있다. 나도 면접 시에 답변을 한 적이 몇번 있다. 트랜잭션 .. 2021. 6. 4.
알아도 어려운 트랜잭션 개념정리 트랜잭션은 백엔드 개발자라면 제대로 알고 있어야 하는 개념이다. 간단한 서비스만 개발한다면 덜 중요하게 느껴지기도 하겠지만 복잡한 서비스를 개발하고 운영을 하다보면 중요성을 느끼게 된다. 대용량 데이터 동기화 등을 처리하다 보면 트랙잭션을 어떻게 처리 하느냐에 따라 데이터의 정합성 등에 영향을 주게 된다. 단건이 아닌 여러건의 배치를 진행하다 보면 트랜잭션으로 인해 단건(나는 각 처리 단위별로 롤백되게 하고자 했었음)이 아닌 전체가 롤백되어 서비스 오픈 전 테스트를 하다 놀란적이 있기도 했다. 이 때 관련 설정을 보고 다양한 테스트를 하면서 내용을 배우기도 했다. 참고로 정보처리기사 등 자격증을 준비하다보면 필수적으로 알아야하는 문제로 나오는 개념이기도 하다. 문제를 풀다보면 가끔 헷갈려서 잘못된 답을 .. 2021. 6. 4.
Optional 제대로 알기, 면접 대비! (+간단 실무 코드 예시) 프로그래밍을 하다보면 null 처리를 필수적으로 하게 된다. 기존에는 null 체크를 해서 Null이 아닌 경우 뒤의 로직으로 넘어가게 분기처리를 하는 형태로 작업을 하게 된다. 이러한 null을 처리하기 위해 자바 8 이후 부터는 옵셔널 Optional을 사용한다. 옵셔널을 상세하게는 아니여도 다른 사람의 코드를 보면서 이런식으로 쓴다고는 알고는 있지만, 남에게 설명할 정도는 아니라면 면접 대비를 한다 생각하고, 옵셔널에 대해 상세하게 알아보도록 하자. 신입 개발자가 optional을 제대로 쓰고 알고 있다면 괜찮아 보인다는 선임의 이야기가 있었다. (뭐 사람마다 다를 수 있지만) 나도 이 기회에 제대로 알아봐야지 참고로 Optional을 사용하기 위해서는 자바 버전 8 이상을 사용하고 있어야 한다. .. 2021. 6. 3.
홈브류 Homebrew 는 무엇인가? (+기본 명령어) 맥으로 개발을 하다보면 무엇인가 설치하는 경우 많이 보는 명령어 중 하나는 brew 일 것이다. 그냥 다들 설치 시 해당 명령어를 쓰라고 글에 나와 있어서 쓰는 경우가 많을 것 같다. 홈브류가 도대체 어떤 것인지 오늘 상세하게 알아보자! 홈브류, Homebrew 알아보기 홈브류는 맥OS용 패키지 관리자를 말한다. 홈브류 말고도 커맨드라인에서 사용가능한 맥OS 용 패키지 관리툴이 있었지만 현재 홈브류가 거의 표준으로 인식되고 있다. 그렇다 보니 맥으로 개발을 하는 개발자라면 거의 다 사용하게 되는 툴이라 할 수 있다. 홈브류는 터미널에서 편리하게 명령어로 사용할 수 있다는 장점이 있지만 커뮤니티 기반으로 운영되어 패키지의 안정성이 보장되지 않는다는 단점이 있다고도 한다. 일반적으로 홈브류를 이용하여 설치하.. 2021. 6. 2.
홈브류 에러 해결! Error: homebrew-core is a shallow clone. brew update brew를 최신 버전으로 업데이트 하는 것으로, 오랜만에 다른 패키지를 설치 하기 전에 homebrew를 업데이트 하게 된다. 해당 명령어를 사용했는데 아래와 같이 에러가 발생해서 순간 당황을 했다. 하지만 역시 에러메시지에 답이 있다. homebrew 설치 시 shallow clone을 하지 않기 때문에 생긴 문제로 설명에 친절하게 나와 있는데로 진행하면 정상적으로 홈브루 업데이트를 할 수 있다. ~ master* 6s ❯ brew update Error: homebrew-core is a shallow clone. homebrew-cask is a shallow clone. To `brew update`, first run: git -C /usr/local/Homebrew/Lib.. 2021. 5. 27.
Error: Unknown command: cask | java, mysql 설치 시 발생 에러 Mac에서 open JDK를 설치하려고 하는데 cask 에러가 나는 경우가 있다. Error: Unknown command: cask ~ master* 2m 8s ❯ brew cask install adoptopenjdk10 Error: Unknown command: cask 사용방법이 변경되어서 에러가 발생하는 것이기 때문에 명령어를 변경해 주면 된다. 기존 명령어가 아닌 명령어를 아래와 같이 변경해 주면 정상적으로 설치가 된다. 예전에 작성된 글을 보면서 설치를 하다가 에러가 나는 경우이다. brew install --cask adoptopenjdk10 ~ master* ❯ brew install --cask adoptopenjdk10 ==> Downloading https://github.com/A.. 2021. 5. 26.
Mac java 여러 버전 설치 맥에 여러 프로젝트를 실행하다 보면 해당 프로젝트에 맞는 java를 설치해야 하는 경우가 있다. 그런 경우 아래와 같은 순서로 기존 설치된 자바 버전 이외에도 다른 버전을 설치 할 수 있다. 오늘은 brew를 이용해서 설치를 해보자. brew가 설치되어 있지 않다면 아래 명령어를 활용하여 설치하자. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" macOS용 패키지관리자 Homebrew가 궁금하다면 아래 링크에 들어가 봐도 좋다. https://brew.sh/index_ko 저장소 연결하는 명령어 brew tap adoptopenjdk/openjdk ~ master* ❯ brew t.. 2021. 5. 26.
vi 문자열 찾기 및 문자열 바꾸기 총정리 vi 문자열 찾기, 문자열 바꾸기 명령어 설명 /검색어 검색어를 커서 아래 방향으로 검색 ?검색어 검색어를 커서 위 방향으로 검색 n 다음 검색어로 뒤로 이동 N 이전 검색어로 앞으로 이동 vi에서 문자열 검색을 위해서는 입력모드가 아닌 일반모드에서 "/" 입력 후 찾을 문자열을 입력하면 문자를 찾을 수 있다. (다른 모드에서 일반모드로 오려면 ESC 버튼을 누르면 됨) 단어를 찾고나서 다음단어로 가기 위해서는 n을 누르고, 이전 단어로 이동을 위해서는 N을 누르면 된다. vi 문자 바꾸기 명령어 설명 :s/대상문자열/변경문자열 커서가 위치한 행에서 처음으로 나오는 대상문자열을 변경문자열로 바꿈 :%s/대상문자열/변경문자열 파일 전체에서 모든 대상 문자열을 변경문자열로 바꿈 실제 vi 파일에서 아래와 같.. 2021. 5. 25.
MySQL 설정파일 구성, my.cnf 기초! MySQL이 뭔지는 알지만 설정파일에 대해서는 잘 모르는 경우가 많다. 직접 설치를 할때 아주 잠시 지나갔던 파일로 오늘은 해당 파일에 대해서 자세히 알아보도록 하자. MySQL 서버는 단 하나의 설정 파일만 사용한다. 유닉스 계열에서 my.cnf 라는 이름을 쓰며, 이 파일의 이름은 변경할 수 없다. MySQL 서버는 시작될 때만 이 설정 파일을 참조하는데, 경로가 딱 하나로 고정되어 잇는 것은 아니며, 지정된 여러 디렉토리를 탐색하면서 처음 발견된 my.cnf 파일을 사용한다. 사용중인 MySQL 서버가 어느 디렉토리에 있는 my.cnf 파일을 읽는지 궁금하다면 아래와 같이 실행 하면 된다. 아래 명령어를 실행하면 상당히 많은 양의 내용이 출력 된다. 중간쯤 있는 "Default options ..... 2021. 5. 21.
반응형