전체 글 75

[Java] Enum 열거형 타입

Enum이란? Enum은 "Enumeration"의 약자로, "열거, 목록, 일람표"라는 뜻을 가지고 있으며 한글로는 열거형이라고 부른다.즉, 열거형(enum)은 요소, 멤버라 불리는 명명된 값의 집합을 이루는 자료형으로, 상수 데이터들의 집합이다. 프로그래밍을 하다보면 배열이나 리스트 등 여러 개의 묶음 데이터를 다루는 일이 많다.이 묶음 데이터 중에는 데이터 주제에 따라 몇가지로 한정된 값만을 가는 경우가 존재한다.ex) 요일, 계절, 주사위 등이와 같이 정해져 있는 한정된 데이터 묶음을 열거형 타입인 Enum으로 묶어주면 보다 구조적으로 프로그래밍을 할 수 있다.  Enum 장점 코드가 단순해지며 가독성이 좋아진다.허용 가능한 값들을 제한하여 유형 안전을 제공한다.키워드 enum을 사용하기 때문에 ..

JAVA/STUDY 2024.08.09

[Spring] Mapper와 Repository의 차이

프로젝트 소스코드를 내려받은 후, 폴더 구조를 살펴봤는데 Mapper, Repository 둘 다 있는 것을 확인했다.예전 Spring Boot 프로젝트를 진행할 때는 mapper만 사용해서 했기 때문에 mapper와 Repository의 차이가 무엇인지 궁금해서 찾아봤다! MapperMapper는 데이터베이스와 애플리케이션 간의 상호작용을 처리하는 객체주로 SQL 쿼리를 사용하여 데이터베이스에서 데이터를 가져오거나 데이터를 데이터 베이스에 저장하는 데 사용 ⭐ 객체와 데이터베이스 간의 매핑을 처리하는 역할로써 객체와 데이터베이스 테이블 사이의 변환을 담당하여 객체와 테이블 간의 속성 매핑을 수행하는 것  RepositoryRepository는 데이터 엑세스 계층에서 데이터를 관리하고 엔티티에 접근하는 ..

Spring Boot/STUDY 2024.08.08

[Spring] Maven 개념 및 라이프사이클

💡Maven이란?라이브러리에 대한 의존 관계 관리 및 소스코드부터 배포 가능한 산출물(artifact)을 빌드하는 빌드 툴(build tool)   maven 빌드 & 라이프사이클 빌드(Build)란?자바코드를 실제로 사용할 수 있게 정리하는 과정compile, test, package, install, deploy 등라이프사이클이란?메이븐이 미리 정의하고 있는 빌드 순서라이프사이클의 각 빌드 단계를 페이즈(phase)라고 한다.페이즈(phase)기본 라이프 사이클complie: 소스 파일을 컴파일한다.test: 단위 테스트 실행(기본설정은 단위테스트가 실패하며 빌드 실패로 간주함)package: 컴파일된 클래스 파일과 리소스 파일들을 war 혹은 jar와 같은 파일로 패키징install: 패키징한 파..

기록/BE 2024.08.08

[Spring Boot] 타임리프(Thymeleaf)란?

📌 타임리프(Thymeleaf)란?타임리프는 자바 라이브러리이며, 텍스트, HTML, XML, JavaScript, CSS를 생성할 수 있는 템플릿 엔진이다.템플릿 엔진이란 스프링 서버에서 데이터를 받아 우리가 보는 웹 페이지, 즉 HTML 상에 그 데이터를 넣어 보여주는 도구이다. 템플릿 엔진은 HTML과 함께 템플릿 엔진을 위한 문법을 섞어 사용해야 한다.스프링 MVC와의 통합 모듈을 제공하며, 애플리케이션에서 JSP로 만든 기능들을 대체할 수 있다.Spring Boot에서는 JSP가 아닌 Thymeleaf 사용을 권장하고 있다. 개발 프로젝트를 진행할 때, JSP를 사용할지 타임리프를 사용할지에 대한 고민이 있었다.JSP는 무엇인지 알아보자. 📌 JSP란?JavaServer Pages의 약자를 ..

Spring Boot/STUDY 2024.07.17

Ajax(Asynchronous Javascript And XML)란?

