문제 설명 풀이 코드 각 층마다 버튼을 몇번씩 눌려 도달했는지 저장하기 위해 visited[] 배열을 선언하였다. 강호의 위치(S)부터 bfs로 탐색을 시작한다. 강호의 위치(S)가 스타트링크(G)에 도착하면 스타트링크까지 도착하는데 눌린 버튼횟수를 반환한다. visited[cur] 정답 코드 from collections import deque import sys input = sys.stdin.readline f, s, g, u, d = map(int, input().split()) # 층수, 강호, 스타트링크, 위, 아래 visited = [-1] * (f + 1) def bfs(start): q = deque() q.append(start) visited[start] = 0 while q: cur..
기본키(primary key) 매핑하는 방법은 총 2가지로 직접 할당과 자동 생성이 있다. 직접 할당 : @Id 어노테이션만 사용하여 Id값을 직접할당 자동 생성 : @Id와 @GeneratiedValue를 사용하여 원하는 키 생성 전략을 선택 자동 생성의 키 생성 전략은 다음과 같이 4가지로 분류 된다. 키 생성 전략 IDENTITY : 데이터베이스에 위임 (MYSQL) SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용 (ORACLE) TABLE : 키 생성용 테이블 사용 (모든 DB에서 사용) AUTO : dialect(방언) 설정에 따라 자동 지정 (기본값) 이 각 키 생성 전략에 대해 자세히 알아보자. IDENTITY 전략 기본 키 생성을 데이터베이스에 위임하는 전략 (주로 MySQL, Pos..
객체와 테이블 매핑 @Entity @Entity가 붙은 클래스를 엔티티라고 하고 JPA가 관리 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수이다. 속성 값 속성 설명 기본값 name JPA에서 사용할 엔티티 이름을 지정한다 클래스 이름을 그대로 사용 주의할점 기본 생성자 필수이다. (파라미터가 없는 public 또는 protected 생성자) final, enum, interface, inner 클래스에서는 사용할 수 없다. 저장할 필드의 변수에 final을 사용할 수 없다. @Table 엔티티와 매핑할 테이블 지정한다. 속성 값 속성 설명 기본값 name 매핑할 테이블 이름을 지정한다 엔티티 이름 사용 catalog catalog 기능이 있는 DB에서 catalog를 매핑한다. ..
spring.jpa.hibernate.ddl-auto 데이터베이스 ddl 자동 생성 옵션으로 Entity 설정을 참고하여 애플리케이션 실행시점에 Hibernate에서 자동으로 DDL을 생성하여, 필요한 Database의 Table 설정들을 자동으로 수행해주는 기능이다. application.yml spring: jpa: hibernate: ddl-auto: 옵션 ddl-auto의 옵션으로는 5가지가 있다. ddl-auto 옵션 종류 create: 기존테이블 삭제 후 다시 생성 (DROP 후에 CREATE) create-drop: create와 같으나 종료시점에 테이블 DROP (테스트 코드 실행 시 주로 사용) update: 변경분만 반영, 추가만 반영되고 삭제는 반영되지 않는다. (DB Lock을 방지..
JPA의 가장 큰 장점은 객체 매핑을 통해 자동으로 SQL 쿼리를 작성해 DB에 전달해준다. 그런데 DB의 종류는 한가지가 아닌 정말 다양한 DB의 벤더들이 있고 각 DB마다 SQL 문법이 다르다. 그럼 JPA는 어떻게 이 수많은 DB들에 우리가 사용하는 DB에 맞는 SQL을 작성하여 전달해줄까? 이 때 사용되는 것이 바로 "Dialect (방언)"이다. dialect는 JPA 구현체(ex: hibernate)가 사용하는 SQL 방언을 추상화한 것으로, 각 DB마다 다른 SQL 문법을 처리해준다. DB마다 맞은 SQL 언어를 JPA가 알아서 자동으로 인지하는 것이 아니라 다음과 같이 DB에 맞는 dialect를 설정해줘야한다. application.yml spring: jpa: properties: hi..
DDL(Data Definition Language) - 데이터 정의어 데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 한다. 쉽게 말해 데이터베이스의 테이블을 생성하고, 수정하고, 삭제하는 언어이다. create : 데이터베이스, 테이블등을 생성 alter : 테이블을 수정 drop : 데이터베이스, 테이블을 삭제 truncate : 테이블을 초기화 DML(Data Manipulation Language) - 데이터 조작어 정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 한다. 쉽게 말해 DB 테이블의 컬럼과 로우를 조작하는 언어이다. 저장된 데이터를 실질적으로 처리하는데 사용된다. select : 데이터 조..