본문 바로가기
Development/SprngBoot웹프로젝트_수업

웹프로젝트 과목 1일차 수업 정리 23.12.26

by 최호희 2023. 12. 26.

들어가며,

이 웹 프로젝트 과목에서는 스프링부트에 대해 익히고 사용하는 법을 알려준다. 책은 '점프 투 스프링부트' 를 사용한다. 그럼, 이 과목에서 배운 내용을 일차별로 정리해보겠다.

 

웹 개발은 크게 두가지로 나뉘어진다.

프론트엔드, 백엔드 이 둘을 합치면 풀스택이라고 한다. 아래에서 설명해보겠다.


프론트엔드

프론트엔드는 소프트웨어나 웹 애플리케이션의 사용자 인터페이스(UI)를 담당하는 부분으로, 사용자가 직접 상호작용하는 영역이다. 웹 페이지의 디자인, 레이아웃, 콘텐츠 표시 등을 담당하며, 주로 웹 개발에서는 HTML, CSS, JavaScript를 활용하여 프론트엔드를 개발한다.

1. HTML (HyperText Markup Language): 웹 페이지의 구조를 정의하는 언어로, 텍스트, 이미지, 링크 등을 표시하고 구조화한다.


2. CSS (Cascading Style Sheets): 웹 페이지의 스타일과 레이아웃을 꾸미는 스타일 시트 언어로, 색상, 폰트, 간격 등을 지정하여 웹 페이지를 디자인한다.


3. JavaScript: 웹 페이지의 동적인 부분을 다루는 스크립트 언어로, 사용자와의 상호작용이나 웹 페이지의 동적인 변화를 구현하는 데 사용한다.

피그마, KendoUI, 부트스트랩 등이 대표적


백엔드

백엔드는 웹 애플리케이션의 뒷단을 담당하는 부분으로, 사용자에게는 직접적으로 보이지 않는 서버 측 로직과 데이터 처리를 담당한다. 주로 데이터베이스와의 상호작용, 비즈니스 로직, 서버 관리 등이 백엔드에서 이루어진다.

1. 언어

: Java, Python, Ruby, PHP, Node.js 등이 있다. 이 언어들을 사용하여 서버 측에서 실행되는 로직을 구현한다.

 

 


2. 데이터베이스 DB

: 사용자 정보, 애플리케이션 데이터 등을 저장하고 관리하는 역할을 하는 데이터베이스가 백엔드에 포함된다.  대표적으로 Oracle, MySQL, MariaDB등이 있다

MySQL 와 MariaDB의 차이

MySQL(오픈소스 무료) → MariaDB(기존 MySQL 개발자들이 따로 나와서 만든것 완전무료)

 

 

 

3. 데이터베이스 관리 시스템 DBMS (database management system)

: 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합,

출처 위키백과

장점

  • 데이터 통제가 강화된다.
  • 애플리케이션 프로그램들을 쉽게 개발하고 관리할 수 있다.
  • 보안이 강화된다.

 

 

같이 알아야할 개념

ACID ( 원자성, 일관성, 고립성, 지속성)

: *데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.

* 데이터베이스  트랜잭션: 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 

 

 

 

5. 데이터베이스 모델 (DBMS)

1) 관계형 데이터 모델 (RDBMS)

2) 데이터 모델 (ORDBMS)

 

 

 

6. 백엔드와 DB를 연결하는 기술

이 내용은 블로그 글로 따로 정리해둔 것도 있다.

https://holmol.tistory.com/53

 

JDBC, JPA, MyBatis 차이점

들어가며, JDBC, JPA, MyBatis 이름은 들어보았다. 모두 데이터베이스와 상호작용하는 거 같은데... 뭐가 달라서 이름을 다르게 부르는지 궁금해졌다. 그래서 이번에는 이 세가지를 간단히 정리해보

holmol.tistory.com

1) JDBC

: Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.

자바가 지원하는 호스트 데이터베이스 타입 ↓

 

2)  MyBatis

: 자바 Persistence 프레임워크의 하나로 XML 서술자나 @어노테이션을 사용하여 저장 프로시저 SQL 문으로 객체들을 연결시킨다.

