전체 글 38

[DB] MyBatis란?(JPA와 비교)

MyBatis는 무엇이고, 왜 쓰는 걸까?최근에 MyBatis를 다시 정리하면서 느낀 건,이건 ORM이 아니라 **‘SQL을 포기하지 않는 선택지’**라는 거였다.Java에서 데이터베이스에 접근하는 방식은 크게 보면 세 가지 정도로 나뉜다.JDBCORM (JPA, Hibernate 등)SQL Mapper (MyBatis)JDBC는 너무 로우레벨이고, JPA는 매우 많은 걸 대신해준다.MyBatis는 그 중간 어딘가에 있다.1. JDBC부터 생각해보면JDBC로 DB를 다뤄보면 이런 코드가 나온다.Connection 열고PreparedStatement 만들고파라미터 세팅하고ResultSet 순회하고객체에 값 매핑하고finally에서 닫고...기능은 단순한데 코드가 길어진다.그리고 실수할 여지도 많다.그래서 ..

CS/DB 2026.02.08

[DB] JAVA와 데이터베이스(JDBC, ORM,Java SQL 라이브러리,MyBatis)

자바에서 DB를 다루는 3가지 방식서버든 데스크톱이든 Java 애플리케이션이 DB에 접근하려고 하면 결국 아래 질문들을 만나게 된다.개발을 자바 우선으로 할까, DB 우선으로 할까?자바 클래스를 먼저 만들고 테이블을 맞출지테이블(스키마)을 먼저 만들고 자바 코드를 맞출지SQL은 누가/어떻게 실행할까?단순 CRUD부터 복잡한 리포팅 쿼리(분석 함수 등)까지 실행 방식은?자바 객체 ↔ DB 테이블/행 매핑을 얼마나 편하게 할까?객체를 저장하면 INSERT가 되고조회 결과를 객체로 바꾸는 일을 누가 담당할까?예를 들어 아래 같은 자바 클래스가 있고,public class User { private Integer id; private String firstName; private String l..

CS/DB 2026.02.08

[투병 일지] 비소세포폐선암 4기 조직검사 + 유전자 검사 결과

나이 1968년생 남자흡연매우 오래함병기폐암 4기치료 병원세브란스(연세암병원)특이사항2019 교통사고로 비장 절제 수술 받음2022 담석증으로 담낭(쓸개) 절제 수술 받음 조직검사일단 암세포 조직검사를 하면 대강의 결과를 알수 있다.다만 의사선생님은 매우 알아듣기 쉽게 하기위해 일부만 설명해주기 때문에 검사지 꼼꼼하게 직접 보는 것을 추천한다.검사지를 보면서 직접 알게 되는 부분도 많고 병세에 대해 더 잘 이해할 수 있게 된다.아래는 아빠 조직검사 결과 일부이다.P40, TTF-1: 폐암 종류 결정PD-L1: 면역치료 반응 예측BRAF, pan-TRK, ALK, C-erb B2 , C-MET: 표적치료 가능성 확인 (양성이면 표적치료 가능할 수도 있음) 아래 더 자세히 설명1. 폐암 종류p40 nega..

일상 2026.01.20

[투병 일지] 아빠의 폐암(4기)진단을 받기까지

아빠(68년생)가 암을 진단받고 혼란스러운 와중에 쏟아지는 정보와 광고들 사이에서 정작 진짜 환자들의 정보가 많이 없다고 느꼈다. 나중에 내가 좀 더 기억이 또렷할때의 기록을 남겨 후회하지 않았으면 좋겠기도하고, 나와 비슷한 사람이 있다면 이 글을 같이 보면서 정보공유와 공감을 얻었으면 좋겠다는 마음으로 글을 써본다. 1.전조 증상이 글을 쓰는 이제와서 생각해보니 일년 전쯤부터 아빠가 부쩍 피곤하다는 말을 입에 달고 살았다.나를 만날때마다 졸리다고 하고,, 몸이 예전같지 않다는 말을 자주했었다. 그리고 한 5개월 전쯤부터 감기에 걸려서 나타나는 단순한 증상이라고 생각했었던 아빠의 기침(폐암이 증상이 나타나기 시작할 때는 보통 병기가 상당히 진행된 후다.)이 한달넘게 지나도 이상하게 낫질 않았다. 그래서 ..

일상 2025.12.01

카카오 소셜로그인 access Token 직접 발급하는 법(in 카카오 디벨로퍼 kakao developers)

스프링 부트에서 소셜로그인 토큰 발급 방식으로 로그인을 구현했는데프론트 없이 swagger 나 postman으로 테스트 해보고 싶은 경우가 있다. 그런 경우에 접근 권한이 없는 경로는 카카오 로그인이 필요한데, 이때 카카오 디벨로퍼에서 제공하는 테스트 도구를 이용하면 엑세스 토큰을 발급 받을 수 있다. 도구> REST API 테스트의 도구 바로가기 인증 앱 옆의 햄버거 버튼 클릭해서 토큰을 발급하고 싶은 앱을 선택해주고 엑세스 토큰의 토큰 발급 버튼을 눌러주면 엑세스 토큰이 발급된다. 그러면 엑세스 토큰이 발급되어 칸에 나타난다. 혹시 로그인을 했을때 아래처럼 허용되지 않은 ip라고 로그인이 안된다면401 Unauthorized: \"{\"msg\":\"ip mismatched! callerIp=xxx..

[DB]DB Replication(DB 이중화)설정 - master slave 설정

DB 재해 복구 방법 중에 하나인 db replication 설정을 해보겠다.DB Replication(이중화)란?:실시간 또는 일정 주기로 데이터를 다른 서버에 복제하는 방식- 장점: 빠른 복구 가능, RPO(Recovery Point Object: 데이터 손실 허용 범위) 감소- 단점: 설정과 유지 비용 증가 말하자면 master 데이터에 변동이 있을때 마다 binary log파일에  저장을하고 그걸 slave가 복사해가는 것이다. DB 서버 Replication 설정: 한쪽은 master 한쪽은 slave(slave가 master에 있는 데이터를 복사해감==replication) 1. MASTER1) master db 서버 설정아래 명령어로 설정 파일로 들어가서 편집한다.vi /etc/mysql/m..

