개발일지 (47) 썸네일형 리스트형 항해99 개발자가 되기 위한 6주 차 이번 주는 처음으로 프런트엔드와 백엔드가 합쳐서 하는 프로젝트를 진행했다. 처음으로 우리가 쓰는 코드들을 프로그램이 아닌 직접 입력하고 동작 시켜 볼 수 있다는 점에서 너무 기대가 되었다. 내가 맡은 부분은 로그인/회원가입을 구현하는 것이었다. JWT를 완전히 이해 할 순 없어도 로직을 이해하고 프로젝트에 적용하는 것을 이번 주 목표로 삼았다. 외부 자료들을 토대로 천천히 구현을 하다 시간에 쫒겨 우선 적으로 프로젝트에 이미 구현 되어있는 다른 코드를 적용 시켰는데... 적용 시킨 코드가 오류가 생겨, 다시 돌아와 짰던 코드들을 완성하고 수정 시켰다. 이 부분에서도 많은 오류들를을 만났지만 같은 팀원 뿐만 아니라 다른 조의 팀원분들 까지 도움을 주셔서 해결을 했다. 아슬하게 작동하게 만들었지만 난관은 하.. 항해99 개발자가 되기 위한 5주 차 5주 차, 주특기 심화과정 이 번 주는 배웠던 것들을 총 복습하는 주였던 것 같다. 종합적인 구성과 DB의 구성을 생각해야 하는 부분이 많았었다. SQL강의를 시간내서 봐야 할 것 같았다. 이 번 주의 주요점은 객체지향을 이해하고 거기에 맞는 DB의 연관관계 맵핑이 어려웠다. 배운 내용들을 정리하며 부족한 부분들을 추가 학습하고 배운 것들을 정리했지만, 과제를 모두 완수 하지 못해서 너무 아쉬웠다. 어서 배운 것들이 익숙해 졌으면 좋겠다. 이번 주의 키워드 ! CORS CORS는 무엇인가요? 브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한합니다. 그래서 cross-origin 요청을 하려면 서버의 동의가 필요합니다. 만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의.. 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 작성에 더 많은 노력을 들여야.. 이전 1 2 3 4 5 6 다음 목록 더보기