Gradle 선택Ant와 Maven의 장점을 모아 출시된 Gradle은 Maven에 비해 간결하고 빌드시간이 상대적으로 빠르기에 Gradle을 빌드관리 도구로 결정.3.0.4 선택스프링부트 3버전중 가장 안정화 된 버전으로 결정.java(17) 선택Java Suppor
포트번호는 가장 기본적인 8080포트를 사용했다.database의 기본설정은 mysql로 설정하고상세 설정은 MySQL8Dialect로 내가 설치한 mysql의 버전을 입력해야 한다.JPA에서는 기본적으로 Entity에 테이블을 매핑하면 쿼리를 사용하지 않고 값을 가져
데이터베이스의 테이블과 일대일로 매칭되는 객체단위를 의미역할: 파라미터가 없는 기본 생성자를 만들어 준다(@Entity 어노테이션을 사용하면 내부적으로 기본 생성자를 만들어 줌.)\-JPA는 기본 스펙상 기본 생성자를 요구한다.@NoArgsConstructor( acc
공통된 매핑정보만 상속받고 싶은경우 엔티티에 @MappeendSuperclass를 선언코드상 분리, 데이터베이스의 테이블 개념에선 불리되지 않음시간에 대해서 자동으로 값을 넣어주는 기능Base엔티티를 통해 공통적으로 사용되는 생성시간, 수정시간을 다른 객체에서exten
JPA을 활용한 테이블 생성에서 요류가 났다.원인을 찾아보니 테이블 명이 일치하지 않아 발생하는 오류라고 해서테이블 명도 비교해 봤지만 아무리 봐도 문제가 없었다.MySQL 8.0 버전부터는 DB 파라미터의 lower_case_table_names 속성의 기본값이 0으
Member 닉네임(nickname) 프로필 이미지(profile_img) Zone 행정구역 코드(cig_cd) 행정구역 이름(cig_name) MemberZone 회원(member) 주소(zone) >이때, Member와 Zone은 다대다 관계이기 때문에 중간에
Review 아이디(review_id) 제목(title) 내용(content) 점수(rate) 사진(photo) 작성자(writer) 행정구역(zone) Photo 아이디(photo_id) 링크(url) 리뷰(review) >Review와 Member는 다대일 관계
@PersistenceContext 저장소에 EntityManager를 주입하여 지속성 컨텍스트와 상호 작용할 수 있도록 한다.@Transactional메서드를 트랜잭션으로 표시하여 데이터베이스 작업이 트랜잭션 내에서 발생하도록 하는 데 사용된다.@Transaction
리뷰저장아이디로 리뷰조회회원이 작성한 리뷰조회식당에 대한 리뷰조회member필드가 제공한 Member객체와 일치하는 모든 리뷰를 선택한다레스토랑 개체와 관련된 모든 리뷰를 검색한다.회원이 본인이 작성한 리뷰를 관리할 수 있게 하기 위함.작성된 리뷰중 레스토랑과 일치하는
식당 저장행정구역 검색 시 구역에 포함된 식당을 평점순으로 내림차순 정렬식당 이름으로 검색where조건문을 사용하여 cig_name과 일치하는 모든 레스토랑선택order by절을 사용하여 내림차순으로 rate 속성 별로 결과를 정렬LIKE 키워드를 사용하여 이름이 일치
https://developers.kakao.com/docs/latest/ko/kakaologin/common먼저 카카오디벨로퍼에 접속한다REST API키가 중요하다.카카오 로그인 상태를 활성화 해 주고Redirect URI는 코드를 발급받는 페이지 설정인데
각 자치구의 코드번호동 이름구 이름위도 좌표경도 좌표필요한 Json 파일을 구글링을 통해 구했다.이 파일을 읽어와 java객체로 변환하여 필요한 정보인cig_cd, gu, dong, lat, lng를 가져와 Zone 테이블에 삽입하는 과정을 진행한다.JsonFileLo
먼저, 하나의 구역설정 메소드를 만들고 그 안에 중복체크와 초과 체크를 한 뒤 만약 초과일 경우 MaximumZoneLimitException예외를 발생 시키고 중복일 경우 ZoneAlreadySetException예외를 발생시킨다.두 예외에 걸리지 않으면 새 구역 추
리뷰생성 메서드는 는 회원, 식당, 사진, 제목, 내용, 평점으로 구성되어있다.데이터를 받으면 리뷰를 생성해주는 메서드에 값을 넣음리뷰 수를 1개 증가시킴식당의 평균점수를 계산해 주는 메서드 실행식당과 리뷰정보를 DB에 저장하는 save메서드 실행리뷰아이디 값을 받아
미리 DB에 서울특별시의 식당정보를 저장해 둘 거지만 새로 추가할 경우 사용예정이 서비스 로직에선 자바 정규식 Regex(Regular Expression)을 사용하였다.정규식을 이용하면 많은 양의 텍스트 파일 중에서 원하는 데이터를 손쉽게 뽑아낼 수 있고, 입력된 데
회원과 리뷰엔티티에 다 대 일 관계를 맺고, 생성 메서드와 좋아요로직을 만들어 두었다. save와 findOne, findLiked, delete를 만들어 줌findLiked는 리뷰정보와 회원정보를 받아 이미 DB에 값이 있을 경우 반환 해 주고 없을 경우 null을
Spring 기반의 애플리케이션 보안을 담당하는 스프링 하위 프레임워크.'인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리.보안 관련해서 많은 옵션을 제공해 주기 때문에 개발자 입장에서 보안관련 로직을 작성하지 않아도 된다는 장점이 있다.Spring Sec
사용이유를 알려면 먼저 HTTP 통신을 알아야 한다.서버와 클라이언트가 데이터를 주고 받는 통신방법연결을 유지하지 않는다(한번 통신이 일어나면 바로 끊어짐)상태를 유지하지 않는다.(이 전 통신에대한 정보를 갖고있지 않음)이러한 특성들 때문에 매번 서버에 요청을 보낼
JWT를 통한 인증 순서 **1. 사용자가 로그인 시 로그인 아이디, 패스워드를 담아 서버에 요청 ** **2. 서버에서 서명된(Signed) JWT 토큰을 생성하여 클라이언트에 응답으로 반환 ** **3. 클라이언트는 응답으로 반환된 JWT 토큰을 사용하여 요청 시
@Value 를 사용하여 jwt설정파일 application-jwt.yml의 프로퍼티들을 주입JWT.create로 JWT토큰을 생성하는 빌더를 생성..withSubject에는 생성할 값인 AccessToken과 RefreshToken을 각각 넣음..withExpires
먼저 NO_CHECK_URL에 필터를 거치지않을 url을 설정해야한다.설정한 URL이 들어올 경우 filterChain.doFilter(request, response);로 다음필터를 호출한다. return해 주는이유는 밑으로 내려가 진행되기 때문.사용자 요청 헤더에서
Resource Server에서 제공하지 않는 추가 정보들을 내 서비스에서 가지고 있기 위해 생성함. ex) 구역설정 x = GUEST, 구역설정 o = MEMBERSocialType kakao에서 데이터를 받아오도록 설정.유저 정보가 OAuth2UserInfo에 담긴
FormLogin 사용 XhttpBasic 사용 Xcsrf 보안 사용 X세션 사용하지 않으므로 STATELESS로 설정기본 페이지, css, image, js 하위 폴더에 있는 자료들은 모두 접근 가능, h2-console에 접근 가능하게 만들었고, 설정한 경로 외에는
Amazon Elastic Compute Cloud의 줄임말로 AWS에서 제공하는 클라우드 컴퓨팅이다.즉 컴퓨터를 임대해 주는 서비스이다.인스턴스 CPU/RAMEBS 하드디스크ENI 랜카드(네트워크에서 컴퓨터간 신호를 주고받는데 쓰임)컴퓨팅 요구사항의 변화에 따라 컴퓨
내가 만들어놓은 통합검색 기능에 페이징처리를 추가하는 작업을 진행하였다.
식당 상세 조회는 기존에 EntityManager에 내장된 findOne을 사용하여 식당을 클릭할 시 식당 정보를 한번에 모두 가져오는 방식이었다.그러나 리뷰가 많아지면 한 번에 다 가져오기 힘들기 때문에 조회되는 리뷰수를 줄이고 리뷰 더 보기 버튼을 누르면 전체리뷰를
https://techviewleo.com/install-java-openjdk-on-ubuntu-linux/설치명령어sudo apt updatesudo apt install openjdk-17-jdk버전확인 java --versionJAVA_HOME 환경변수
깃 설치 > sudo apt-get install git 설치확인 >git --version 깃허브에서 SSH KEY 생성 > cd ~/.ssh ssh-keygen -t rsa -C zzzdks760@naver.com 파일출력 후 깃허브 SSH에 저장 >cat i
jar파일을 실행하여 스프링 프로젝트가 실행되는건 확인되었다.하지만 백그라운드에선 실행되지않기 때문에 항상 서버를 켜 둬야하는것을 염두하여 백그라운드에서 실행되는 방법을 적용시켜 보았다.nohup 명령어를 사용하면 터미널 세션이 종료되어도 프로세스가 계속 실행된다프로세
네트워크 A와 B가 같은 네트워크상에 있지만 논리적으로 다른 네트워크인 것 처럼 동작VPC를 적용하면 위 그림과 같이 VPC별 네트워크를 구성하여 각각 설정할 수 있고, 완전히 독립된 네트워크 처럼 작동한다.VPC의 아이피 범위를 RFC1918이라는 사설 아이피 대역(
시도해본 방법redirect_uri변경 카카오 디벨로퍼에서 Web사이트 도메인 주소 변경Redirect URI에서 주소 변경.yml코드에서 redirect uri부분 주소변경위 과정을 진행하였지만 에러는 해결되지 않았다.개발자 도구를 확인해 보니 카카오측에서 로그인 이
https://developers.kakao.com/docs/latest/ko/local/dev-guide1\. 사용자의 현재위치 좌표를 프론트엔드로 부터 PostMapping으로 받아온다2\. 카카오맵 API를 통해 좌표를 넘기고 GET방식으로 documen
기존 방식: Redirect URI를 백엔드로 설정 흐름 사용자가 로그인 버튼을 클릭 프론트엔드는 사용자를 Kakao 로그인 페이지로 리다이렉션합니다. 사용자가 Kakao 로그인 페이지에서 로그인을 수행하고 권한을 부여 사용자가 로그인을 진행하고, 정보 사용에 동의한다
프로젝트의 메인 페이지 , 식당 리뷰 페이지 , 내가 작성한 리뷰 목록 페이지 에서 페이징 기능을 사용하여 구현하였다. 모바일 환경인 점을 고려해 무한 스크롤 방식을 사용하였다.무한 스크롤은 다음에 조회할 페이지가 있는지 내부적으로 체크한 다음, 클라이언트에게 다음 페
식당의 주소이름을 불러와서 구와 동을 추출하여 zone테이블의 구와 동이 일치하면 zone_id를 삽입하는 SQL문을 짜서 직접 실행해 주었다.
특정 엔티티를 영속 상태로 만들 경우, 연관된 엔티티도 함께 영속 상태로 만들고 싶을 경우 영속성 전이를 사용한다.쉽게말해 부모엔티티를 다룰 경우 자식 엔티티까지 다룰 수 있다.
StandardCopyOption.REPLACE_EXISTING
프로젝트의 resources/static/images 의 경로에 파일을 저장하고 파일을 경로와 이름은 Photo 테이블을 만들어 DB에 저장 하였다.Amazon S3 (Amazon Simple Storage Service) 데이터를 객체 단위로 관리하는 오브젝트 스토리
회원아이디와 식당아이디만 받고 북마크 객체를 생성한다.만약 이미 북마크 테이블에 존재하는 회원아이디와 식당아이디가 들어온다면? 해당 객체를 제거한다.북마크 테이블에 존재하지않은 회원아이디와 식당아이디가 들어온다면? 북마크 객체를 생성한다.식당과 북마크, 회원과 북마크