전체 글 (73) 썸네일형 리스트형 3장_영속성 관리 앤티티 매니저 팩토리와 앤티티 매니저 엔티티 매니저는 데이터베이스 연결이 꼭 필요한 시점까지 커넥션을 얻지 않는다. 영속성 컨텍스트 영속성 컨텍스트란, 엔티티를 영구 저장하는 환경이라는 뜻이다. persist() 함수를 이용해서 저장한 것이 결국 정확히 말하면 영속성 컨텍스트에 저장한다는 뜻이다. 엔티티의 생명주기 1) 비영속 persist()를 하기 이전의 상태. 즉, 영속 컨텍스트에 아직 저장하지 않은 상황이다. 2) 영속 영속성 컨텍스트가 관리하는 엔티티를 영속 상태라고 한다. 즉, 영속성 컨텍스트에 의해 관리된다는 뜻이다. 3) 준영속 영속성 컨텍스트가 엔티티를 관리하지 않는 상태를 말한다. 4) 삭제 영속성 컨텍스트와 데이터베이스에서 엔티티를 삭제한 것을 말한다. 영속성 컨텍스트의 특징 영속 상.. 2장_JPA 시작 주의할 것 H2 실행 시 h2.bat을 실행시킨 뒤 Server 설정으로 바꿔서 들어갈 것 어노테이션 @Entity 테이블이라고 생각하면 된다. 이 클래스를 테이블과 매핑한다고 JPA에게 알려준다. 이를 엔티티 클래스라고 한다. @Table(name="~~~") 엔티티 클래스에 매핑할 테이블 정보를 알려준다. 이 어노테이션을 생략하면 클래스 이름을 테이블 이름으로 매핑한다. @Id 엔티티 클래스의 필드를 테이블의 PK에 매핑한다. 이를 식별자 필드라고 부른다. @Column(name="~~~") 필드를 컬럼에 매핑한다. 매핑 어노테이션이 없으면 필드를 컬럼명으로 매핑한다. 데이터베이스 방언 JPA는 특정 데이터베이스에 종속적이지 않은 기술이다. 하지만, 데이터베이스마다 문법이 조금씩 다르다는 문제점이 있.. 1장_네트워크 기초 지식 네트워크 기본 지식 한 줄 정리 네트워크는 컴퓨터, 통신 매체, 데이터로 이루어진다. 리소스를 공유하는 것이 네트워크의 장점이다. 데이터를 주고받음으로써 리소스를 공유한다. 데이터는 비트로 표현된다. 데이터 통신을 하기 위해서는 기기와 프로토콜(규칙)이 필요하다. 데이터 통신에는 회선 교환과 패킷 교환이 있다. 회선 교환은 '파이프'를 교체하는 방식이다. 패킷 교환은 '패킷'으로 분할해서 송신하는 방식이다. 컴퓨터 네트워크는 패킷 교환 방식이다. 패킷 교환 네트워크는 컴퓨터, 통신 매체, 인터페이스, 라우터로 이루어진다. 네트워크에는 멀티액세스 네트워크/포인트 투 포인트 네트워크 두 종류가 있다. 자신의 책임으로 좁은 범위에서 만드는 것이 LAN이다. 넓은 범위에서 통신사업자로부터 케이블을 빌려서 만들어.. 1장_JPA 소개 JPA의 장점 생산성 단순 쿼리문을 작성하는 시간을 줄여준다.(ex. persist, save, find, findId 등) CREATE TABLE 과 같은 DDL문을 작성하는 시간 역시 줄여준다. 유지보수 SQL을 직접 사용할 경우, 엔티티에 필드 하나만 추가되어도 이와 관련된 모든 API를 변경해야 한다. 하지만 JPA는 알아서 해준다! 패러다임의 불일치 해결 상속, 연관관계, 객체 그래프 탐색, 비교하기와 같은 패러다임의 불일치 문제 해결 성능 다양한 성능 최적화 기능을 제공한다. 데이터 접근 추상화와 벤더 독립성 예로, 페이징 처리는 데이터베이스마다 달라서 사용법을 각각 배워야 한다. 하지만 JPA를 사용한다면 그냥 데이터베이스가 변경되었다는 것만 알리면 된다. 표준 JPA는 자바 진영의 ORM .. 해시(Hash) 1. 해시란? 데이터를 효율적으로 관리하기 위해 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 것 Lee → 해싱함수 → 5 Kim → 해싱함수 → 3 Park → 해싱함수 → 2 ... Chun → 해싱함수 → 5 // Lee와 해싱값 충돌 ① 해당 데이터의 해시값을 해시 함수를 이용하여 계산한다. ② 이 해시값을 주소로 하는 위치에 데이터를 저장한다. ③ 저장 후에 검색할 때 데이터의 해시값을 계산해서 바로 해당 위치로 이동할 수 있다. O(1) 하지만 데이터가 많아지면 다른 데이터임에도 같은 해시값이 나오는 충돌이 발생한다. 그래도 해시 테이블을 쓰는 이유는? 적은 자원으로 많은 데이터를 효율적으로 관리하기 위해 하드디스크나 클라우드에 존재하는 무한한 데이터들을 유한한 개수의 해시값으로 매핑.. 이진탐색트리(BST) 이진탐색+연결리스트 이진탐색: 탐색 시 O(logN) but 삽입, 삭제 불가능 연결리스트: 삽입, 삭제 시 O(1) but 탐색 시 O(N) 두 가지를 합해서 장점을 얻은 것이 이진 탐색 트리이다. 1. 이진탐색트리란? 각 노드의 자식이 2개 이하이다. 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 크다. 중복 허용 X BST는 검색 목적 자료구조인데, 중복이 많은 경우 트리를 사용하면 검색 속도가 더 느려진다. 이 경우에는 노드에 해당 값의 count를 갖게 하여 처리하는 것이 더 효율적이다. 중위순회로 정렬된 순서를 읽을 수 있다. 2. 삭제 ① 리프 노드 삭제 시: 그냥 삭제 ② 자식 1개인 노드 삭제 시: 지워진 위치에 자식 노드 올리기 ③ 자식 2개인 노드 삭제 시: 오른쪽 자식 중 가장.. 트리(Tree) 1. 트리란? 노드와 엣지로 이루어진 자료구조이다. 사이클이 존재하지 않는다. 사이클이 존재한다면, 이는 그래프이다. 모든 노드는 자료형으로 표현이 가능하다. 루트에서 한 노드로 가는 경로는 유일하다. 노드가 N개라면 간선은 N-1개이다. 계층 구조가 확실한 구조에서 사용한다. 2. 트리 순회 방식 ① 전위순회 부모-왼쪽 자식-오른쪽 자식 순으로 방문 void preOrder(int idx){ if(tree[idx]){ cout 힙(Heap) 우선순위 큐를 위해 만들어진 자료구조이다. 우선순위 큐는, 데이터들의 우선순위 차례대로 데이터가 나가는 자료구조를 말한다. 시뮬레이션, 작업 스케줄링, 수치해석 계산 등에 사용된다. 삽입, 삭제 모두 O(logN)이 걸린다. 1. 힙이란? 완전 이진 트리의 일종 최대, 최소값을 빠르게 찾도록 만들어진 자료구조 반정렬 상태(전체 정렬 상태가 아님!) 중복된 값을 허용한다 탐색에 적합하지 않다 특정 노드로 접근이 불가능하다 ① 최대힙(C++) ② 최소힙(Java) 두 종류가 있다. 2. Heap vs BST(이진 탐색 트리) BST 특정 노드 접근 가능 정렬된 상태 유지 중복 허용 X Heap 특정 노드 접근 불가능 전체 정렬 X 중복 허용 부모 노드와 자식 노드 관계 왼쪽 자식 index = (부모 ind.. 이전 1 2 3 4 5 6 7 8 ··· 10 다음