본문 바로가기
BackEnd/Backend 공부 정리

Java-5.1

by Brilliant_Graphite 2024. 8. 8.

 

Model

DB

jdbc

MyBatis

JPA

Controller

Spring Framework- java + sql

정부 3.0/ boot2 - 정부 4.0, 4.1

Xml - 비동기 방식, json

View

view templete : php, asp, jsp

web (html, css, javaScript, jQuery)

boot3 - Rest API

 

- Spring Framework

Spring 프레임워크는 자바 기반의 애플리케이션 개발을 위한 오픈 소스 프레임워크입니다. 2003년에 처음 발표되었으며, 오늘날에는 자바 생태계에서 매우 중요한 역할을 하고 있습니다. Spring의 주요 특징과 구성 요소는 다음과 같습니다:

  1. 의존성 주입 (Dependency Injection, DI):
    • Spring은 의존성 주입을 통해 객체 간의 의존성을 관리합니다. 이를 통해 애플리케이션의 결합도를 낮추고, 테스트와 유지 보수를 쉽게 할 수 있습니다.
  2. 제어의 역전 (Inversion of Control, IoC):
    • Spring 컨테이너가 객체의 생성과 관리, 의존성 주입을 담당합니다. 개발자는 객체의 생성과 관리에 대한 걱정 없이 비즈니스 로직에 집중할 수 있습니다.
  3. 모듈화:
    • Spring은 다양한 모듈로 구성되어 있어, 필요에 따라 특정 기능만 선택적으로 사용할 수 있습니다. 주요 모듈로는 Spring Core, Spring AOP, Spring Data Access, Spring Web, Spring Security, Spring Boot 등이 있습니다.
  4. 트랜잭션 관리:
    • Spring은 선언적 트랜잭션 관리를 지원하여 데이터베이스 트랜잭션을 간편하게 처리할 수 있습니다.
  5. Spring Boot:
    • Spring Boot는 Spring 애플리케이션의 설정과 배포를 간소화해주는 도구입니다. 내장 서버를 사용하여 빠르게 애플리케이션을 개발하고 배포할 수 있으며, 많은 기본 설정을 자동으로 해줍니다.
  6. Spring MVC:
    • 웹 애플리케이션을 위한 모델-뷰-컨트롤러(MVC) 프레임워크를 제공합니다. RESTful 웹 서비스와 웹 애플리케이션의 개발을 지원합니다.
  7. Spring Data:
    • 데이터 접근을 더 쉽게 할 수 있도록 지원하는 모듈입니다. JPA, MongoDB, Redis 등 다양한 데이터베이스와 데이터 저장소에 대한 추상화와 통합을 제공합니다.
  8. Spring Security:
    • 애플리케이션의 보안을 강화하기 위한 모듈입니다. 인증과 권한 부여, 보안 설정을 지원합니다.

Spring 프레임워크는 유연성과 확장성이 뛰어나며, 대규모 엔터프라이즈 애플리케이션부터 소규모 프로젝트까지 폭넓게 사용될 수 있습니다.

 

-JSP

JSP (JavaServer Pages)는 Java 기반의 웹 페이지 기술로, 동적인 웹 페이지를 생성하는 데 사용됩니다. JSP는 HTML과 Java 코드를 혼합하여 웹 페이지를 생성하며, 서버 측에서 실행됩니다. 다음은 JSP의 주요 개념과 특징입니다:

1. JSP의 기본 개념

  • HTML과 Java의 혼합: JSP 페이지는 HTML과 Java 코드를 함께 사용할 수 있습니다. Java 코드는 JSP 페이지 내에서 <% %> 태그를 사용하여 삽입합니다.
  • 서블릿의 단순화: JSP는 서블릿의 복잡함을 추상화하여 더 쉽게 동적 웹 페이지를 작성할 수 있게 해줍니다. JSP 페이지는 내부적으로 서블릿으로 변환됩니다.
  • 태그 라이브러리: JSP는 JSTL (JavaServer Pages Standard Tag Library)과 같은 태그 라이브러리를 통해 반복문, 조건문, 국제화 등을 지원합니다. 이로 인해 Java 코드의 사용을 최소화하고, HTML과 비즈니스 로직을 명확하게 분리할 수 있습니다.

