분류 전체보기 110

[Project] (2) 프로젝트 시작(Entity 설계, 변수명)

프로젝트 이름은 EduClass로 붙였다.일단 이 서비스 자체가 대학생들이 사용하는 온라인 클래스와 비슷해서 그렇게 부르게 되었다. EduClass를 시작할 데이터베이스를 정리했다. 처음에는 Entity를 구성할 때 좀 막막했던 것 같다. 일단 pk, fk의 개념이 확실히 와닿지 않다보니 중복해서 넣는 속성들이 많아지니 복잡해졌다. 예를 들어보자.처음에는 user의 분류를 3개로 나눴다. '학생', '학부모', '관리자''학생'은 강의를 듣고 시험을 보는 user.'학부모'는 본인의 학생의 강의 수강 상황과 시험 점수를 열람할 수 있는 user'관리자'는 학생과 학부모의 정보를 관리하고 문제와 강의를 편집할 수 있는 user 각각의 email과 pw를 속성으로 만들었다. 그럴 경우 로그인을 할 때 ema..

EduClass Project 2025.01.24

[Project] (1) 프로젝트 시작(플로우차트, Entity 설계)

예전에 부트캠프에서 spring으로 CRUD를 구현해 본 경험이 있다. 그 때는 팀 프로젝트로 진행을 하기도 했고, 학원에서 주는 템플릿으로 디렉토리, 서버, 플로우차트 등 제작을 하였어서 내가 코드를 작성하는 이유를 잘 모르는 상태로 프로젝트를 진행했었다. 그래서 처음으로 개인 프로젝트를 시작하게 되면서 내가 어떤 방법으로 하나의 프로덕트를 만들기 위해서 공부할 과정을 적어보려고 한다.📍 주제 선정나는 처음에 프로젝트 주제를 생각하다 예전에 내가 다닌 대학교 온라인캠퍼스 홈페이지를 클론코딩했던 경험이 있다. 그 땐, 프론트엔드로 개발공부를 하던 시절이라 html, css, js 정도로 구현을 하였다. 근데 그 페이지를 만드는 과정에서 나중에 백엔드를 공부하여 데이터가 움직이고 기능을 구현하는 것까지 ..

EduClass Project 2025.01.23

[Spring] Spring Boot Container란 무엇인가?

1. 컨테이너(Container)를 왜 사용하는가?객체 간의 의존성 문제 해결소프트웨어 개발에서 객체 간의 의존성은 필수적이다. 그러나 객체가 서로 강하게 결합되어 있으면 코드 변경 시 모든 연관된 코드가 수정되어야 하는 문제가 발생한다. Spring Boot의 컨테이너는 객체 간의 의존성을 주입해주는 역할을 하여 이런 문제를 해결한다.코드의 모듈화와 유지보수성 향상컨테이너는 객체 생성을 개발자가 직접 처리하지 않도록 하여 코드의 모듈화를 지원합니다. 이는 객체 간의 결합도를 낮추고, 유지보수성과 확장성을 향상시킨다.개발자 작업의 단순화컨테이너는 애플리케이션의 객체 생성과 의존성 주입, 생명주기 관리를 자동으로 처리한다. 개발자는 비즈니스 로직 구현에 집중할 수 있으며, 반복적인 작업에서 벗어날 수 있다..

SPRING 2024.12.26

[Spring] Maven vs Gradle

Maven과 Gradle은 Java 애플리케이션의 빌드와 의존성 관리를 위해 널리 사용되는 도구이다. 이 두 도구는 소프트웨어를 컴파일, 테스트, 패키징, 배포하는 데 필요한 프로세스를 자동화하여 개발 생산성을 높이는데 기여한다. Maven은 XML기반의 선언적 방식으로 설정을 정의하며, 전통적인 빌드 도구로 널리 사용되어 왔다. 그에 반해 Gradle은 선언적 방식과 프로그래밍적 방식을 혼합한 DSL(Domain-Specific Language)을 활용하며, 현대적인 빌드 요구사항에 맞춘 유연성과 속도를 제공한다.1. Maven과 Gradle의 주요 차이점기본 철학과 빌드 스크립트항목MavenGradle철학선언적 빌드. XML파일을 사용하여 의존성 선언선언적 + 프로그래밍적 빌드. Groovy 또는 K..

SPRING 2024.12.24

[Spring] Spring Boot AutoConfiguration(자동 설정)