사용법 ↓

출처 위키백과

 

3)  JPA (Java Persistence API)

: 관계형 데이터베이스의 관리를 표현하는 자바 API이다. 기존에 EJB에서 제공되던 엔터티 빈(Entity Bean)을 대체하는 기술이다. 최근 많이 사용하는 기술이다.

출처 위키백

퍼시스턴스 엔티티 관계형 데이터베이스의 테이블로 지속되는 경량 자바 클래스이다. 이러한 엔티티는 테이블에서 개개의 행에 해당한다. 엔티티는 일반적으로 다른 엔티티들과 관계가 있으며 이러한 관계는 객체/관계형 메타 데이터를 통해 표현된다. 객체/관계형 메타데이터는 어노테이션을 사용하여 엔티티 클래스 파일에 직접 명시하거나 응용프로그램과 함께 배포되는 별도의 XML 설명자 파일에서 지정할 수 있다.

 

같이 알아야할 개념

JPQL

Java Persistence Query Language, JPQL는 관계형 데이터베이스에 저장된 엔티티에 대한 쿼리들을 작성한다. 쿼리들은 구문에서 SQL 쿼리와 유사하지만, 데이터베이스 테이블에 직접적으로 처리하지 않고 엔티티 개체에 대하여 처리된다.

 

하이버네이트

하이버네이트(Hibernate)는 자바를 위한 오픈소스 객체-관계 매핑 프레임워크를 제공한다. 버전 3.2와 그 이후 버전에서는 JPA를 위한 구현을 제공한다.  하이버네이트 ORM(Hibernate ORM)은 자바 언어를 위한 객체 관계 매핑 프레임워크이다. 객체 지향 Domain모델을 관계형 데이터베이스로 매핑하기 위한 프레임워크를 제공한다.

하이버네이트 API는 자바 패키지를 통해 제공된다.

 

 

 

7. Server

: 백엔드에서는 웹 서버와 애플리케이션 서버가 사용된다. 웹 서버는 정적인 콘텐츠를 처리하고, 애플리케이션 서버는 동적인 콘텐츠를 생성하고 실행한다.

서버는 클라이언트에게 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치를 의미한다. 

출처 위키미디어

 

 



8. API (Application Programming Interface)

: 응용 프로그램 프로그래밍 인터페이스라는 뜻이다. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다. 백엔드는 프론트엔드와 통신하기 위한 API를 제공한다. API는 데이터 교환 및 상호작용을 위한 규격을 정의하며, 주로 JSON 또는 XML 형식으로 데이터를 주고받는다.

 

 

 

9. 프레임워크

1) Sevlet:

Java를 가지고 웹개발을 편하게 하도록 만든 것, 서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다.

서블릿(Servlet)의 주요 특징

    • 클라이언트의 Request에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
    • 기존의 정적 웹 프로그램의 문제점을 보완하여 동적인 여러 가지 기능을 제공
    • JAVA의 스레드를 이용하여 동작
    • MVC패턴에서 컨트롤러로 이용됨
    • 컨테이너에서 실행
    • 보안 기능을 적용하기 쉬움

서블릿의 동작과정

 

2) JSP

: 위의 Sevlet 이 어렵다는 문제가 있어 동적페이지를 더 간편하게 만들기 위해 생김.

 

3) Spring

: 웹 개발을 더 하기 쉽게 sevlet을 기반으로 프레임워크화 시킨 것. 참고로 공공기관에서는 전부 Spring을 사용하도록 규제되어있다.

  • DJango: Python을 가지고 만든 프레임워크
  • Flask:

*프로그램이 무겁다 ->많은 리소스를 필요로한다

4) SpringBoot 🌿

: 웹 애플리케이션을 쉽고 빠르게 만들 수 있도록 도와주는 자바의 웹 프레임워크이다. SpringBoot는 Spring 프레임워크에 * Tomcat이라는 서버를 내장하고 여러 편의 기능들을 추가하여 개발자들 사이에서 꾸준히 인기를 누리고 있다.

