분류 전체보기 200

Spring JPA Hibernate 오류. object references an unsaved transient instance - save the transient instance before flushing:

#code RestAPI를 만드면서 게시글 기능을 개발하는 도중 해당 오류를 마주치게 되었다. 아마 외래키 문제로 보인다.. 추후에도 또 발생할 것을 염려하여 포스트하기로 하였다. 일단 nested exception is java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : 라는 에러를 뱉었는 데 원인 @OneToMany와 @ManyToOne 어노테이션을 사용하면 자주 볼 수 있는 에러라고 한다. JPA를 사용하여 초기 데이터를 만들다가 부모 객체..

Spring 2022.01.28

Spring Boot 파일(이미지) 업로드하기

#code 개발 중에 프로필 화면 구현이 필요하였기에 포스트 하기로 했습니다. 먼저 이미지를 저장하는 방식이 여러 방법이 있다고 한다... 그 사실을 몰라서 구글링을 통해 여러 가지 방법을 찾았는 데 대표적인 방법들만 설명하자면 첫 번째는 이미지 자체를 DB에 저장하는 방식 (BLOB 형식 그대로 사용) BLOB이란? Binary Large Object의 약자로서 2진으로 저장을 하며, 주로 소리, 사진 등 멀티미디어들을 가르킵니다. 많은 분들께서 가장 일반적인 방법이네, 요즘은 잘 사용되지않네, DB 병목 등 여러 문제가 있네 등 여러 의견이 분분한데.. 개인적으로 BLOB 방식을 잘 사용하지 않을 것 같습니다. (이미지 하나 가져올 때마다 DB에 접근하여 가져와야하고, 이를 하지 않으려면 캐싱 관련 ..

Spring 2022.01.24

[서버/백엔드] 쿠키, 세션, 캐시 (Cookie, Session, Cache)

웹에 대해서 공부하기 위해 필수적으로 알아둬야하는 기초적인 내용 중 쿠키, 세션, 캐시에 대해서 기록해두고자 포스트하기로 했다. 쿠키(COOKIE) 쿠키는 브라우저가 소지할 수 있는 정보들을 저장하는 저장소입니다. 개인이 확인하고 수정하고 삭제할 수 있는 정보들이 담긴 저장소입니다. 본인이 확인하고 수정 및 삭제할 수 있는 만큼 보안적으로 좋은 방법은 아닙니다. 그래서 중요한 정보들은 쿠키에는 저장하지 않습니다. 쿠키는 보통 자동 로그인, 오늘 하루동안 보지 않기 등 이용자들의 편리함을 주기위한 용도로 주로 사용됩니다. 세션(SESSION) 세션은 본인이 소지할 수 없는 정보들을 저장하는 저장소입니다. 서버에서 이를 관리하는 메모리 혹은 DB에 의해 저장이 됩니다. 서비스를 운영하는 쪽에서만 확인가능한 ..

공부/서버 2022.01.21

Spring Entity 날짜 자동 저장

나름 유용한 내용인 것 같아 포스팅하게 되었습니다. Entity를 만들 때, 최초 생성 날짜, 그리고 제일 최근 수정 날짜 저장을 하고 싶을 때가 종종 있는 데 이를 수동적으로 넣을 수 도 있지만 비즈니스 로직을 작성할 때마다 넣는 것은 굉장히 번거롭기 때문에 Entity를 연결해주는 추상 클래스를 하나 만들어 사용할 수도 있지만 Entity가 적다면 Entity에다가 그냥 적용시킬 수도 있지만 Entity가 하나인 경우는 많이 없다보니 Entity가 2개 이상이기에 추상 클래스를 사용해서 날짜를 자동 저장을 해야하는 상황이라고 가정해보자. 먼저 추상 클래스를 하나 만든다. 이름은 아무렇게나 해도 좋으나 모든 엔티티에 베이스(기초)가 되는 날짜이기에 BaseTimeEntity라고 지었습니다. 어노테이션 ..

Spring 2022.01.19

스타크래프트2 봇 대결 (개발예정)

현재 #code rest api가 어느정도 완성이 되어 열흘 뒤면 마무리되기때문에 그전에 한 번 시도해볼려고 했던 압생트봇 아주어려움 이기기 가 있었는 데, 다소 흐지부지가 되어 매우 아쉬웠기에 다시 한 번 더 해볼 예정인데 일단 계획은 총 2가지 봇을 만들 예정인데 우선 압생트 봇(P)를 하나 만들고 저그봇을 하나 더 만들어 이 둘을 붙여보는 것 역시 재미있겠다는 생각이 들어 만들어 볼 생각입니다. 프로토스 봇 이름은 압생트로 확실하게 지었는 데 저그 봇 이름은 아직 정하지 않아서 혹시라도 저그 봇 이름 아이디어가 있으신 분은 댓글로 적어주세요. 개발할 두 봇들은 다음과 같은 목표를 모두 포함하도록 할 것입니다. 핵심목표 공격가능 유닛(일꾼 제외) 최소 4종류이상 사용 주요 유닛종류마다 클래스를 따로 ..

