전체 글 404

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

MyBatis는 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper이고, JdbcTemplate가 제공하는 대부분의 기능을 제공한다. 하지만 MyBatis가 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고, 동적 쿼리를 매우 편리하게 작성할 수 있다는 점이다. MyBatis를 사용하기 위해서 //build.gradle에 추가 //MyBatis 추가 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1' //application.properties에 추가 #MyBatis mybatis.type-aliases-package = hello.itemservice.domain mybatis.configura..

Spring 2024.03.18

[백준] S1. 2468번 안전영역 / 분류: DFS, BFS

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net DFS 풀이 import sys sys.setrecursionlimit(10 ** 8) N = int(sys.stdin.readline()) matrix = [] for i in range(N): matrix.append(list(map(int, sys.stdin.readline().split()))) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def dfs(x, y, depth..

[백준] S4. 카드2 / 분류: 자료구조

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 처음에 배열로 구현했더니 시간초과가 나와서 deque로 구현했다. import sys from collections import deque N = int(sys.stdin.readline()) cards = [i for i in range(N, 0, -1)] cards = deque(cards) while len(cards) > 1: #맨위 카드 버리기 cards.pop() #두번째 카드 맨뒤로 ..

[백준] S4. 수 찾기 / 분류 : 자료 구조

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) M = int(input()) B = list(map(int, input().split())) A.sort() for num in B: l, r = 0, N-1 isExist = False..

[프로그래머스] Lv2. 기능 개발 스택/큐

기능개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 ..

[프로그래머스] Lv2. 성분으로 구분한 아이스크림 총 주문량 Oracle

성분으로 구분한 아이스크림 총 주문량 문제 설명 다음은 아이스크림 가게의 상반기 주문 정보를 담은 FIRST_HALF 테이블과 아이스크림 성분에 대한 정보를 담은 ICECREAM_INFO 테이블입니다. FIRST_HALF 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER 는 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 맛, 상반기 아이스크림 총주문량을 나타냅니다. FIRST_HALF 테이블의 기본 키는 FLAVOR입니다. NAMETYPENULLABLE SHIPMENT_ID INT(N) FALSE FLAVOR VARCHAR(N) FALSE TOTAL_ORDER INT(N) FALSE ICECREAM_INFO 테이블 구조는 다음과 같으며, FL..

SQL 문제 풀이 2024.03.17

[Spring DB2] 데이터 접근 기술 - 테스트

데이터 접근 기술을 테스트할 때 어떤 식으로 할 것인지를 배우는 챕터 테스트에서 중요한 원칙 테스트는 다른 테스트와 격리해야 한다. 테스트는 반복해서 실행할 수 있어야 한다. 테스트 - 데이터베이스 연동 먼저 데이터베이스 연동을 위해 test#application.properties에 아래 코드를 작성한다. spring.profiles.active=test spring.datasource.url=jdbc:h2:tcp://localhost/~/test2 spring.datasource.username=sa spring.datasource.password= #jdbcTemplate sql log logging.level.org.springframework.jdbc=debug @SpringBootTest cl..

Spring 2024.03.17

[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
728x90