JPA(Java Persistent API)란 ? ORM (Object Relational Mapping) 객체 관계 매핑 기술의 표준으로 인터페이스의 모음입니다. 따라서 실제로 동작하는 것이 아니기 때문에 구현체가 필요한데, JPA 표준을 구현한 구현체는 아래와 같이 Hibernate, EclipseLink, DataNucleus가 있으며 대표적으로 Hibernate를 사용합니다. ORM 이란 ? ORM 기술은 말 그대로 객체와 관계형 데이터 베이스를 매핑해 주는 기술으로 객체는 객체대로 설계할 수 있고 관계형 데이터베이스는 관계형 데이터베이스대로 설계가 가능하도록 ORM 프레임워크가 중간에서 매핑을 해줍니다. JPA의 동작 과정 JPA는 JAVA 애플리케이션과 JDBC 사이에서 동작하는데 JAVA 애..
문제 설명 제한사항 입출력 예 Solution.py 정답률이 낮은 문제이지만 생각보다 간단하게 풀 수 있습니다. 입출력 예제 2번 그림을 통해 설명해보겠습니다. 1. 첫 행부터 ~ 마지막 행에 있는 파일 중에 제일 처음 파일이 있는 행과 마지막에 파일이 있는 행을 찾아봅시다. 그러면 다음과 같이 표시 됩니다. 2. 첫 열부터 ~ 마지막 열에 있는 파일 중에 제일 처음 파일이 있는 열과 마지막에 파일이 있는 열을 찾아봅시다. 그러면 다음과 같이 표시 됩니다. 3. 표시된 파일을 사각형의 경계로 하여 사각형을 그려봅니다. 그러면 사각형은 다음과 같이 그릴 수 있습니다. 4. 이제 이 사각형의 시작 점 (1, 3 ) 끝나는 점(5, 8) 을 result로 반환하면 [1, 3, 5, 8] 이 됩니다. 이제 아래..
우선 Lock에 대해 알아보기 전에 트랜잭션에 대한 이해가 필요하므로 트랜잭션에 대해 모른다면 아래 포스팅을 참고하시길 바랍니다. 트랜잭션이란? 특징과 사용법에 대해 쉽게 알아보자트랜잭션(Transaction) 트랜잭션은 DB의 상태를 변경시키기 위해 수행하는 작업 단위입니다. 여기서 DB의 상태를 변경시킨다는 SELECT, UPDATE, INSERT, DELETE 와 같은 쿼리를 날려 연산을 수행하는 것입니hstory0208.tistory.com 락(Lock)이란 ?두 명의 사용자가 DB에 접근해 아래 처럼 2개의 DB 세션을 사용한다고 가정해봅시다. ( 여기서는 H2 DB 사용 )편의상 두 개의 세션을 나눠서 세션1, 세션2라고 부르겠습니다.세션1이 트랜잭션을 시작하고 데이터를 수정하는 동안 아직 커..
트랜잭션(Transaction)트랜잭션은 DB의 상태를 변경시키기 위해 수행하는 작업 단위입니다.여기서 DB의 상태를 변경시킨다는 SELECT, UPDATE, INSERT, DELETE 와 같은 쿼리를 날려 연산을 수행하는 것입니다.트랜잭션을 좀 더 쉽게 풀이해서 이야기 하자면, 트랜잭션을 한국어로 번역하면 "거래"즉, DB에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것이라고 할 수 있습니다. 그런데 여기서 거래를 안전하게 처리하도록 보장해준다는 말이 무엇일까요?이 얘기를 쉽게 이해하기 위해 우리가 일상속에서 자주 이용하는 계좌이체를 예시로 들 수 있습니다. 계좌이체 예시 ( 트랜잭션이 없을 경우 )짱구와 철수가 있습니다.짱구와 철수는 각각 계좌에 10000원씩 있습니다.짱구가 철수한테 ..
인텔리제이로 테스트 코드를 테스트 돌리던 와중 기존엔 발생하지 않던 에러가 갑자기 발생했습니다. java: warning: source release 17 requires target release 17 해당 에러는 설정만 조금 건들여주면 쉽게 해결 가능합니다. 참고로 제가 사용하고 있는 자바 버전은 JAVA 11 입니다. 오류 해결 1. "파일 -> 설정 -> 빌드, 실행, 배포 -> 컴파일러 -> Java 컴파일러" 경로로 들어갑니다. 2. 모듈당 바이트코드 버전: 밑에 + 버튼을 클릭해 현재 프로젝트를 선택하여 추가합니다. 3. 그 다음 대상 바이트코드 버전을 현재 사용하고 있는 JAVA 버전과 똑같이 설정하고 적용합니다. 버전과 관련된 호환성 체크 및 버전 정보 설정 만약 새 JAVA 버전을 다운..
문제 설명 제한사항 입출력 예 Solution.py 이 문제를 풀기 위해 2개의 딕셔너리를 활용했는데 하나는 달리기 순위를 key로 갖고 선수 이름을 value로 갖는 rank_Dic 다른 하나는 선수 이름을 key로 갖고 달리기 순위를 value로 갖는 player_Dic 으로 만들었습니다. 두 개의 딕셔너리를 활용하는 이유는 아래의 코드를 보면 이해되겠지만, 순위가 변경될 때 서로의 value값을 참조하기 때문입니다. 서로의 value값을 참조하며 callings 배열에 있는 선수들 정보를 가지고 이름을 불린 선수와 그 선수의 앞에 있는 선수를 서로 변경하여 마지막으로 result 에 맞도록 rank_Dic의 value들을 반환합니다. 정답 코드 def solution(players, callings..