본문 바로가기

전체글28

[JPA] JPA 구동 방식 - Persistence, EntityManagerFactory, EntityManager 본 포스팅의 이미지 저작권은 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의에 있습니다. JPA 구동 방식 설정 정보 조회 설정 정보를 조회하는 방법은, JPA 구현체의 따라 달라질 수 있다. 베이직한 Hibernate 구현체와, 많이 사용되고 있는 Spring Data JPA 구현체를 알아보자. Hibernate 구현체 Hibernate 공식 문서의 4.1 항목에 의하면, META-INF/persistence.xml 파일로 부트스트랩 프로세스를 정의한다. ... Spring Data JPA 구현체 application.properties 또는 application.yml 파일에서 JPA 설정을 진행할 수 있다. Persistence 클래스 Object DB - javax.persisten.. 2023. 5. 27.
[Algorithm] 위상 정렬 위상 정렬 (Topological Sorting) 위상 정렬이란? 위상 정렬(topological sorting)은 유향 그래프의 꼭짓점들(vertex)을 변의 방향을 거스르지 않도록 나열하는 것을 의미한다. 쉽게 말하자면, 순서가 정해져 있는 작업을 정렬 할 때 사용할 수 있는 알고리즘이다. 정의만으로는 무슨 의미인지 파악하기 힘들다. 예시 사진을 보자. 사진과 같이 1부터 6까지의 노드가 있고, 방향성이 있는 간선이 각각 존재한다. 위상 정렬 알고리즘을 구현하기 위해 다음과 같은 과정만 지키면 된다. 1. 진입차수가 0인 노드를 큐에 모두 넣는다. 2. 큐에서 노드(V1)를 하나 꺼낸다. 3. V1에 연결 된 모든 노드를 순회한다. 4. 노드(V2) 발견 시, 간선을 제거 한다. 5. V2의 진입차수.. 2023. 4. 16.
[Algorithm] 최단 거리 알고리즘 총 정리 최단 경로 알고리즘을 만날 때 마다 어떤 알고리즘을 사용할지, 어떻게 사용하는지 헷갈려서 한번에 총 정리 해보았다. 참고 포스팅 최단 경로 알고리즘 종류 가중치가 없거나 동일한 그래프 BFS (완전탐색 알고리즘) 가중치가 없거나 동일한 그래프에서 BFS로 완전탐색하는 것이 최단경로 구하기에 가장 빠르다. 가중치가 각각 다른 그래프 음수가 아닌 가중 그래프 다익스트라(Dijkstra) 단일 쌍, 단일 출발, 단일 도착 최단 경로 문제 음수가 존재하는 가중 그래프 벨만-포드 알고리즘(Bellman-Ford Algorithm) 단일 쌍, 단일 출발, 단일 도착 최단 경로 문제 플로이드-워셜 알고리즘(Floyd-Warshall Algorithm) 전체 쌍, 다수 출발, 단일 도착 최단 경로 문제 A* 알고리즘(.. 2023. 2. 4.
[JPA] JPA 소개(2) - JPA 소개 JPA 소개 Java Persistence API 자바 진영의 ORM 기술 표준 ORM이란? Object-relational mapping (객체 관계 매핑) 객체는 객체대로 설계, DB는 DB대로 설계 ORM 프레임워크가 중간에서 객체와 DB를 매핑 JPA는 애플리케이션과 JDBC 사이에서 동작 자바 애플리케이션에서 DB와 통신하기 위해선 JDBC API 사용이 필수 JPA가 JDBC API를 대신 사용해줌 JPA 동작 - 저장 DAO가 Entity를 JPA에게 던진다. JPA는 Entity 분석 INSERT SQL 생성 JDBC API 사용 패러다임 불일치 해결 JPA가 DB로 INSERT SQL을 던진다. JPA 동작 - 조회 DAO가 JPA에게 id를 던진다. JPA는 SELECT SQL 생성 J.. 2023. 2. 2.
[JPA] JPA 소개(1) - SQL 중심적인 개발의 문제점 SQL 중심적인 개발의 문제점 SQL 의존 주로 관계형 DB를 사용 → 객체를 관계형 DB에 저장 → 수많은 SQL 사용 (CRUD, 무한반복, 지루) → SQL에 의존적 패러다임 불일치 객체 현실적으로는 관계형 데이터베이스 객체 -> SQL 변환 -> RDBMS -> 개발자가 함 객체와 관계형 데이터베이스의 차이 상속 추상화 → 객체 상속 관계형 데이터베이스 테이블 (상속 관계 X) 부모 테이블, 자식 테이블 조인 → 슈퍼타입, 서브타입 관계 CRUD C : 객체 분해, INSERT INTO ITM…, INSERT INTO ALBUM .. R 테이블 조인 객체 생성 … 각각 서브타입 케이스마다 조인 쿼리문 작성 필요 (개발자가 한다) → 자바 컬렉션에서 C : add해주면 됨 R : get 해주면 됨 .. 2023. 1. 31.
[Database] MySQL에서 DATETIME과 TIMESTAMP의 차이는? MySQL에서 DATETIME과 TIMESTAMP는 둘 다 YYYY-MM-DD hh:mm:ss 형식으로 유사해보인다. 둘의 차이는 어떤 것이 있을까? DATETIME - 'YYYY-MM-DD hh:mm:ss' 형식으로 표시 - '1000-01-01 00:00:00' 부터 '9999-12-31 23:59:59' 까지 지원 - 8 Byte TIMESTAMP - 'YYYY-MM-DD hh:mm:ss' 형식으로 표시 - '1970-01-01 00:00:01' UTC 부터 '2038-01-19 03:14:07' UTC 까지 지원 - 4 Byte - Time-Zone 기반 가장 큰 차이점은 Time-Zone 여부임을 알 수 있다. 글로벌 서비스를 개발 할 때는 UTC를 지원하는 TIMESTAMP를 사용하는 쪽이 적.. 2023. 1. 19.
728x90
반응형