CORS ( Cross-Origin Resource Sharing ) 1️⃣ CORS 란? 웹 브라우저에서 다른 출처(origin)의 리소스를 요청할 수 있도록 하는 권한 체제이다. 대부분의 클라이언트 사이드 렌더링에서는 두 개의 다른 서버가 운영이 되는데, 하나는 프론트엔드 서버로, 주로 리액트와 같은 클라이언트 사이드 렌더링 프레임워크를 사용하여 사용자 인터페이스를 렌더링한다. 또 다른 하나는 백엔드 서버로, 주로 스프링과 같은 서버 사이드 프레임워크를 사용하여 데이터 처리, 인증 및 다른 비즈니스 로직을 처리한다. 리액트 어플리케이션에서 API 호출을 할 때, 프론트엔드 서버와 백엔드 서버는 서로 다른 주소와 포트에서 실행될 수도 있다. 따라서 요청을 처리하기 전에 사용자가 실제로 그들 자신임을 확..
1️⃣ 노션에 정리했던 각 테이블과 설명 지난 팀 프로젝트를 통해 DB 설계의 중요성을 몸소 체감했기 때문에 이번에는 정말로 철저하게 DB 설계를 진행하고 싶었습니다. 먼저 노션을 활용하여 각 테이블과 필요한 컬럼을 보기 좋게 정리하는 과정을 가졌습니다. 노션은 수정하기도 편리해서 여러 번 수정하며 고민해보는 시간을 많이 가졌습니다! 2️⃣ 2차 설계 노션에 정리해둔 문서와 지난 번 게시글에 올렸었던 1차 설계본을 기반으로 이번엔 MySQL을 사용해 2차 설계를 했습니다. 수정, 보완된 점이 몇 개 있는데요, 각 테이블의 PK 데이터타입을 INT & AI로 수정 AI는 Auto Increment의 줄임말으로서 자동 증가된다는 뜻입니다. 새로운 레코드가 추가될 때마다 자동으로 증가하여 고유한 값이 부여되므..
1️⃣ Repository @Repository Spring에서 이 인터페이스를 빈으로 등록하려는 것을 나타낸다. UserRepository Interface JpaRepository를 확장한다. UserEntity : 이 리포지토리가 관리하는 entity를 의미한다. Long : 해당 entity의 기본 키 PK의 타입을 의미한다. JpaRepository Spring Data JPA의 일반적인 리포지토리 인터페이스 이다. 여러 JPA 관련 CRUD 메서드를 제공한다. JpaRepository 인터페이스를 상속받는 인터페이스를 정의하면, 해당 인터페이스를 구현하는 클래스는 JPA에서 제공하는 메서드들을 사용할 수 있다. 즉, JpaRepository를 사용하면 복잡한 JDBC 코드를 작성하지 않아도 간..
1️⃣ PK·FK는 not null 설정 삭제 2️⃣ comment table 수정 ( 실수 ) comment table에 PK로 잘못지정되어있던 boardId를 PK 지정 취소함 그러므로 복합기본키 필요없음 ⇒ 코드 수정함 @Column(name = "boardId") private Long boardId; 3️⃣ 이미지 첨부 방법 변경 수정 전 : BLOB 데이터 타입을 위해 @LOB 어노테이션을 사용했었다. 수정 후 : URL과 확장자를 사용 하는 방법으로 수정 서버에 이미지를 저장하고 ⇒ 저장한 경로를 데이터베이스에 저장한다. 실제로 이미지를 가져올 때 데이터베이스에 있는 이미지 경로를 서버에서 찾아 이미지를 뿌려준다. 그래서 데이터타입을 BLOB으로 할 필요가 없다. 경로와 확장자 컬럼을 사용하..
1️⃣ Entity 란? JPA를 사용해 데이터베이스의 테이블과 매핑되는 자바 클래스 이를 통해 데이터베이스와의 상호작용을 객체 지향적인 방식으로 처리할 수 있음 기본 생성자 필수 👉 JPA의 구현체 ( hibernate ) 가 지원하는 다양한 기능을 사용하기 위함 2️⃣ Hibernate entity 매핑하기 @Entity(name = "YourEntityName") : 객체와 테이블 매핑 클래스가 엔터티임을 나타내며 데이터베이스 테이블에 매핑된 영속성 클래스임을 나타낸다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라고 불린다. 속성 Name : JPA에서 사용할 엔티티 이름을 지정 @Id : 기본 키 매핑 엔티티 클래스의 주요 키(primary key)를 나타내기 위해 사용. 엔..
1️⃣ @RestController @RestController는 Spring Framework에서 제공하는 어노테이션 중 하나로, RESTful 웹 서비스의 엔드포인트를 처리하는 컨트롤러 클래스를 정의할 때 사용된다. @Controller와 @ResponseBody를 합친 역할을 수행하며, JSON 또는 XML 형식의 데이터를 반환할 때 주로 사용 된다. 일반적인 View 렌더링이 아닌 직접 데이터를 HTTP 응답의 본문으로 반환하는 RESTful API를 개발할 때 주로 선택 된다. @Controller 란? Spring Framework에서 제공하는 어노테이션 중 하나로, 웹 애플리케이션에서 사용자의 요청을 처리하는 컨트롤러 클래스를 정의할 때 사용된다. 이 어노테이션은 주로 View를 반환할 때 ..
1️⃣ 스프링부트 프로젝트 구조 [ src/main/java 디렉터리 ] 스프링 레거시와 마찬가지로 클래스, 인터페이스 등 java 관련 파일이 위치하는 디렉터리 [ BoardApplication 클래스 ] 자동적으로 생성되는 클래스. main() 메서드는 SpringApplication.run()을 호출해서 웹 애플리케이션을 실행하는 역할을 한다. [ src/main/resources 디렉터리 - application.properties 파일 ] 스프링 레거시는 프로젝트가 생성되었을 때 해당 디렉터리에 log4.xml 파일만 생성되었었다. application.properties 은 스프링 부트 프로젝트에서 사용되는 설정 파일이다. 이 파일은 주로 프로젝트의 설정 정보를 담고 있으며, 스프링 부트 애플..
스프링부트를 이용한 개인 프로젝트를 진행 해보려고 한다. [ 목적 ] 주제, 와이어 프레임, DB설계부터 배포까지 오롯이 혼자의 힘으로 하고자 함 팀프로젝트 때 얻지 못했던 것들을 얻기 위함 팀프로젝트 때는 기술보다는 협업하고 의사소통하고 협업툴을 경험해가는 것이 더 컸다면, 개인프로젝트는 하나부터 열까지 모든 것을 나 혼자 해야하기 때문에..홀로 부딪혀봄으로써 또 다른 것들을 얻을 수 있지 않을까 싶다. 한달이 걸리든 두달이 걸리든 세달이 걸리든 시간에 구애받지않고 나만의 웹 사이트를 만들자. 새로운 기술, 여러가지 기술보다는 계속 해서 관리를 해나가며 고도화할 수 있는 사이트를 만들 것. [ 포커싱 ] 팀 프로젝트 때는 아무래도 UI에도 신경을 많이 쓰게 되고, 그렇다보니 백단 프론트단 왔다갔다 하며..