2. JSP의 주요 구성 요소

  • 디렉티브: 페이지의 전체적인 설정을 정의합니다. 예를 들어, <%@ page language="java" contentType="text/html; charset=UTF-8" %>와 같은 방식으로 설정할 수 있습니다.
  • 선언: JSP 페이지에서 사용할 변수를 정의하거나 메서드를 작성하는 부분입니다. <%! int myVar = 0; %>와 같이 선언할 수 있습니다.
  • 스크립틀릿: JSP 페이지 내에서 Java 코드를 실행할 수 있는 부분입니다. <% %> 태그를 사용하여 코드를 삽입합니다.
  • 표현식: JSP 페이지에서 값을 출력할 때 사용합니다. <%= myVar %>와 같은 방식으로 값을 출력할 수 있습니다.
  • 액션 태그: JSP 내에서 특정 작업을 수행하는 데 사용됩니다. <jsp:include page="header.jsp" />와 같은 형식으로 다른 JSP 파일을 포함할 수 있습니다.

3. JSP 페이지의 생명주기

  1. 번역: JSP 페이지는 처음 요청 시 서블릿으로 변환됩니다.
  2. 컴파일: 변환된 서블릿 코드는 컴파일되어 실행 가능한 서블릿 클래스 파일이 됩니다.
  3. 로드: 서블릿 컨테이너가 서블릿 클래스를 로드합니다.
  4. 인스턴스화: 서블릿 인스턴스가 생성됩니다.
  5. 요청 처리: 서블릿의 service 메서드가 호출되어 요청을 처리하고 응답을 생성합니다.
  6. 제거: 서블릿 인스턴스가 제거됩니다 (옵션).

4. JSP의 장점

  • 간단한 문법: HTML과 Java를 혼합하여 사용할 수 있어, 웹 페이지와 비즈니스 로직을 쉽게 작성할 수 있습니다.
  • 태그 라이브러리: JSTL과 같은 태그 라이브러리를 사용하면 Java 코드의 양을 줄이고, 페이지의 가독성을 높일 수 있습니다.
  • 서블릿과의 통합: JSP는 서블릿과 긴밀하게 통합되어 있어, Java 기반 웹 애플리케이션에서 잘 작동합니다.

5. JSP와 다른 기술

  • Servlet: JSP는 서블릿의 보다 높은 수준의 추상화입니다. 서블릿과 함께 사용되며, 서블릿과 JSP 간의 역할 분담이 중요합니다.
  • JSF (JavaServer Faces): JSF는 JSP보다 더 높은 수준의 웹 프레임워크로, UI 구성 요소와 이벤트 처리에 중점을 둡니다.
  • Spring MVC: Spring MVC는 Spring 프레임워크의 일부로, JSP를 뷰 기술로 사용할 수 있으며, 더 강력한 구조적 접근을 제공합니다.

JSP는 현재 웹 애플리케이션 개발에서 많이 사용되지만, 최신 웹 개발에서는 Thymeleaf, React, Angular 등 다른 기술들도 많이 사용되고 있습니다. JSP에 대한 기본적인 이해는 여전히 중요하지만, 최신 기술 동향도 함께 고려하는 것이 좋습니다.

 

-MyBatis

MyBatis는 자바 애플리케이션에서 SQL을 효율적으로 실행하고 매핑하는 데 사용되는 데이터 접근 프레임워크입니다. MyBatis는 SQL을 XML 파일이나 애너테이션에 정의하고, 자바 객체와 SQL 쿼리 결과를 매핑하여 데이터베이스 작업을 간편하게 처리할 수 있도록 도와줍니다.

MyBatis의 주요 개념

  1. SQL 매핑:
    • MyBatis는 SQL 쿼리를 XML 파일이나 애너테이션으로 정의하고, 이 SQL을 실행하여 결과를 자바 객체에 매핑합니다. 이렇게 하면 SQL 쿼리와 자바 객체 간의 매핑을 명확하게 정의할 수 있습니다.
  2. XML 매핑 파일:
    • SQL 쿼리와 자바 객체의 매핑을 정의하는 XML 파일을 사용합니다. 보통 Mapper.xml 파일에 SQL 쿼리와 매핑 정보를 정의합니다.
  3. 애너테이션 기반 매핑:
    • XML 대신 자바 애너테이션을 사용하여 SQL 쿼리를 정의하고 매핑할 수도 있습니다. 이 방법은 코드가 XML 파일 없이 자바 클래스에 직접 정의됩니다.
  4. 다양한 쿼리 유형 지원:
    • MyBatis는 select, insert, update, delete 쿼리를 모두 지원합니다. 복잡한 쿼리도 효율적으로 처리할 수 있습니다.
  5. 자동 매핑:
    • MyBatis는 SQL 쿼리 결과를 자바 객체의 필드에 자동으로 매핑할 수 있습니다. 매핑 규칙은 XML 매핑 파일에서 정의할 수 있습니다.

