2024/12 48

Spring Boot - 자동 구성 사용자 정의 / # Project 03 - 1:N (OneToMany) DB/Entity Modeling

application.properties 를 yml 로 바꿔보겠다. properties 대신에 yml 을 쓰면 된다.내부 코드가 자동으로 바뀌는 건 아니라서 yml properties 컨버팅 사이트에서 바꿔서 복붙해주자. @Entity 클래스가 가지고 있는 멤버의 변수 이름이 table 열의 이름으로 바뀔 때, 카멜 케이스 표기법에서 스네이크 케이스 표기법으로 자동으로 바뀌는 설정이 되어 있다고 했었다.그런데, 그냥 @Entity 클래스의 멤버의 변수 이름을 그대로 table 열의 이름으로 사용하고 싶다면, 간단하게 설정을 추가해주면 된다.yml 파일에서는 저렇게 추가하면 된다.만약 properties 파일이었다면,spring.jpa.hibernate.naming.physical-strategy=org..

Spring Boot - Maven/Gradle을 사용한 종속성 관리

Maven과 Gradle은 프로젝트의 종속성(Dependency) 관리를 위해 주로 사용되는 빌드 도구입니다. 종속성은 라이브러리를 의미하며, 개발자가 프로젝트에서 필요로 하는 외부 코드, 즉 다른 개발자나 회사가 만들어 놓은 기능들을 가져와서 사용하는 것입니다.  1. Maven을 사용한 종속성 관리Maven은 XML 기반의 빌드 도구입니다. pom.xml 파일이 프로젝트의 중심입니다.주요 개념pom.xml 파일: Maven 프로젝트의 설정 파일입니다. 프로젝트의 종속성, 플러그인, 빌드 설정 등을 정의합니다.의존성(Dependency): 외부 라이브러리의 선언입니다. Maven은 선언된 라이브러리를 중앙 리포지토리에서 다운로드합니다.중앙 리포지토리(Central Repository): Maven이 사..

Spring Boot - 실습 - #Project 02 (Repository, Service, Controller, View 만들자)

나중에 interface BookRepository 안에직접 메서드를 만들 수도 있다.지금은 기본적으로 JpaRepository에서 제공해주는 메서드를 사용하는 방법만 구현한다.이제 Service layer를 만들 것이다.여기서는 insert, select, update, delete 하는 기능을 만들어보려고 한다. 이 서비스 메서드는 위에서 만든 repository가 필요하다. 그래서 @Autowired 로 가지고 올 수 있다.@Autowired 를 해줘야, 메모리에 올라와있는 EntityManager(); 가 bookRepository 에 자동으로 연결이 된다.그래야지만 bookRepository 라는 인터페이스를 이용해서 EntityManager() 라는 구현체에 있는 메서드를 써가지고 CRUD 를..

Spring Boot - application.properties / 실습 - #Project 02 (DB 연결, Entity 만들기)

application.properties는 Spring Boot에서 애플리케이션의 설정을 정의하는 프로퍼티 파일입니다. 이 파일을 통해 데이터베이스 연결 정보, 서버 포트, 로그 레벨 등 다양한 설정을 관리할 수 있습니다.기본적으로 Spring Initializr 를 통해 Spring Boot 프로젝트를 생성하면 application.properties가 생성됨.1. 파일의 역할애플리케이션에 필요한 설정 값과 환경 변수를 정의합니다.코드를 변경하지 않고 설정 값을 쉽게 수정할 수 있습니다.환경별로 다른 설정을 적용할 수 있습니다 (e.g., application-dev.properties, application-prod.properties).2. 파일 위치application.properties 파일은 ..

Spring Boot - 자동 구성 메커니즘 Auto Configuration / 실습 - #Project 01