📌 AJAX란?자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능클라이언트와 서버 간에 XML 데이터를 주고받는 기술이다.더보기💡 XML?-eXtensible Markup Language: 확장될 수 있는 표시 언어- HTML과 같이 마크업 언어로서 태그를 사용하여 작성할 수 있다.- 그러나 차이점은 HTML은 약속한 태그들만, XML은 사용자가 임의로 만들어서 사용할 수 있다는 점이다.- ❓ 그렇다면 왜 임의로 만들게 했을까 라고 물어볼 수 있다.- XML은 어떠한 데이터를 설명하기 위해 임의로 지은 태그로 데이터를 감싸는 방식이다.- 즉, 태그로 데이터를 설명하는 것이다. 📌 비동기 방식이란?웹페이지를 리로드 하지 않고 데이터를 불러오는 방식웹페이지에서 기타..

JavaScript/STUDY 2024.07.17

[DataBase] 트랜잭션(Transaction)이란?

📌 트랙잭션이란?트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻한다. 💡여기서 작업의 단위는 질의어 한 문장이 아닌 질의어 명령문들을 사람이 정하는 기준에 따라 정해진 것!! 우리가 MySQL에서 입력하는 모든 쿼리 명령어들은 각각 하나의 트랜잭션이라고 할 수 있다. INSERT, DELETE, UPDATE, SELECT 등의 SQL 명령문을 통해 데이터 상태를 바꿀 때마다 내부에서 자동적으로 Commit을 실행하여 변경된 내역을 데이터베이스에 반영하는 것이다.   📌 트랜잭션의 특징트랜잭션의 특징은 크게 4가지로 구분된다.원자성(Atomicity)일관성(Consistency)독립성(Isolation)지속성(Durability) 원자성(Automicity)이란?all or..

DataBase/STUDY 2024.07.16

[파이널 프로젝트] 영화 예매 트래픽 구현 고민

📌 대량의 사용자들이 동시에 예매 서비스를 통해 접속 시도?동시에 접속을 시도하는 사용자가 많을 경우: 대기번호 부여대기번호를 부여하지 않을 경우 발생할 수 있는 문제점💥유저를 한번에 받게 되면 수용 불가능한 트래픽이 들어오게 되고, 서버가 죽게 되어 접근 자체가 안되는 문제 발생수용 불가능한 트래픽 인입으로 요청된 예매 서비스 외의 서비스까지 부하를 줄 수 있다.이렇게 되면, 서버를 늘려야 하는데, 시간과 자원이 필요함 여러 사이트를 참고해본 결과,1. 낙관적 락2. 비관적 락3. Redis 분산 락3가지가 있었다.  그중 현재 프로젝트에 제일 적합하다고 생각한 비관적 락을 사용해서 예매 서비스 기능을 구현해볼 예정이다. 본인이 동시성 제어를 구현하는 가장 큰 이유는, 데이터의 무결성을 보장하고자 ..

Spring Boot/PJT 2024.07.16

[파이널 프로젝트] GitHub The requested URL returned error: 403 Push 에러 해결 방법

팀 프로젝트를 진행하면서 Organization Team을 만들어서 레파지토리를 만들었다.팀원들 각자 코드를 진행 후, Git Bash에서 Push를 하는데 글쎄,,. remote: Permission to pknu-java-gcv/gcv-frontend-pjt.git denied to 사용자이름.fatal: unable to access 'https://github.com/pknu-java-gcv/gcv-frontend-pjt.git/': The requested URL returned error: 403 이런 오류가 뜬 것이다..!!! 에러 메세지를 검색해보니 Team을 만들 때 권한을 읽기로만 줘서 발생한 문제였다 😅 그래서  조직 > 설정 > 엑세스 > 멤버 권한 클릭 후Base permissi..

Spring Boot/PJT 2024.07.12

[파이널 프로젝트] 영화예매 사이트 - ERD 설계

항상 프로젝트를 진행할 때 혼자 DB 설계를 맡아왔었다.이번에는 팀원들이 함께 참여해보고 싶다해서 각자 파트에 대한 DB를 짜오기로 했다.😄 팀원들이 짜 온 DB를 회의시간에 다같이 노션에 정리해보았다.맡은 기능별로 컬럼을 구성함 이렇게 모인 테이블들을 ERD CLOUD를 이용해서 엔티티를 생성하고, 관계도를 그려주기로 했다.  PK는 NO로 주었고, 필요에 따라 외래키를 지정해주었다.이후, 식별/비식별 관계를 구분해주었다. 🔽 실제 고민의 흔적들....🤣보드에 그림을 그려가며 했는데 바로 ERD Cloud에 적용시키는 것보다 처음부터 모두 그려보니 팀원들도 이해가 빨리 됐던 것 같다😁 💬 어려웠던 점아무래도 엔티티 간의 관계 설정이 어려웠다.엔티티 간 대표적인 관계로는 1:1, 1:M, M:N..

Spring Boot/PJT 2024.07.11