JDK 1.2부터 제공되고 있는 TreeSet은 HashSet과 마찬가지로 Set 인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다는 Set의 성질을 그대로 가지고 있습니다. 하지만 HashSet과는 달리 TreeSet은 이진 탐색 트리(BinarySearchTree) 구조로 이루어져 있습니다. 이진 탐색 트리는 추가와 삭제에는 시간이 조금 더 걸리지만 정렬, 검색에 높은 성능을 보이는 자료구조입니다. 그렇기에 HashSet보다 데이터의 추가와 삭제는 시간이 더 걸리지만 검색과 정렬에는 유리합니다. TreeSet은 데이터를 저장할 시 이진탐색트리(BinarySearchTree)의 형태로 데이터를 저장하기에 기본적으로 nature ordering를 지원하며 생성자의..
HashSet은 Set인터페이스의 구현 클래스이다. 그렇기에 Set의 성질을 그대로 상속받는다 Set은 객체를 중복해서 저장할 수 없고 하나의 null 값만 저장할 수 있다. 또한 저장 순서가 유지되지 않는다. 만약 요소의 저장 순서를 유지해야 한다면 JDK 1.4부터 제공하는 LinkedHashSet 클래스를 사용하면 된다. Set 인터페이스를 구현한 클래스로는 HashSet과 TreeSet이 있는데 HashiSet의 경우 정렬을 해주지 않고 TreeSet의 경우 자동정렬을 해준다는 차이점이 있다. Set의 가장 큰 장점은 중복을 자동으로 제거해준다는 점이다. 비선형 구조이기에 순서가 없으며 그렇기에 인덱스도 존재하지 않는다. 값을 추가하거나 삭제할 때에는 내가 추가 혹은 삭제하고자 하는 값이 Set ..
JPA 연관관계 설정 방법 👉 JPA 의 경우는 Enitity 클래스의 필드 위에 연관관계 어노테이션 (@) 을 설정해 주는 것만으로 연관관계가 형성됩니다! 음식 배달 서버를 개발한다고 가정 JPA 코드 구현 중요) 항상 Enitity 본인 중심으로 관계를 생각! 주문 (Order) 코드 @Enitity public class Order { @OneToMany private List foods; @OneToOne private Coupon coupon; } 음식점주 (Owner) @Entity public class Owner { @ManyToOne Restaurant restaurant; } 고객 (User) @Entity public class User { @ManyToMany List likeRes..
DB 의 연관관계 JPA 가 제공하는 연관관계는 결국 DB 의 연관관계를 표현하기 위함 따라서 먼저 DB 의 연관관계를 이해해야 함 DB 의 연관관계는 비즈니스 요구사항에 맞춰 이루어짐 음식 주문앱 DB 설계 예제 👉 예를 들어, 우리가 음식 주문앱 DB를 설계한다고 가정해볼게요! 일단 "고객이 1개의 음식을 주문할 수 있다"라는 요구사항을 받았다고 해봅시다. 일단 각 주체의 테이블 설계가 필요 고객 (User) 테이블 음식 (Food) 테이블 연관 관계 고민 고객이 음식 주문 시, 주문 정보는 어느 테이블에 들어가야 할까? 고객 테이블? 음식 테이블?? Tip) 테이블 설계 시 실제 값을 넣어봄 시도1) "고객 테이블" 에 주문 정보를 넣어보자!! 문제점: 회원 중복 시도2) "음식 테이블" 에 주문 ..