JPA와 @Entity 어노테이션 이해하기
Software Development2024. 1. 5. 13:12JPA와 @Entity 어노테이션 이해하기

JPA란? JPA를 알기 전에, ORM이 뭔지 알아봅시다. ORM이란? 객체와 RDBMS를 자동으로 맵핑해주는 것을 말합니다. 객체지향 프로그래밍은 클래스를 사용하고, RDBMS는 테이블을 사용하는데, ORM을 통해 클래스를 테이블과 일치시켜 주는 개념입니다. JPA란? 정확히는 Java에서 ORM을 지원하기 위한 인터페이스(스펙)입니다. 특정 기능을 하는 라이브러리가 아닙니다. 이 기능을 하는 구현체로 대표적인 것이 Hibernate(라이브러리) 입니다. graphic-api는 어떤 JPA를 사용하나? Spring Data JPA를 사용합니다. 내부적으로는 Hibernate가 ORM 엔진 역할을 해줍니다. JPA의 다양한 Annotation들(꼭 읽어볼 것) [JPA] 엔티티와 매핑. @Entity, ..

Software Development/Spring2024. 1. 5. 13:09[Spring] Controller, Service, Repository 구조

MVC 패턴을 들어보셨나요? 소프트웨어공학 시간에 한번쯤은 짚고 넘어가는 부분입니다. 응용 프로그램을 개발할 때, Model, View, Controller로 나누어 그 구조를 구성하는 방법입니다. Model 어플리케이션의 데이터, 자료를 의미합니다. View 사용자에게 보여지는 부분, 즉 유저 인터페이스를 의미합니다. Controller Model과 View 사이를 이어주는 브릿지 역할을 의미합니다. 조금 더 자세히 설명하면 다음과 같습니다. 모델(Model) 프로그램에 사용되는 데이터를 의미하며 데이터베이스(DB), 상수, 문자열과 같은 변수들, 비전 프로그램이라면 카메라 정보와 같은 것들이 해당됩니다. 모델에는 뷰나 컨트롤러의 정보가 전혀 없습니다. 단지, 정보만 반환하거나 설정할 수 있습니다. 뷰..

카테고리 없음2024. 1. 4. 13:00Spring, SpringBoot의 차이점

Spring과 Spring Boot는 둘 다 Java를 위한 강력한 프레임워크입니다. 하지만 두 프레임워크는 서로 다른 목적과 기능을 가지고 있습니다. 이들의 주요 차이점을 설명하겠습니다. 기본 설정(Convention over Configuration): Spring Boot: Spring Boot는 'convention over configuration' 원칙을 따릅니다. 즉, 기본 설정에 많은 것이 포함되어 있어 개발자가 빠르고 쉽게 애플리케이션을 개발할 수 있게 도와줍니다. 예를 들어, Spring Boot는 내장된 톰캣 서버, 기본적인 구성, 스타터 키트 등을 제공하여 개발자가 초기 설정에 드는 시간과 노력을 줄일 수 있게 합니다. Spring: 반면, Spring 프레임워크는 많은 설정과 구성..

카테고리 없음2024. 1. 4. 11:21[Spring] Lombok 이해하기

