[Spring] JDBC(Java Database Connectivity)
·
Spring
JDBC(Java Database Connectivity)JDBC는 Java Database Connectivity로 Java 애플리케이션이 데이터베이스와 통신할 수 있도록 도와주는 표준 API이다. DB마다 사용하는 프로토콜과 방식이 다르기 때문에 Java 프로그램이 DB와 직접 대화가 불가능하다. 그래서 자바에서는 공통된 규칙을 만들어 두고 DB마다 그 규칙을 구현한 드라이버를 사용한다. 그리고 그 공통 규칙이 JDBC이다. 구조는 위 사진과 같다. 여기서 핵심 포인트는 ⭐ JDBC는 인터페이스이다. 실제 DB와 통신하는 코드는 JDBC Driver가 담당한다. DB가 달라도 JDBC API는 동일하게 사용한다. -> 그래서 DB를 MySQL에서 PostgreSQL로 바꿔도 자바 코드의 큰 구조는 거..
대용량 데이터 (csv파일) db에 넣기 with JdbcTemplate -2
·
프로젝트/끼니콩
2025.07.15 - [프로젝트/끼니콩] - [Spring] csv파일 db에 넣기 with JdbcTemplate [Spring] csv파일 db에 넣기 with JdbcTemplate들어가며아동급식카드가맹점 데이터를 db에 넣어야한다. 데이터는 지역 별로 나누어져 csv파일 형태로 제공되었고, 한 번만 넣는게 아니라 데이터가 변경되거나 지역이 확장이되면 계속적으로erika0915.tistory.com 앞서 진행한 작업에 대한 설명이 적혀 있다. 문제점아동급식카드가맹점 공공데이터는 간헐적으로 업데이트된다. 가맹점의 정보가 수정되기도 하고, 없어지기도 하며, 새롭게 추가되기도 한다. 지금 운영하고 있는 '끼니콩' 서비스에서는 아래 사진과 같이 `업데이트 날짜`를 제공한다. 이는 해당 가맹점이 언제 마지..
[TDD] AI시대, 왜 지금 TDD 인가요?
·
Tech/TDD
AI 시대, 개발자로 살아간다는 것 AI 코딩 도구가 개발의 일상에 깊이 스며들었습니다. 기능을 설명하면 바로 코드가 생성되고, 개발 속도와 생산성은 눈에 띄게 향상됐습니다. 이제 '코드를 짜는 일' 자체는 더 이상 개발자의 핵심 업무가 아니게 된 것이다. 하지만 그만큼 이제 우리는 개발자로서 더 본질적인 질문에 마주하게 됩니다. 우리는 지금 무엇을 만들고 있는가 -> 문제 정의 이 코드가 정말 우리가 기대한 대로 동작하고 있는가 -> 결과 검증 문제가 생겼을 때, 어디서부터 점검하고 어떻게 개선할 수 있는가 -> 리팩터링 AI가 많은 것을 대신하고 있지만, 무엇을 만들지 정의하고, 결과를 검증하는 책임은 여전히 개발자의 몫입니다. AI와 협업하는 지금, 개발자의 역할은 더 명확해졌고, 그 책임을 현실적..
[Spring] 액츄에이터 (Actuator)
·
Spring
액츄에이터 서비스 운영에서 '모니터링'은 장애 대응의 핵심이다. 단순히 기능을 개발하는 것을 넘어, 운영 단계에서 서비스가 살아있는지, 로그 설정은 정상인지, 커넥션 풀은 얼마나 사용되는지 확인하는 비기능적 요소들을 '프로덕션 준비 기능'이라 부른다. 스프링 부트 액츄에이터는 이러한 지표나 감사 기능을 편리하게 제공한다. 1) 액츄에이터 시작하기 액츄에이터를 사용하려면 프로젝트 설정 (`build.gradle`)에 의존성을 추가해야 한다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator'}설정 후 서버를 실행하고 `http://localhost:8080/actuator`에 접속하면 사용 가능한 엔드..
[Java] 가비지 컬렉션 알고리즘 종류
·
Java
가비지 컬렉션 알고리즘 종류 JVM이 메모리를 자동으로 관리해주는 것은 개발자의 입장에서 굉장히 유용하다. 그러나 GC를 수행하기 위해 Stop-The-World가 발생하고 이 때문에 애플리케이션이 중지되는 문제점이 발생하기도 한다. 자바가 발전됨에 따라 힙 영역의 사이즈가 커지면서 애플리케이션의 지연 현상이 두드러지게 되었고, 이를 최적화하기 위해 다양한 가비지 컬렉션 알고리즘이 개발되었다. 1) Serial GC 서버의 CPU 코어가 1개일 때 사용하기 위해 개발된 가장 단순한 GC이다. GC를 처리하는 스레드가 1개라 Stop-The-World 시간이 길다. 보통 실무에서는 사용하지 않는다고 한다. 2) Parallel GC Java8의 디폴트 GC이며, Serial GC와 기본적인 알고리즘은 같..