백엔드 로드맵 공부

백엔드 로드맵과 관련된 이미지인데 해당 링크를 통해 다운로드 받으실 수 있습니다. 일단 현재 대소고에서 1년간 보내며 몇 가지 시도를 해보면서 백엔드 개발을 해보기로 결정했습니다.. (물론 세상일은 알 수 없듯이 바뀔 수도 있겠지만 현재로서는 백엔드로 결정했습니다.) 안드로이드, 프론트, 백엔드 이렇게 3가지 정도 시도를 해보았으나 그나마 잘 맞는 것이 백엔드, 그리고 안드로이드이기에 백엔드로 결정하였습니다. (프론트는 뭔가 잘 안 맞더라고요..) 그래서 위 백엔드 로드맵으로 백엔드 개발을 본격적으로 해야하지 않나 생각이 들어 글을 작성하게 되었습니다. 지금까지는 조금 막무가내로 일단 내가 할 수 있는 것이 뭐가 있을까..그리고 이거 구현할 수 있을 것 같은 데? 라는 생각을 가지고 개발을 했었던 것 같..

공부/서버 2022.01.15

Spring & React 결합 (버그와 오류들)

버그...그리고 오류들.. 일단 크게 2가지 오류들이 있었습니다. 1. CORS, Same-Origin-Policy 문제 2. React V6 버전 문제 redirect is not allowed for a preflight request Access to XMLHttpRequest at 'http://localhost:8080/ from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 정도의 오류가 있었습니다. 일단 맨 마지막 문제같은 경우에는 @CrossOrigin이라는 어노테이션이 있지만 CORS..

Spring 2022.01.14

Spring & React 결합 (최종)

드디어 끝냈습니다. 리액트를 다루는 것이 이번이 처음이라서 제대로 이런 간단한 것도 못 끝낼 줄 알았지만 역시 노력(이하 삽질이라고 부른다.)은 배반하지 않는 것 같습니다. 일단 리액트 코드를 좀 많이 개판으로 만들어놨긴했는 데.... 잘 돌아가니 된건가.. 각설하고 코드를 조금 살펴보면 패키지 2개로 input파트(라고 하지만 실제로는 개판오분전인 막장 코드) 그리고 request(대충 Spring Rest API에게 POST 혹은 GET request 보내기 위한 파트) 이렇게 2개입니다. 일단 Spring 코드를 어떤 방식으로 구성했는 지 간단하게 설명하자면 회원가입을 합니다. (PasswordEncoder로 비밀번호 암호화) 로그인을 합니다. (Access, Refresh 토큰 발행해줌 & Ref..

Spring 2022.01.14

Spring & React 결합 (f. CORS해결)

스프링과 리액트 이 두 친구들이 서로 사용하는 포트가 다르다. 리액트는 3000을 사용하는 반면, 스프링은 8080을 사용한다. 사람마다 CORS를 해결하는 방식도 각양각색인데 크게 3가지 정도가 생각이 난다. 스프링을 3000에 맞춘다. 리액트를 8080에 맞춘다. 제 3의 포트로 둘 다 맞춘다. CORS(Cross-Origin Resource Sharing)이란? 추가 HTTP 헤더를 사용하여, 한 출처(origin)에서 실행 중인 웹 애플리케이션이 다른 출처(origin)의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제 (출처) 저 같은 경우에는 리액트를 스프링 포트에 맞춰주었습니다. {리액트 패키지}/package.json 에 "proxy": "http://localho..

Spring 2022.01.12

Spring & React 결합

Spring을 잘하는 편은 아니지만 같이 프로젝트를 진행하거나 할 때 마땅히 같이 할 프론트가 없는 것 같아 저라도 조금이라도 해야겠다는 마음으로 React에 발을 담그게 되었습니다. 먼저 nodejs.org/ko/download/ 에 들어가서 Windows Installer를 통해 설치를 받고 명령 프롬포트(cmd)로 node -v 명령어를 통해 올바르게 설치가 되었는지 그리고 해당 node의 버전을 확인하였습니다. 여기까지는 문제가 없었는 데.. npm install -g create-react-app 명령어를 진행하자 node : 'node' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바..

Spring 2022.01.12