본문 바로가기

개발일지/TIL

(11)
SQL 기본문법 정리 SELECT문 기본 구조 SELECT 필드이름 FROM 테이블 모든 테이블 보기 SHOW TABLES 여러 필드를 조회하는 경우 SELECT 필드이름1, 필드이름2 FROM 테이블 모든 필드를 조회하는 경우 SELECT * FROM 테이블 중복된 데이터를 없애고 조회하는 경우 SELECT DISTINCT 필드이름 FROM 테이블 조건식을 적용하는 경우 SELECT * FROM 테이블 WHERE 필드이름 = 0(또는 '문자열') 여러 조건식을 적용하는 경우 SELECT * FROM 테이블 WHERE 필드이름 = 0(또는 '문자열') AND 필드이름2 = 0(또는 '문자열') OR 필드이름3 = 0(또는 '문자열') 조건식의 종류 (범위 지정 A~B 사이) (NOT 구문은 반대) WHERE 필드이름 BETW..
TreeSet이란? JDK 1.2부터 제공되고 있는 TreeSet은 HashSet과 마찬가지로 Set 인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다는 Set의 성질을 그대로 가지고 있습니다. 하지만 HashSet과는 달리 TreeSet은 이진 탐색 트리(BinarySearchTree) 구조로 이루어져 있습니다. 이진 탐색 트리는 추가와 삭제에는 시간이 조금 더 걸리지만 정렬, 검색에 높은 성능을 보이는 자료구조입니다. 그렇기에 HashSet보다 데이터의 추가와 삭제는 시간이 더 걸리지만 검색과 정렬에는 유리합니다. TreeSet은 데이터를 저장할 시 이진탐색트리(BinarySearchTree)의 형태로 데이터를 저장하기에 기본적으로 nature ordering를 지원하며 생성자의..
HashSet 이란? HashSet은 Set인터페이스의 구현 클래스이다. 그렇기에 Set의 성질을 그대로 상속받는다 Set은 객체를 중복해서 저장할 수 없고 하나의 null 값만 저장할 수 있다. 또한 저장 순서가 유지되지 않는다. 만약 요소의 저장 순서를 유지해야 한다면 JDK 1.4부터 제공하는 LinkedHashSet 클래스를 사용하면 된다. Set 인터페이스를 구현한 클래스로는 HashSet과 TreeSet이 있는데 HashiSet의 경우 정렬을 해주지 않고 TreeSet의 경우 자동정렬을 해준다는 차이점이 있다. Set의 가장 큰 장점은 중복을 자동으로 제거해준다는 점이다. 비선형 구조이기에 순서가 없으며 그렇기에 인덱스도 존재하지 않는다. 값을 추가하거나 삭제할 때에는 내가 추가 혹은 삭제하고자 하는 값이 Set ..
JPA 연관관계, Spring Dada JPA 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의 연관관계 이해 DB 의 연관관계 JPA 가 제공하는 연관관계는 결국 DB 의 연관관계를 표현하기 위함 따라서 먼저 DB 의 연관관계를 이해해야 함 DB 의 연관관계는 비즈니스 요구사항에 맞춰 이루어짐 음식 주문앱 DB 설계 예제 👉 예를 들어, 우리가 음식 주문앱 DB를 설계한다고 가정해볼게요! 일단 "고객이 1개의 음식을 주문할 수 있다"라는 요구사항을 받았다고 해봅시다. 일단 각 주체의 테이블 설계가 필요 고객 (User) 테이블 음식 (Food) 테이블 연관 관계 고민 고객이 음식 주문 시, 주문 정보는 어느 테이블에 들어가야 할까? 고객 테이블? 음식 테이블?? Tip) 테이블 설계 시 실제 값을 넣어봄 시도1) "고객 테이블" 에 주문 정보를 넣어보자!! 문제점: 회원 중복 시도2) "음식 테이블" 에 주문 ..
JPA 영속성 컨텍스트 이해 영속성 컨텍스트? JPA 객체 - ORM - DB 객체 - 영속성 컨텍스트 매니져 (entity context manager) - DB 영속성 컨텍스트 매니져 객체 ↔ DB 의 소통을 효율적으로 관리 PK (Primary Key) 테이블에서 각 row 마다 가져야 하는 유일무이한 값 (중복,Null 허용되지 않음) 샘플 자연키 vs 인조키 자연키: USERNAME, EMAIL 인조키: ID 보통 테이블 ID 를 PK 로 설정 (인조키) JPA 영속성 컨텍스트 1차 캐시 이해 Entity 저장 시 Entity 조회 시 1차 캐시에 조회하는 Id 가 존재하는 경우 1차 캐시에 조회하는 Id 가 존재하지 않은 경우 '1차 캐시' 사용의 장점 DB 조회 횟수를 줄임 **'1차 캐시'**를 사용해 DB row 1..
JPA 이해 1)ORM 이란? 💡 ORM: Object-Relational Mapping Object: **"객체"**지향 언어 (자바, 파이썬) Relational: "관계형" 데이터베이스 (H2, MySQL) 백엔드 개발자(Backend Developer): 웹 서버를 개발하는 개발자 DBA (Database Administration): 데이터베이스 관리자. 데이터베이스를 설치, 구성, 관리 등의 일을 맡은 사람 Questions) ORM 이 없이 웹 서버 개발은 못 하나요? ORM 없이도 충분히 웹 서버 개발 가능 예) AllInOneController 에서 Repository 역할 분리 ORM 만든 이유? ORM 이 없는 환경에서는 백엔드 개발자가 비즈니스 로직 개발보다 SQL 작성에 더 많은 노력을 들여야..
JPA JPA란? 👉JPA는, SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기이다. JPA가 없다면? https://www.baeldung.com/spring-jdbc-jdbctemplate 자바 짜다가 갑자기 SQL 짜고, 그걸 잘 맞추어 넣어야 한다. 작업 과정이 복잡하고 불편하며 두 가지 언어를 사용해야 한다. JPA가 있다면? https://spring.io/guides/gs/accessing-data-jpa/ 아래의 설정 추가. (build.gradle) implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 명령도 바로 자바로 사용 가능하다. 👉프로잭트를 시작 할 때 JPA를 설치 했기 때문에, ..