Spring Boot AutoConfiguration은 개발자가 복잡한 설정을 간소화 하고 애플리케이션을 빠르게 구성할 수 있도록 설계된 기능이다. AutoConfiguration은 애플리케이션 실행 시 필요한 설정을 자동으로 적용해주며, 개발자가 비즈니스 로직에만 집중할 수 있게 해준다. 예를 들어, spring-boot-starter-data-jpa 의존성을 추가하면 DataSource 및 JPA 설정이 자동으로 구성된다. 웹 서버는 spring-boot-starter-web 의존성을 추가하면 내장 Tomcat과 Spring MVC가 자동으로 설정된다. 이는 Spring Framework에서 수작업으로 설정해야 했던 작업들을 간소화 해준다. 1. AutoConfiguration 동작 원리@Enable..

SPRING 2024.12.23

[Spring] Spring Boot 2 vs Spring Boot 3 차이가 무엇일까?

Spring Boot 2와 Spring Boot 3의 차이점을 알아보자. JDK VersionSpring Boot 3에서는 JDK 17미만의 버전을 지원하지 않습니다. JavaEE -> JakartaEESpring Boot 3는 모든 종속성을 위해 Java EE에서 Jakarta EE API로 마이그레이션 되었습니다. Jakarta EE는 엔터프라이즈 급 Java 기반 서버 사이드 애플리케이션을 개발하기 위한 표준을 의미합니다.javax.servlet.* -> jakarta.servlet.*javax.annotation.* -> jakarta.annotation.*javax.transaction.* -> jakarta.transaction.* - Java EE는 엔터프라이즈 애플리케이션 개발을 위한 Ja..

SPRING 2024.12.23

[Spring Boot] 스프링(Spring) vs 스프링 부트(Spring Boot)

1. Spring FrameworkSpring은 Java 애플리케이션 개발을 위한 오픈소스 프레임워크로, 좀 더 가벼운 애플리케이션 개발을 목적으로 설계되었다. Spring 프레임워크를 사용했을 때, 장점은 다음과 같다.유연성 : Spring은 여러 기술과 잘 통합되며, 다양한 아키텍처 패턴을 선택할 수 있다. XML, Java Config, 애노테이션 기반 설정을 모두 지원하여 개발자의 선호에 따라서 유연하게 선택가능하다.DI(Dependency Injection) : 객체 간의 의존성을 외부에서 관리하여 유연하고 테스트 가능한 코드를 작성할 수 있다.AOP(Aspect-Oriented Programming) : 로깅, 트랜잭션 관리 등 공통 관심사를 분리하여 코드의 가독성과 유지보수성을 높인다.다양한..

SPRING 2024.12.23

[JAVA] 예외클래스와 예외처리

1. 예외(Exception)와 예외 클래스예외란? 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점과 에러와 비슷하다. 하지만 예외 처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외에는 두 가지 종류가 있다.일반 예외와 실행 예외일반 예외는 프로그램 실행시 발생할 가능성이 높기 때문에 컴파일 하는 과정에서 해당 예외 처리 코드가 있는지 검사한다. 만약 예외 처리 코드가 없다면 컴파일 오류가 발생한다. 실행 예외는 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않는다.  자바에서는 예외를 클..

JAVA 2024.12.08

[JAVA] Heap 메모리 구조와 Garbage Collection

자바 프로그램이 실행되면 JVM은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리하한다. JVM의 메모리 공간은 크게 Static 영역, Stack영역, Heap 영역으로 구분되는데 Heap영역에 대해서 자세히 알아보도록 하자.1. Heap 영역JVM이 관리하는 프로그램 상에서 데이터를 저장하기 위해 런타임 시 동적으로 할당하여 사용하는 영역이다.참조형 데이터 타입을 갖는다 : 값이 저장되어 있는 곳의 주소값을 저장하는 공간이다.클래스인터페이스배열열거Heap 영역은 Stack 영역과 다르게 보관되는 메모리가 호출이 끝나더라도 삭제되지 않고 유지된다.stack은 스레드 갯수마다 각각 생성되지만, heap은 몇개의 스레드가 존재하든 상관없이 단 하나의 Heap 영역만 존재..

JAVA 2024.12.08

[JAVA] 중첩클래스, 중첩인터페이스

1. 중첩 클래스(Nested Class)중첩 클래스는 한 클래스 내부에서 정의한 클래스를 말한다. 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있고, 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다.인스턴스 멤버 클래스(inner class)static 키워드 없이 중첩 선언된 클래스를 말한다. 인스턴스 멤버 클래스는 인스턴스 필드와 메소드만 선언이 가능하고 정적 필드와 메소드는 선언할 수 없다.class OuterClass { // 인스턴스 멤버 클래스 class InnerClass { InnerClass {} // 생성자 int field1; // 인스턴스 필드 void method1() { // 인스턴스 메소..

JAVA 2024.12.03