1. 스프링과 객체 생성일반적으로 Java에서는 객체를 생성하려면 new 키워드를 사용해야 합니다.직접적 객체 생성 (수동 생성)MyClass obj = new MyClass();위의 코드처럼 개발자가 직접 객체를 생성하는 방식입니다.이 방식은 객체가 다른 클래스에 강하게 결합되므로 유지보수와 테스트가 어렵습니다.간접적 객체 생성 (Spring이 관리)스프링은 객체를 직접 생성하지 않고, 대신 Spring 컨테이너에게 객체 생성을 위임합니다.스프링 컨테이너스프링은 ApplicationContext나 BeanFactory라는 컨테이너를 통해 객체를 관리합니다.이때 생성되고 관리되는 객체를 Bean이라고 합니다.Bean이란?Bean은 스프링 컨테이너가 관리하는 객체를 의미합니다.스프링은 Bean의 생명주기(..

Spring Boot - Starter / MVN Repository /

Starter란 무엇인가?Starter는 Spring Boot가 제공하는 의존성 묶음(Dependency Bundle)입니다.Spring 애플리케이션을 개발할 때, 특정 기능을 추가하려면 다양한 라이브러리를 가져와야 합니다. 그런데 어떤 라이브러리를 가져와야 할지 모르거나, 각 라이브러리의 버전을 맞추는 게 매우 번거로울 수 있습니다.Spring Boot Starter는 이 문제를 해결해줍니다. Starter는 여러 라이브러리를 하나의 패키지로 묶어 놓은 것입니다. 이를 통해 하나의 의존성만 추가하면 관련된 라이브러리들이 함께 추가됩니다.라이브러리를 묶어서 패키지 형태로 제공한다는 것이 중요한 포인트!(* Lombok 이나 DevTools 같은 Starter가 아닌 단순 라이브러리도 있음)Starter의..

Spring Boot - '프로젝트 구조 이해' / 데이터 흐름에 대한 이해 / Thymeleaf에 대한 이해 / view 처리

우선, 조금 이해가 안 되는 부분이 있어서 공부를 좀 하고 넘어가도록 하겠다.thymeleaf 가 html 인거야?Thymeleaf는 HTML 템플릿 엔진입니다. 즉, HTML을 기반으로 동작하는 템플릿 엔진이기 때문에 HTML 문서 안에 서버 사이드 로직을 추가할 수 있습니다.Thymeleaf의 개념HTML 파일에 동적 데이터를 삽입하고 표현하기 위한 템플릿 엔진입니다.Thymeleaf는 순수 HTML 문법을 사용하므로, 웹 브라우저에서 Thymeleaf 코드를 그대로 열어도 HTML처럼 보입니다.Spring Boot에서 Thymeleaf는 View를 렌더링하는 데 사용됩니다.Thymeleaf와 HTML의 관계HTML: 정적 화면을 표시하는 구조화된 언어입니다.Thymeleaf: HTML에 서버 사이드..

Spring Boot - '프로젝트 구조 이해' / 어떤 원리와 어떤 관계, 어떤 순서로 실행이 되는 것인지 프로젝트 구조와 함께 확실하게 파악!

h2 db 에 member 정보 2개 정도 입력을 해보고나서Controller, Service, Repository, 3-tier 를 이용해서 data 를 서로 어떻게 연결하는지 확인해보자. 입력을 해주고 나서, Run Selected 를 눌러주자.select * from member, member의 모든 것(*) 을 불러오는 것 까지 해봤다.행 하나를 추가해보자.실행을 할 때, 드래그해서 선택한 후에 run, 그래서 Run Selected 라는 것.자, 이제 우리가 만들어야 하는 건,FrontController, HandlerMapping, ViewResolver 는 framework에서 제공해주는 것이라서우리는 Controller, Service, Repository 를 만들어서 연결해서 쓰는 것. ..

Spring Boot - H2 Database - DB 연결 / Entity / Hibernate / Lombok

Spring Boot EFA를 도식화해서 보여주고 있다.R-DBMS 에 MySQL 이라고 되어 있지만, 여기서는 H2 Database를 연결했다. H2 DB를 설치하고나서, DBMS가 H2 DB를 사용하겠다는 것.관계형 DB 이기 때문에 table 단위로 데이터 저장할 것이다.DBMS에 직접 table 을 만드는 것은 아니고,JPA 를 이용하게 되면은, Entity 객체, VO 같은 객체를spring data JPA에서 제공해주는 ORM Mapping 통해서Object 를 하나의 Relational (Table - 관계형 데이터베이스에서는 Table 이라는 말 대신에 Relational 이라고도 함)즉, Object 를  ORM Mapping 을 통해서 Table 로 자동으로 만드는 방법이 Hiberna..

Spring Boot - POJO = Controller? / 3-tier Architecture /

Spring Boot에서 POJO와 Controller는 같은 것이 아닙니다. 이 둘은 서로 다른 개념을 가지며, 역할도 다릅니다. 각각의 정의와 차이점을 이해하는 것이 중요합니다.POJO (Plain Old Java Object)정의:POJO는 단순히 "기본적인" 자바 객체를 의미합니다.특정 프레임워크나 기술에 종속되지 않는, 최소한의 코드로 구성된 클래스를 말합니다.주로 데이터 저장, 비즈니스 로직, 서비스 로직 등을 처리하기 위해 사용됩니다.특징:Java 표준 클래스로 작성됨.상속이나 인터페이스 구현을 강제하지 않음.종속성을 최소화하여 재사용성이 높음.예제: public class User { private String name; private int age; // Construct..