no image
@OneToOne/ @ManyToMany
OneToOne 양쪽이 서로 하나의 관계만 가진다. 예를 들어 사용자와 해당 사용자의 프로필 이미지를 저장하는 두 엔티티가 있다고 예를 들어보면 이 경우 OneToOne 관계를 사용하여 각 사용자는 하나의 프로필 이미지를 가지고 있고, 각 프로필 이미지는 특정 사용자와 연결됩니다. 주의사항 - OneToOne 기본형이 EAGER이기 때문에 LAZY 사용해야 함! @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; @OneToOne(mappedBy = "user", cascade = CascadeType.ALL) private Prof..
2023.12.21
no image
@ManyToOne / @OneToMany
ManyToOne 객체 간의 관계에서 하나의 쪽이 다수의 객체를 참조할 수 있는 관계입니다. 이런 관계에서 연관관계의 주인은 항상 Many(다) 쪽입니다. 주의 사항 - ManyToOne은 기본형이 EAGER 로 되어 있기 때문에 LAZY 사용!! 데이터 베이스 테이블의 1:N관계 외래키는 항상 다 쪽에 테이블에 존재하며, 객체 간의 매핑 시에도 이 원칙을 따릅니다. 객체 양방향 관계에서 연관관계의 주인 다대일 관계에서 연관관계의 주인(외래키)은 다 쪽에서 위치하게 됩니다. 객체 간의 다대일 관계에서 연관관계를 설정할 때, 이런 원칙을 고려하여 주인을 설정하고 관계를 매핑해야 합니다. OneToMany 다대일 관계의 반대 방향으로, 여러 객체가 하나의 객체를 참조(자바 컬렉션인 Collection, Li..
2023.12.20
no image
AWS
AWS service computing - Elastic Computer Cloud, Elastic Beanstalk DB - Relational Database Service Storige - S3, EBS Networking = VPC, CloudFront, Route 53 Security = IAM On-Premise-Server 조직 내부에 위치하며 조직 IT팀이 직접 서버를 구매, 설치, 유지보수 및 관리합니다. 일반적으로 조직의 물리적인 장소나 데이터 센터에 설치되어 중요한 데이터나 애플리케이션을 호스팅 하고 보호합니다. 조직은 모든 하드웨어, 소프트웨어, 보안 및 백업에 대한 책임을 집니다. 특정 보안 요구 사항을 충족하거나 규제 준수를 위해 선택됩니다. Cloud-Service 외부 데이터..
2023.12.19
AWS
no image
JUnit5 Basic
JUnit5 java언어 테스트 프레임워크이며 Junit Platform + Junit Jupiter + Junit Vintage 이 3개가 합쳐진 것입니다. Junit Platform 테스팅 프레임워크를 구동하기 위한 런처와 테스트 엔진을 위한 API를 제공합니다. Junit Jupiter JUnit 5를 위한 테스트 API와 실행 엔진을 제공합니다. Junit Vintage JUnit 3와 4로 작성된 테스트를 JUnit 5 플랫폼에서 실행하기 위한 모듈을 제공합니다. @Test 테스트로 사용할 때는 @Test를 메서드에 붙여주기만 하면 됩니다. 하지만 Test를 붙인 메서드는 private이면 안됩니다. public class Sum{ @Test void plus() { int sum = Calcu..
2023.12.18
no image
힙 정렬
Heap Sort 이진 합 자료구조를 기반으로 한 정렬 알고리즘입니다. 이 알고리즘은 힙을 사용하여 정렬을 수행하는데, 힙은 부모 노드와 자식 노드 간의 관계를 이용하여 데이터를 정렬합니다. 특징 비교적 불안정한 정렬 방법 중 하나입니다. 동일한 값에 대해 상대적 순서가 바뀔 수 있다. 비교 기반의 정렬 알고리즘으로, 데이터 간의 비교를 기반으로 정렬을 수행합니다. 평균 및 최악의 시간 복접도는 O(n log n)입니다. 이는 효율적인 정렬 알고리즘 중 하나입니다. 분할 정복 방법을 사용하며 배열을 힙으로 구성하고 최대 힙에서 최댓값을 반복적으로 추출하여 정렬을 완성합니다. 과정 최대 힙 구성 먼저 주어진 배열을 최대 힙으로 만듭니다. 최대 힙이란 부모 노드가 항상 자식 노드보다 크거나 같은 트리 구조입..
2023.12.15
no image
병합정렬
병합정렬 병합 정렬은 분할 정복 알고리즘의 일종으로 배열을 반으로 나눈 후 각 부분에서 재귀적으로 정렬을 수행하는 알고리즘입니다. 여러 번 반복하여 배열이 충분히 작아질 때까지 이 작업을 진행한 후, 병합 정렬을 사용하여 두 부분을 합치면서 정렬을 완성합니다. 병합 정렬과 분할 정렬의 관계 분할정렬 배열을 반으로 나누어 각 부분에서 재귀적으로 정렬을 수행합니다. 배열이 충분히 작아 더 이상 나눌 수 없을 때까지 이 과정을 반복합니다. 병합정렬 정렬된 두 개의 한위 배열을 하나로 합칩니다. 정렬된 하위 배열을 합치는 과정에서 정렬 순서를 유지하며, 작은 값을 순서대로 새로운 배열에 병합합니다. 병합 정렬 동작 과정 분할 주어진 배열을 반으로 나눕니다. 배열의 중간 지점을 찾고, 왼쪽과 오른쪽으로 나눕니다...
2023.12.14
no image
엔티티 매핑
@Entity JPA를 사용해 테이블과 매핑할 때는 @Entity 어노테이션을 필수로 붙여주어야 하며 @Entity 어노테이션을 클래스 위에 붙여 해당 클래스가 데이터베이스의 테이블과 매핑된 것을 명시합니다. @Entity가 붙게 되면 JPA가 관리하게 됩니다. @Entity public class User { @Id private Long id; private String username; private String email; } @Entity 주의사항 기본 생성자는 필수입니다. final 클래스, enum, interface, inner클래스는 사용 불가능 합니다. 저장 필드에 final을 사용하면 안 됩니다. @Table 엔티티 클래스가 매핑되는 데이터베이스의 테이블을 지정할 때 사용됩니다. 이 ..
2023.12.13
no image
MyBatis
MyBatis 자바 언어용으로 개발된 오픈소스 ORM프레임 워크입니다. 데이터 베이스와 객체 지향 프로그래밍 언어 간의 관계를 매핑해 주는 역할을 합니다. MyBatis는 SQL 쿼리와 객체를 매핑하기 위한 XML이나 애노테이션 기반의 설정을 통해서 동작합니다. 특징 SQL 객체 매핑 XML 또는 어노테이션 기반 매핑으로 SQL 쿼리를 XML 파일 또는 어노테이션을 통해 정의하고, 이를 자바 객체와 매핑하여 데이터 베이스 조작이 가능하게 합니다. ORM 지원으로 데이터 베이스 레코드와 자바 객체 간의 매핑을 쉽게 수행할 수 있습니다. 유연성 간결성 SQL과 자바 코드 분리로 인해 XML 또는 어노테이션을 통해 SQL을 작성하고, 자바 코드와 분리하여 유지 보수 및 관리를 용이하게 합니다. 동적 SQL 지..
2023.12.12
no image
퀵 정렬
퀵 정렬 레코드의 자료 이동을 최소화하며 배열을 정렬하는 퀵 정렬은 선택한 피벗을 중심으로 작은 값은 왼쪽, 큰 값은 오른쪽으로 분할하여 정렬하는 방식입니다. 피벗을 정하고, 작은 값은 피벗 왼쪽으로, 큰 값은 오른쪽으로 이동시키는 과정을 반복하며 서브 파일을 만들어 나가며 정렬합니다. 이 재귀적 분할 정복 과정을 통해 전체 배열을 정렬합니다. 정렬 과정 정복 분할된 부분 배열에 대해 재귀적으로 퀵 정렬을 수행합니다. 이는 각 부분 배열에 대해 위의 과정을 반복하는 것을 의미합니다. 각 부분배열은 피벗을 기준으로 다시 분할되고 정렬됩니다. public void quickSort(int[] array, int left, int right) { if(left >= right) return; // 분할 int..
2023.12.11