MyBatis의 주요 구성 요소

  1. SQL 매퍼:
    • SQL 쿼리와 매핑 정보를 정의하는 XML 파일입니다. 매퍼 파일은 SQL 쿼리와 이를 실행할 자바 메서드를 연결합니다.
  2. SQL 세션:
    • MyBatis의 핵심 인터페이스로, 데이터베이스와의 상호작용을 담당합니다. SQL 세션을 통해 SQL 쿼리를 실행하고 결과를 얻습니다.
  3. Mapper 인터페이스:
    • XML 매퍼 파일에 정의된 SQL 쿼리를 호출하기 위한 자바 인터페이스입니다. MyBatis는 이 인터페이스를 구현하여 SQL 쿼리를 실행합니다.
  4. MyBatis 설정 파일:
    • MyBatis의 설정 정보를 정의하는 XML 파일입니다. 데이터베이스 연결 정보, 트랜잭션 설정, 매퍼 파일의 위치 등을 설정합니다.
    • MyBatis 사용 방법
      1. 의존성 추가:
        • Maven 또는 Gradle을 사용하여 MyBatis 라이브러리를 프로젝트에 추가합니다. 예를 들어, Maven에서는 pom.xml 파일에 다음과 같은 의존성을 추가할 수 있습니다.
XML

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

2. 설정 파일 작성:

 

  • mybatis-config.xml 파일을 작성하여 MyBatis의 설정을 정의합니다. 이 파일에는 데이터베이스 연결 정보, 트랜잭션 관리 설정, 매퍼 파일의 위치 등이 포함됩니다.

3. 매퍼 파일 작성:

  • SQL 쿼리와 매핑 정보를 정의하는 XML 매퍼 파일을 작성합니다. 예를 들어, UserMapper.xml 파일에 다음과 같은 SQL 쿼리를 정의할 수 있습니다.
XML

<mapper namespace="com.example.UserMapper">
    <select id="findUserById" parameterType="int" resultType="com.example.User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

 

 

4. 매퍼 인터페이스 작성:

  • 매퍼 XML 파일에서 정의한 SQL 쿼리를 호출할 자바 인터페이스를 작성합니다. 예를 들어, UserMapper 인터페이스를 다음과 같이 작성할 수 있습니다.
public interface UserMapper {
    User findUserById(int id);
}

 

5. SQL 세션 생성 및 사용:

  • SqlSessionFactory를 생성하고, SqlSession을 통해 데이터베이스 작업을 수행합니다. 예를 들어:
SqlSessionFactory sqlSessionFactory = ...; // SqlSessionFactory 초기화
try (SqlSession session = sqlSessionFactory.openSession()) {
    UserMapper mapper = session.getMapper(UserMapper.class);
    User user = mapper.findUserById(1);
}

 

  1.  

MyBatis의 장점

  • SQL 제어: SQL 쿼리를 직접 작성할 수 있어 데이터베이스 작업에 대한 세밀한 제어가 가능합니다.
  • 자동 매핑: SQL 쿼리 결과를 자바 객체에 자동으로 매핑하여 개발을 간편하게 만듭니다.
  • 유연성: XML 또는 애너테이션을 통해 SQL 쿼리를 정의할 수 있어 유연한 개발이 가능합니다.
  • 성능: SQL 쿼리를 직접 작성하기 때문에 ORM 프레임워크에 비해 성능 최적화가 용이합니다.

MyBatis는 복잡한 SQL 쿼리를 처리해야 하는 경우, SQL을 직접 제어하고자 하는 경우에 유용하며, 대규모 데이터베이스 애플리케이션에서 특히 효과적입니다.

 

 

'BackEnd > Backend 공부 정리' 카테고리의 다른 글

Java-5.3  (0) 2024.08.08
Java-5.2  (0) 2024.08.08
sqldeveloper-4  (0) 2024.08.02
Java-3  (0) 2024.08.02
sqldeveloper-3  (0) 2024.08.01