이 스프링부트는 스프링(Spring) 프레임워크에 톰캣(Tomcat)이라는 서버를 내장하고 여러 편의 기능들을 추가하여 개발자들 사이에서 꾸준히 인기를 누리고 있다.

스프링부트의 장점

1) 스프링 부트는 튼튼한 웹 프레임워크이다

개발자가 웹 프로그램을 만들 때 어렵게 느끼는 기능 중 하나는 바로 보안 기능이다. 이 세상에는 여러 가지 방법으로 웹 사이트를 괴롭히는 사람들이 있다. 이런 공격에 개발자 홀로 신속하게 대응하기는 무척 어려운 일이다. 하지만 걱정할 필요는 없다. 스프링 부트가 이런 보안 공격을 기본으로 아주 잘 막아 주기 때문이다.

2)  스프링 부트에는 여러 기능이 준비되어 있다

스프링 부트는 2012년에 등장하여 10년 이상의 세월을 감내한 ‘베테랑’ 웹 프레임워크이다. 그동안 정말 무수히 많은 기능이 추가되고 또 다듬어졌다. 혹시 로그인 기능을 원하는가? 페이징 기능을 원하는가? 이미 스프링 부트에 있다. 이미 있을 뿐 아니라 너무나도 잘 만들어져 있다!

3)  스프링 부트는 WAS가 필요없다

스프링 부트 대신 스프링만 사용하여 웹 애플리케이션을 개발한다면 실행할 수 있는 톰캣과 같은 WAS(Web Application Server)가 필요하다. WAS의 종류는 매우 다양하며 설정 방식도 제각각이어서 WAS만으로도 공부해야 할 내용도 상당하다. 하지만 스프링 부트에는 톰캣 서버가 내장되어 있고 설정도 자동 적용되기 때문에 여러분은 WAS에 대해서 전혀 신경 쓸 필요가 없다. 심지어 배포되는 jar 파일에도 톰캣 서버가 내장되어 실행되므로 서로 다른 WAS들로 인해 발생되는 문제들도 사라진다.

WAS는 웹 애플리케이션과 서버 환경을 연결하는 중간 역할을 하는 소프트웨어 플랫폼이다. 예를 들어 사용자가 웹 브라우저로 서버에 요청을 보내면 WAS는 사용자의 요청을 해석하여 그에 맞는 서버 프로그램을 구동한 후 그 결과를 사용자에게 보여준다. WAS의 종류로는 아파치 톰캣, 오라클 웹 로직(Weblogic), IBM 웹스피어(WebSphere), 제이보스(JBoss, 와일드플라이WildFly), 제우스(Jeus) 등이 있다.

4)  스프링 부트는 설정이 쉽다

스프링 부트가 등장하기 전 개발자들은 스프링을 사용하여 웹 애플리케이션을 개발했다. 스프링의 복잡한 설정 때문에 개발자들은 많은 어려움을 겪었다. 심지어 한번 설정한 기능들이 스프링의 버전업으로 변경되거나 없어지는 일도 비일비재했다. 하지만 스프링 부트는 스프링의 복잡한 설정을 자동화·단순화하여 누구나 쉽게 스프링을 사용할 수 있도록 한 프레임워크이다.

 

 

 

10. 디자인 패턴

대표적인 패턴

  • MVC 패턴 (Java에서 사용)
  • MTV 패턴 (Python 에서 사용 파이썬은 인터프리터 방식)

 

MVC 패턴에 대해 정리한 글

https://holmol.tistory.com/66

 

MVC 패턴이 무엇이냐

MVC 패턴이란 무엇일까요 Model - View - Controller 의 약자로, 쉽게 말해 유지보수가 편하도록 만든 하나의 디자인 패턴이다. 아래의 강의를 추천받아, 보고 정리를 해보았습니다. https://www.youtube.com/wat

holmol.tistory.com


참고 사이트, 블로그:

https://velog.io/@falling_star3/Tomcat-%EC%84%9C%EB%B8%94%EB%A6%BFServlet%EC%9D%B4%EB%9E%80, 위키백과