Lombok이란? Java의 라이브러리 중 한 종류로, 반복되는 메소드를 Annotation을 사용해서 자동으로 작성해주는 라이브러리 입니다. 쉽게 와닿지 않으니, 바로 코드로 확인해봅시다. Lombok 없는 코드 package com.example.lombok.dto; public class UserDTO { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 여..

OO&Java2024. 1. 3. 17:14이 코드가 뭘 나타낼까?

@RequiredArgsConstructor public class AdminAPIEpisodeController { private final EpisodeAdminService episodeAdminService; @GetMapping("/searchByQuery") public ResponseEntity searchByQuery(@RequestParam String query, @ModelAttribute("setting") AppSetting setting) { List list = episodeAdminService.searchByQuery(query); if (list.isEmpty()) { return ResponseEntity.badRequest().build(); } else { retur..

카테고리 없음2024. 1. 3. 16:06[SpringBoot 3.2.1] H2 Database 사용 시 404 에러 발생하는 경우

# DATABASE # 에러나면 true -> false -> true spring.h2.console.enabled=true spring.h2.console.path=/h2-console spring.datasource.url=jdbc:h2:~/local spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= 황당하게도, application.properties 의 enabled 부분을 true -> false -> true 로 변경해주고 Gradle을 Reload 해주면 해결된다. 내 시간 ㅠㅠ

카테고리 없음2024. 1. 3. 15:07[SpringBoot] 404 on static resource does not return HTML error page(Springboot 3.2.1 버전 에러)

https://github.com/spring-projects/spring-framework/issues/31569 404 on static resource does not return HTML error page · Issue #31569 · spring-projects/spring-framework With the upgrade to Spring Boot 3.2.0-RC2 I think there is the following regression bug: When a user visits an application, with ProblemDetail support enabled, with a browser and asking for HTML, t... github.com 해당 이슈를 참고하자. 스프링..

[Spring] Gradle 이해하기
Software Development/Spring2024. 1. 3. 13:33[Spring] Gradle 이해하기

Gradle이란? - Groovy를 이용한 빌드 자동화 시스템입니다. (Spring에서 패키지 관련 내용 보완 필요) 빌드 자동화란? - 소프트웨어 개발자가 반복해서 하는 코딩을 잘 짜여진 프로세스를 통해 자동으로 실행하여, 믿을 수 있는 결과물도 생산해낼 수 있는 일련의 작업 방식 및 방법을 말합니다. Gradle을 사용한 프로젝트의 구조 이해하기 $ gradle init # gradle로 프로젝트 생성. 몇가지 설정들을 선택해주면 된다 $ tree # 기본 gradle 생성 자바 프로젝트는 다음과 같은 구조를 가진다 ├── app # 기본 프로젝트 명 │ ├── build.gradle # 빌드 스크립트를 작성하는 곳 │ └── src # 소스 코드 │ ├── main # 프로그램 코드 │ │ ├── ..

[SpringBoot] 패키지, 디렉토리 컨벤션 이해하기
카테고리 없음2024. 1. 3. 11:39[SpringBoot] 패키지, 디렉토리 컨벤션 이해하기

각 패키지에 대한 이해를 하기 앞서, 패키지가 무엇을 뜻하는지 알아보도록 하자. - 자바의 패키지는 단순히 디렉토리만을 의미하진 않는다. 패키지는 클래스의 일부분이며, 클래스를 식별하는 용도로 사용된다. - 패키지는 주로 개발 회사의 도메인 이름의 역순으로 만든다. - 패키지는 상위 패키지와 하위 패키지를 도트로 구분한다. - 패키지는 관련된 클래스와 인터페이스를 그룹화하여 조직화하는 방법이다. - 네임스페이스 관리와 접근 제어를 통해 코드의 모듈성을 향상시키며, 서로 다른 개발자나 팀이 작성한 코드 간의 이름 충돌을 방지한다. 각각 패키지에 대한 설명은 이러하다. - domain 패키지 JPA에서 사용하기 위한 엔티티 클래스들을 저장하기 위한 패키지. - controller 패키지 http 요청이 오면..

OO&Java2024. 1. 3. 11:25[Java] 클래스와 인스턴스 이해

한번쯤 복습이 필요해서, 간단히 정리해본다. 오브젝트(객체)란? - 물리적, 혹은 개념적으로 존재하는 것 중에서 다른 것과 식별 가능하느 것을 말한다. - 자동차, 자전거, 책, 사람 같은 물리적인 것은 물론, 개념적인 학과, 강의, 주문 등도 모두 객체가 될 수 있다. - 객체는 속성과 동작으로 구분된다. - 사람이라는 객체가 존재한다면? - 이름, 나이 등의 속성을 가지고 있고, - 달린다, 멈춘다 등의 동작이 있다. - 이러한 속성과 동작을 각각 필드, 메서드 라고 부른다. 객체지향 프로그래밍에서는, 객체는 서로 다른 객체와 상호작용 하며 동작한다. 상호작용의 수단은 메서드 이며, 객체가 다른 기능의 객체를 이용할 때는 메서드를 호출한다. 메서드 호출은 다음과 같은 형태를 지니고 있다. method..

image