CS/DB 2025.03.16

[DB]데이터 베이스 재해복구(Disaster Recovery, DR)

1. 재해복구의 주요 목표 (RTO & RPO)RTO (Recovery Time Objective, 복구 목표 시간)장애 발생 후 정상적인 서비스로 복구하는 데 걸리는 최대 허용 시간짧을수록 좋지만 비용이 증가함RPO (Recovery Point Objective, 복구 시점 목표)데이터 손실 허용 범위 (마지막 백업 이후 허용 가능한 최대 데이터 손실 시간)낮을수록 데이터 손실이 적지만 비용이 증가함2. 데이터베이스 재해복구 방법(1) 백업 및 복구(Backup & Restore)주기적으로 데이터를 백업하고 필요 시 복구하는 방법장점: 비용이 저렴하고 간단함단점: 복구 시간이 길고 RPO가 커질 수 있음방식:전체 백업 (Full Backup)차등 백업 (Differential Backup)증분 백업 (..

CS/DB 2025.03.16

[DevOps]📌 Ubuntu 22.04에서 Kubernetes 클러스터 환경 세팅 (마스터 1대 + 워커 2대)

🎯 목표:가상머신 3대(Master 1개 + Worker 2개)를 이용해서 Kubernetes 클러스터를 설치하기 위한 사전 준비를 진행할 거야!CPU 2개, 메모리 4GB를 가진 가상머신이 필요해.✅ 1️⃣ 호스트 이름(컴퓨터 이름) 설정각 가상머신(서버)의 이름을 지정해줘야 해.서버의 역할에 따라 이름을 다르게 설정해야 나중에 관리하기 편해!🔹 할 일마스터 서버: master워커 서버 1: worker01워커 서버 2: worker02📌 실행할 명령어 (각 노드에서 실행)vi /etc/hostname➡ 파일을 열고 아래처럼 변경해줘!master # (마스터 노드에서는 이렇게 설정)worker01 # (첫 번째 워커 노드에서는 이렇게 설정)worker02 # (두 번째 워커 노드에서는 이렇게 ..

Programming/DevOps 2025.03.12

[Linux] vi 명령어 정리

vi 편집기의 모드(command, Edit, LastLine 모드)동작명령어vi 시작vi [경로]명령 모드esc편집 모드i, a, ovi 종료 :wq(w저장 q종료)Last Line 모드:Command 모드(esc)커서이동방향키동작 명령어G가장 마지막 줄로 이동gg첫번째 즐로 이동[n]Gn번째 줄로 이동$커서가 위치한 줄의 맨 끝으로 이동0커서가 위치한 줄의 맨 앞으로 이동w커서가 한 단어씩 오른쪽으로 이동b커서가 한 단어씩 왼쪽으로 이동 (2) 삭제명령어동작x한 문자 삭제, 또는 Edit모드에서 백 스페이스나 Delete 키로 삭제dd커서가 위치한 한 줄을 삭제 d[커서 이동]커서 이동하는 만큼 삭제 (3) 수정명령어 동작r커서가 위치한 부분의 문자 하나를 입력하는 문자로 대체uCtrl + z 처럼 ..

CS/Linux 2025.03.11

[DevOps] Docker와 Container(feat. 도커와 가상머신의 차이)

Docker: 서버를 더 빠르고 가볍게 만드는 마법 같은 도구 🚀Docker란?Docker는 리눅스의 Container기술을 이용하여 애플리케이션을 격리된 환경에서 실행할 수 있도록 도와주는 도구다. 이걸 사용하면 내가 만든 프로그램이 어디서든 똑같이 동작한다.예를 들어, 내 컴퓨터에서는 잘 돌아가는데 서버에서는 오류가 나는 경험 해본 적 있지 않은가? Docker는 이런 문제를 깔끔하게 해결해준다.컨테이너(Container)란?컨테이너는 일종의 독립된 박스라고 생각하면 쉽다. 이 박스 안에는 프로그램, 라이브러리, 환경설정 파일까지 내가 원하는 걸 다 담을 수 있다. 덕분에 컨테이너가 돌아가는 곳이라면 어디서든 똑같은 환경에서 프로그램을 실행할 수 있다.과거에는 **가상머신(VM)**을 사용했지만, ..

Programming/DevOps 2025.03.10