본문 바로가기

Springboot

(8)
[React X Springboot] Controller와 Axios로 데이터 통신하기 (Get/Post) 💡프론트엔드 ✅ package.json "proxy": "http://{백엔드 컴퓨터의 IP 주소}:8080", ✔ 배포 시 AWS에 올린 탄력적 IP 주소로 변경 ✔ 백엔드 컴퓨터는 외부 컴퓨터가 접근할 수 있도록 접근 허용 설정해야 함 (방화벽) ✅ 파일명.js const [response, setResponse] = useState('') useEffect(() => { axios.{get 또는 post}('{백엔드 API 주소}') .then(response => setResponse(response.data)) .catch(error => console.log(error)) }, []); ✔ 데이터를 읽어올 때는 Get 메소드 ✔ 데이터를 보낼 때는 Post 메소드 ✔ 백엔드에서 반환하는 데이터..
[Springboot] MultipartFile을 통한 이미지의 저장과 전송 📸 클라이언트로부터 사진을 받아 DB에 저장하기 🖥 Image Entity @NoArgsConstructor @AllArgsConstructor @Builder @Data @Entity public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull private String name; @NotNull private String type; private byte[] picByte; } ✅ Long 타입의 id - 이미지의 기본키를 담당하며, 순서대로 자동 생성됨 ✅ String 타입의 name - 이미지의 이름 ✅ String 타입의 type - 이미지의 유형 ex) image/jpeg..
[Gitignore X Springboot] 깃허브에 properties 파일 올리기 방지하기 자꾸만 올라가는 properties 파일! properties 파일에는 DB 연결 정보, key 등 비밀 정보들이 들어가기 때문에 오픈되는 Git에는 올리지 않는 것이 좋음 올리고 싶지 않다면? 💡 .gitignore 파일에 application.properties 파일 추가 & 커밋 & 푸시 그러나 여전히 추적되는 properties 파일…왜? 💡 .gitignore가 한 번 설정되면, 그 후에 새로운 파일을 .gitignore에 추가하더라도 계속 추적됨 💡 따라서, 변경관리가 추적하고 있는 파일들을 기록한 캐시를 삭제한 후, .gitignore을 새로 커밋 & 푸시하면 .gitignore 재적용이 가능함 .gitignore 캐시 삭제 ✅ IntelliJ를 열고, 아래 Terminal 창을 열어 Git..
[Springboot] 일대다 관계 - @ManyToOne 배경 한 사람이 여러 게시글을 작성할 수 있으며, 한 게시글은 한 사람에 의해 작성된다. 한 게시글은 여러 댓글을 가질 수 있으며, 한 댓글은 한 게시글에 속한다. 한 사람이 여러 댓글을 작성할 수 있으며, 한 댓글은 한 사람에 의해 작성된다. 작성자 / 게시글 / 댓글의 관계 작성자 --- 게시글 => 1 : N (일대다) 게시글 --- 댓글 => 1 : N (일대다) 작성자 --- 댓글 => 1 : N (일대다) @ManyToOne 1 : N 관계에서 N쪽 클래스에 @ManyToOne을 갖는 속성 지정 Board @Entity public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; p..
[Springboot] Entity와 DTO Entity 단순히 데이터를 담는 객체의 개념을 넘어 실제 데이터베이스와 관련됨 내부적으로 엔티티 매니저 (Entity Manager)가 관리하는 객체 DTO 각 계층끼리 주고받는 우편물이나 상자의 개념 순수하게 데이터를 담고 있다는 점에서는 Entity와 유사 DTO가 갖는 Entity와의 차이점 읽고 쓰는 것이 모두 허용 일회성으로 사용되는 성격이 강함 DTO를 사용하는 이유 엔티티 객체의 범위를 한정해 좀 더 안전한 코드 작성 가능 화면과 데이터를 분리하려는 목적 DTO 사용의 단점 엔티티와 유사한 코드를 중복으로 개발해야 함 Entity DTO 변환 과정이 필수적임 Entity DTO 변환 Controller (서비스 계층) DTO -> Service (변환) -> Entity DB (저장소) 서..
[Springboot] DB 데이터 생성/수정 날짜(시간) 자동 처리하기 목표 엔티티 관련 작업을 하다보면, 데이터의 등록 시간과 수정 시간을 자동으로 추가하고 변경해야 하는 칼럼 존재 개발자가 직접 개발하지 말고 어노테이션으로 해결하자! BaseEntity 클래스 생성 BaseEntity는 엔티티 객체 생성과 수정 시간을 자동으로 관리해주는 역할 @MappedSuperclass // 테이블로 생성되지 않음 @EntityListeners(value = {AuditingEntityListener.class }) // JPA 내부에서 엔티티 객체의 생성과 변경을 감지 @Getter public class BaseEntity { @CreatedDate // 생성 날짜 (시간) 처리 @Column(name = "regdate", updatable = false) // 객체를 DB에 ..
[LAZY/EAGER 에러] No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer 오류 내용 No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) 오류 번역 클래스 org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor에 대한 직렬 변환기가 발견되지 않았고 BeanSerializer를 생성하기 위해 발견된 속성이 없다. * 예외를 피하려면 SerializationFeature.FAIL_ON_EMPTY_BEANS를 비활성화라..
[예약어 에러] You have an error in your SQL syntax; 에러 You have an error in your SQL syntax; check the manual thatcorresponds to your MYSQL server version for the right syntax to use near '블라블라' DB의 테이블 명이 DB의 ‘예약어’와 같아서 생기는 문제 예약어란 예약어는 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로 사용 → 식별자로 사용할 수 없는 단어 예) java의 return은 변수명이나 함수명으로 사용 ❌ MySql 예약어 ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHA..