전체 글 206

JPA란?

JPA는 Java Persistence API 자바 진영의 ORM 기술 표준이다.여기서 ORM이란 bject-relational mapping(객체 관계 매핑)으로  객체는 객체대로 설계, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한 후 ORM 프레임워크가 중간에서 매핑을 한다.  EJB는 너무 성능이 떨어지기 때문에 JPA로 사용하게 되었다. 오픈소스에서 출발한 표준이기 때문에 매우 실용적이고 정제되어있다.  구현체로는 대부분 하이버네이트를 사용한다. JPA를 구현한 하이버네이트가 있다.  그렇다면 왜 JPA를 사용하는가?SQL 중심적인 개발 -> 객체 중심 개발생산성 증가유지보수 편이함패러다임 불일치 해결성능 상승데이터접근 추상화표준화의 장점들이 있다.  생산성 상승 하는 이유 : 아래처럼 편..

JPA 2024.08.15

백준 9012 - java

문제  풀이import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 0; i   1. 몇개의 문장을 입력 받을 것인지 n으로 입력 받는다.2. for문을 통해  문장을 입력 받고 이때 balance는 (와 ) 의 개수로 판단될 예정이다. isValid는 true를 기본 값으로 설정한다.3. 이중 for문을 통해 갯수를 세고 (, ) 개수를 balance를 ++, --로 왔다갔다 한다. 만약 false면 No출력하고 true면 YES를 출력한다.

백준 2024.08.13

1. Spring 실행

https://start.spring.io  스프링/스프링부트 관련 프로젝트 생성하는 사이트..이때, 아래에 내려가면 JAVA version을 선택하는 곳이 나오는데 거기서 내가 설치한 JAVA version을 일치시켜야 한다. 아니면 Please fix JAVA_HOME environment variable라는 오류가 뜨게 되는데 이것을 발견하지 못하고 꽤나 오래 헤매게 되었다. 인텔리제이를 설치하고 build.gradle을 선택하고 실행한다.   idea는 인텔리제이 설정파일.gradle의 wrapper은 gradle 관련 폴더src main: 내 실제 src test : test 관련 코드. 요즘 제일 중요하다.    port # 8080에는 아무것도 아직 안 하였기 때문에 아무것도 뜨지 않는다. ..

Spring 2024.06.24

주소 바인딩

주소 바인딩프로그램의 명령어와 데이터를 기억장치에 적재할 때, 그것들의 기적장치 주소를 결정하는 것  컴파일 시간 (compile time) 바인딩컴파일 시간에 절대 코드(absolute code)를 생성한다.프로그램을 기억장치 내에 적재할 위치를 컴파일 시간에 결정함.적재 위치를 바꾸려면 다시 컴파일해야 한다.  적재 시간 (load time) 바인딩 컴파일 시간에 재배치 코드(relocatable code)를 생성한다.적재 시간에 적재할 위치를 결정함.미리 변환된 작업 사용  실행 시간 (execution time) 바인딩프로세스가 실행 중에 기억장치의 한 세그먼트로부터 다른 세그먼트로 이동될 수 있다.바인딩은 실행시간에 결정됨 -> 계속 달라질 수 있다. -> 맵핑 테이블 필요하다변환을 하면서 ..

운영체제 2024.06.14

교착상태

서로 물러서지 않고 양보를 하지 않아서 무한히 대기하는 상태한쪽이 양보를 해야 함(프로세스가 처리를 해줘야 한다) 교착상태: 프로세스들이 각자 자원을 점유하고 있음에도 다른 프로세스가 점유한 자원을 요청하여 무한하게 대기하는 상태하드웨어적 자원: CPU, 기억장치, 입출력 장치소프트웨어적 자원: 파일, 세마포어 각자 자원 유형은 여러개의 instance(사례)를 가질 수 있다자원을 사용하려면 요청->사용->해제 순서대로 교착상태는 다음 네 조건이 동시에 만족해야 한다.1. 상호배제 : 오직 한 프로세스만 자원을 점유할 수 있다2. 점유와 대기 : 하나의 자원을 점유하면서도 다른 자원에 대기하는 것3. 비선점: 점유된 자원은 강제 반환 X 오로지 프로세스가 작업을 마치고 자발적으로 반환4. 순환 대기 : ..

운영체제 2024.06.14

프로세스 동기화

병행 프로세스들이 서로 데이터를 주고 받으면서 수행될 때 프로세스간 동기화 필요 병행 프로세스들이 공유데이터를 접근할 때, 병행접근하면 데이터 일관성이 잘못될 수 있다. 따라서 일관성을 유지하려면 데이터접근을 순서화 하여야한다.  count ++ or -- 는 순서화하여 한번에 하나씩 수행.. 1/1/1/2/1/이렇게 할 경우 일관성이 잘못됨 N개의 프로세스가 공유데이터에 접근하고 각 프로세스는 공유데이틀 접근하는 코드 세그먼트를 갖고 있는데 이것을 임계구역이라고 한다. 임계구역은 순서화해서 수행해야한다. 중간난입이 불가능하여 오직 하나의 프로세스만 임계구역을 수행하여야 한다. 진입구역: 임계구역 들어가기전 허가 구하기 출구구역: 임계구역 수행을 끝낸다는 것을 알림 임계구역 문제 요구 조건 1. 상호배제..

운영체제 2024.06.14

B+, B - tree Index

indexed-sequential file들은 인덱스를 통해 정렬된 레코드에 접근할 수 있다. 하지만 이러한 파일구조는 파일의 크기가 커질수록(레코드의 수가 많아질 수록) 누적된 Insert와 Delete연산으로 인해 많은 오버플로우 블록이 만들어져 전체적인 성능이 떨어지고, 때문에 주기적으로 인덱스 파일을 재구성하여 오버플로우 블록을 정리해야할 필요가 있다. 이런 문제를 해결하기 위해 대부분의 주요 DBMS에서는 B+트리 인덱스를 사용하여 조회 성능을 높인다.   B+- tree는 Multilevel index의 한 종류로, root node와 internal node에는 split value와 하위 노드로의 포인터만 존재 (Sparse Index)leaf node에는 각 레코드의 search key값..

데이터베이스 2024.06.08

INDEXING

인덱스란 효율적인 데이터 접근을 도와주는 자료구조 Index는 오름차순 정렬이기 때문에 우리가 원하는 정보를 찾기가 쉽다. 인덱스 파일search key(DB에서 record를 찾기 위한 기준이 되는 값)와 실제 레코드를 참조하는 pointer로 구성된 index entry(index record)들의 집합인덱스 파일은 일반적으로 원본 데이터 파일에 비해 매우 적은 용량을 차지한다. 인덱스search key를 정렬하여 관리하는 Order Indices분산하여 관리하는 Hash Indices 인덱스 평가 지표Access Type : 인덱스를 사용할 때 효율적인 접근 방식. 쿼리의 종류에 따라 인덱스를 사용하는 것이 효과가 없을 수도 있다.specified value : 특정 값 조회.range of val..

데이터베이스 2024.06.08