GitHub

https://github.com/Choidongjun0830

분류 전체보기 487

[Spring DB2] 데이터 접근 기술 - 스프링 JdbcTemplate-2

JdbcTemplate - 이름 지정 파라미터 String sql = "update item set item_name=?,price=?, quantity=? where id=? 원래 이런 sql 코드였는데 String sql = "update item set item_name=?,quantity=?,price=? where id=? 이렇게 바뀌면 quantity와 price의 데이터 바인딩 순서가 바뀐다. 그러면 바인딩 코드도 바꿔야 하는 문제가 발생한다. 그래서 파라미터를 순서대로 바인딩하는 것이 아니라 이름을 지정해서 파라미터를 바인딩하는 'NamedParameterJdbcTemplate'라는 기능을 제공한다. /** * NamedParameterJdbcTemplate * SqlParameterSou..

Spring 2024.03.14

[Spring DB2] 데이터 접근 기술 - 스프링 JdbcTemplate-1

SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate는 JDBC를 매우 편리하게 사용할 수 있도록 도와주어 좋은 선택지다. 장점 설정의 편리함 JdbcTemplate는 'spring-jdbc' 라이브러리에 포함되어 있는데 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본적으로 사용되는 라이브러리라서 별도의 설정이 필요없다. 반복 문제 해결 JdbcTemplate는 템플릿 콜백 패턴을 사용해서, JDBC를 직접 사용할 때 발생하는 반복되는 작업을 대신 처리해준다. 대신해주는 반복되는 작업들 커넥션 획득 statement를 준비하고 실행 결과를 반복하도록 루프 실행 커넥션, statement, resultset 종료 트랜잭션을 위한 커넥션 동기화 예외 발생시 스프링 예외 변환기 실 개발..

Spring 2024.03.14

[Spring DB2] 데이터 접근 기술 - 시작

제대로 강의를 듣기 전에 데이터 접근 기술을 배우기 위한 기본 소스 코드를 살펴본다. public interface ItemRepository { Item save(Item item); void update(Long itemId, ItemUpdateDto updateParam); Optional findById(Long id); List findAll(ItemSearchCond cond); //검색 조건 } DTO(data transfer object) 데이터 전송 객체 DTO는 기능은 없고 데이터를 전달만 하는 용도로 사용되는 객체를 의미 DTO에 기능이 없어야만 하는 것은 아님. 객체의 주 목적이 데이터를 전송하는 것이라면 DTO라고 할 수 있다. 객체 이름에 DTO를 꼭 붙여야 하는 것은 아니지만,..

Spring 2024.03.11

쿠버네티스 Pods

Pods는 아주 간단하고 기본적이다. Pods는 하나 혹은 둘 이상의 컨테이너로 이루어진 그룹이다. 그리고 공유 저장 네트워크와 컨테이너 실행법에 대한 설명를 갖고 있다. Pod는 쿠버네티스에서 가장 기본으로 배포되는 유닛이다. 여러 개의 마이크로 서비스가 있으면 개발자들은 각 마이크로서비스들을 도커 이미지 안에 포장시킨다. 그러고 나면 스스로 배포를 전개할 수 있다. 클라우드 시스템 안에서 노드를 작동시켜 접속한 다음 도커 명령어를 입력해 실행하는 것을 예시로 들 수 있다. 이런 식으로 도커 컨테이너를 해당 이미지와 함께 실행할 수 있다. 이런 시스템을 조직하기 위한 쿠버네티스 활용법 우선, 쿠버네티스는 컨테이너들의 시작과 종료를 총제적으로 관리한다고 할 수 있다. 아키텍처의 조직을 위해 쿠버네티스는 ..

클라우드 2024.03.11

[프로그래머스] Lv1. 경기도에 위치한 식품창고 목록 출력하기 Oracle

경기도에 위치한 식품창고 목록 출력하기 문제 설명 다음은 식품창고의 정보를 담은 FOOD_WAREHOUSE 테이블입니다. FOOD_WAREHOUSE 테이블은 다음과 같으며 WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, TLNO, FREEZER_YN는 창고 ID, 창고 이름, 창고 주소, 전화번호, 냉동시설 여부를 의미합니다. Column nameTypeNullable WAREHOUSE_ID VARCHAR(10) FALSE WAREHOUSE_NAME VARCHAR(20) FALSE ADDRESS VARCHAR(100) TRUE TLNO VARCHAR(20) TRUE FREEZER_YN VARCHAR(1) TRUE 문제 FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID..

SQL 문제 풀이 2024.03.10

[프로그래머스] Lv3. 베스트 앨범 해시

베스트앨범 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생..

[Spring DB 1편 듣고 복습, 토이 프로젝트 수정] 6. 스프링과 문제 해결 - 예외 처리, 반복

체크 예외와 인터페이스 서비스 계층은 가급적 다른 구현 기술에 의존하지 않고 순수한 비즈니스 코드만 존재하는 것이 좋으므로, 예외에 대한 의존도 해결해야 한다. SQLException 같은 체크 예외를 런타임 예외로 전환해서 서비스 계층으로 던지면, 서비스 계층이 이 예외를 무시할 수 있어서 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있다. MemberRepository라는 인터페이스를 도입해서 구현 기술을 쉽게 변경할 수 있게 해야한다. MemberRepository 인터페이스를 도입하여 JdbcMemberRepository나 JpaMemberRepository라는 구현 클래스를 만들어서 사용하고, MemberService에서는 MemberRepository 인터페이스..

Spring 2024.03.09

[Spring DB 1편 듣고 복습, 토이 프로젝트 수정] 5. 자바 예외 이해

Object: 예외도 객체이므로, 예외의 최상위 부모도 Object Throwable: 최상위 예외 Error: 메모리 부족이나 시스템 오류같이 애플리케이션에서 복구 불가능한 시스템 예외. Throwable을 catch로 잡으려 하면 Error도 잡혀서 Throwable은 잡으려 하면 안됨. Exception부터 잡아야 하는 오류로 생각해야함. Exceptions 체크 예외: 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외. RuntimeException을 제외하고 Exceptions의 하위 예외는 모두 체크 예외임. 체크 예외는 잡아서 처리하거나, 밖으로 던지도록 선언해야함. 개발자가 실수로 예외를 누락하지 않도록 컴파일러를 통해 문제를 잡아주는 장점이 있지만, 모든 체크 예외를 처리해주어야..

Spring 2024.03.02

[Spring DB 1편 듣고 복습, 토이 프로젝트 수정] 4. 스프링과 문제 해결 - 트랜잭션 - 2

MemberRepository의 코드 수정 (V3) 파라미터로 커넥션을 넘기는 부분을 모두 지우고 private void close(Connection con, Statement stmt, ResultSet rs) { JdbcUtils.closeResultSet(rs); JdbcUtils.closeStatement(stmt); //트랜잭션 동기화를 사용하려면 DataSourceUtils를 사용해야함. DataSourceUtils.releaseConnection(con, dataSource); } private Connection getConnection() throws SQLException { Connection con = DataSourceUtils.getConnection(dataSource); l..

Spring 2024.02.29

[Spring DB 1편 듣고 복습, 토이 프로젝트 수정] 4. 스프링과 문제 해결 - 트랜잭션 - 1

문제점 애플리케이션 구조는 UI를 처리하는 @Controller의 '프레젠테이션 계층', 비즈니스 로직을 처리하는 @Service의 '서비스 계층', DB 접근을 처리하는 @Repository의 '데이터 접근 계층'의 3가지 계층으로 나뉜다. 프레젠테이션 계층 UI와 관련된 처리 담당 웹 요청과 응답 사용자 요청 검증 서비스 계층 비즈니스 로직을 담당 가급적 다른 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 JDBC, JPA, ... 이 3가지 계층 중에서 서비스 계층이 가장 중요하다. 시간이 흘려서 웹, 데이터 저장 기술이 변해도, 비즈니스 로직은 최대한 변경없이 유지되어야 한다. 이렇게 하려면 서비스 계층은 다른 기술에 종속적이지 않고 최대한..

Spring 2024.02.29
728x90