분류 전체보기 140

JPA로 CRUD 구현하기_(2)객체와 테이블 매핑

** 이전게시글 참고: 2021.08.20 - [Programming/JPA] - JPA로 CRUD 구현하기_(1)프로젝트 생성 1. Member 객체 매핑 JPA 사용을 위해서는 다음과 같이 자바 클래스와 회원 테이블을 매핑해야한다. [vo/Member.java] package vo; // JPA annotation을 사용하기 위한 라이브러리 import javax.persistence.*; // @Entity: DB Table과 매핑될 클래스임 // @Table: 매핑할 Table 정보 // @Id: 테이블의 기본키와 매핑할 필드 // @Column: 필드와 컬럼을 매핑 @Entity @Table (name="MEMBER") public class Member { @Id @Column(name = "..

Programming/JPA 2021.08.20

JPA로 CRUD 구현하기_(1)프로젝트 생성

자바의 ORM 기술표준인 JPA를 활용하여 간단한 CRUD 구현 프로젝트를 시작해보자. 여기서는 회원 추가(C), 회원 조회(R), 회원정보 수정(U), 회원 탈퇴(D) 4가지의 간단한 회원관리 기능만을 목표로 한다. [Environment] - IDE : IntelliJ - DB : H2 1.4.200 - Java : open-jdk 16.0.2 - JPA : Hibernate 5.5.6 (Aug 04, 2021) 1. 프로젝트 생성 먼저, IntelliJ에서 Maven 프로젝트를 생성한다. File - New - Project - Maven 선택 후 Next -> 프로젝트 Name, 파일 Location 설정 후 Finish 프로젝트 계층구조를 위해 다음과 같이 패키지를 생성한다. - service ..

Programming/JPA 2021.08.20

[DDD START!] 애그리거트를 통한 복잡한 도메인 모델 간 관계 관리

도메인 주도 설계를 공부하며 등장한 애그리거트라는 개념과 그 역할에 대해서 알아보자. 쇼핑몰을 구현한다고 예를 들어보면, 내부에는 무수히 복잡하고 많은 도메인 모델들이 엮여있다. Order라는 클래스는 OrderLine, ShippingInfo, PaymentInfo, Orderer 클래스들을 참조하고 또 다시 각각의 클래스들은 Receiver, Member, Product, Category 등등.. 개별의 객체 수준에서 모델을 바라보면 서로 관계를 파악하기가 어렵다. 이렇게 복잡한 도메인 객체모델들을 이해하고 관리하기 쉽도록 관련된 도메인을 하나의 상위 수준으로 묶어서 나타낸 것이 애그리거트이다. 하나의 애그리거트에 속한 객체들은 동일한 라이프사이클을 가지고, 유사성을 지닌다 (함께 생성되고 함께 변경..

책책책 2021.08.20

[DDD START!] 웹 애플리케이션 아키텍처 설계 - DIP 적용

아키텍처는 크게 4개의 영역으로 구분되는 계층구조로 이루어졌다. o 표현계층: 사용자의 요청을 응용 영역에 전달, 응용 영역의 처리 결과를 다시 사용자에게 보여주는 역할. Json Object) o 응용계층: 사용자에게 제공할 기능 구현. 직접 구현보다는 도메인 모델에 로직 수행을 위임. o 도메인계층: 도메인의 핵심 로직을 구현. ex. 주문 도메인의 '결제 완료', '주문 총액 계산', '배송지 변경' 같은 로직 o 인프라스트럭쳐계층: 상세한 구현 기술을 다룸. ex. DB연동, HTTP Client, Kafka ... 위 아키텍처는 상위 -> 하위계층으로만 의존을 하도록 되어있는데, 이 경우에 두가지 문제점이 발생한다. (1) 테스트의 어려움 - 상위 계층을 테스트하기 위해서는 하위 계층이 구현되어..

책책책 2021.08.12

[Python][백준] 18113_그르다 김가놈

https://www.acmicpc.net/problem/18113 18113번: 그르다 김가놈 첫 번째 줄에 손질해야 하는 김밥의 개수 N, 꼬다리의 길이 K, 김밥조각의 최소 개수 M이 주어진다. (1 ≤ N ≤ 106, 1 ≤ K, M ≤ 109, N, K, M은 정수) 두 번째 줄부터 김밥의 길이 L이 N개 주어진다. www.acmicpc.net 더보기 문제 정래는 김밥가게 “그르다 김가놈”에 납품할 김밥을 만드는 김밥 공장을 운영한다. 정래는 김밥 양쪽 끝을 “꼬다리”라고 부른다. 그리고 꼬다리를 잘라낸 김밥을 “손질된 김밥”이라고 부른다. 공장에서는 김밥 N개에 대해서, 김밥 꼬다리를 잘라내고 손질된 김밥을 김밥조각으로 만드는 작업을 한다. 꼬다리를 잘라낼 때에는 양쪽에서 균일하게 K cm만큼..

[OS] CPU 스케줄링 방법

운영체제의 역할 중에는 CPU 작업 프로세스와 할당 순서를 관리하는 "CPU 스케줄러"의 역할이 있다. 스케쥴러는 공평하게 프로세스를 실행시키고 반응시간을 최소화, 자원의 효율성을 증가시키는 등의 목적을 가지며 이를 위한 스케줄링 방법에는 여러가지가 있다. 스케줄러 종류 o 선점형 스케줄러 (Preemptive) : 운영체제가 CPU에서 실행 중인 프로세스의 차례를 뺏을 수 있다. ==> interrupt (장점) 문맥교환(Context Switch)에 의한 낭비가 발생 (단점) CPU의 독점이 없기 때문에 전체적으로 빠른 응답시간 o 비선점형 스케줄러 (Non-Preemptive) : 한 번 실행된 프로세스가 종료될 때까지 CPU를 독점한다. ==> 일괄작업시스템 (장점) 스케줄러의 작업율이 높고, 문..

CS/OS 2021.08.10

[Python][프로그래머스] 49189_가장 먼 노드

Level 3 https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 더보기 문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return..

[Python][프로그래머스] 42842_카펫

Level 2 https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 더보기 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, ..

[Python][백준] 14502_연구소

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 더보기 문제 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스..

[Python][백준] 2805_나무 자르기

https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 더보기 문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정..