스프링 (Spring)

  • 객체를 관리할 수 있는 컨테이너를 제공
  • 정확히는 Spring Core

Question) "스프링 프레임워크에 대해 설명해 주세요."

Java의 오픈소스 애플리케이션 프레임워크로,
기본적으로 특정 기술에 종속되지 않고 객체를 관리할 수 있는 컨테이너를 제공 합니다.
따라서 컨테이너로 객체를 관리하면서,
의존성 주입제어의 역전을 통해 결합도를 낮출 수 있습니다.




의존성 주입, DI (Dependency Injection)

  • 컨테이너의존관계를 자동으로 연결하는 것

Question) "DI (의존성 주입)에 대해 설명해 주세요."

DIDependency Injection으로, 의존성 주입을 의미 합니다.
객체 간의 의존관계를 미리 설정 해두면,
스프링 컨테이너의존관계를 자동으로 연결하게 됩니다.
따라서, 직접 의존하는 객체를 생성하거나, 필요한 객체를 검색하여 가져올 필요가 없게되어
결합도가 낮아진다는 장점이 있습니다.




제어의 역전, IoC (Inversion of Control)

  • 프로그램의 제어권이 사용자에게 있지 않고, 프레임워크에 있는 것을 의미
  • 프레임워크가 프로그램의 전체 흐름을 결정

※ 라이브러리

  • 프로그램의 제어권사용자에게 있음
    ex) Math.random() - 사용자가 Java의 Math 라이브러리 기능 사용

Question) "IoC (제어의 역전)에 대해 설명 해주세요."

IoCInversion of Control로, 제어의 역전을 의미 합니다.
프로그램의 제어권이 사용자에게 있지 않고, 프레임워크에 있어서
필요에 따라 사용자의 코드를 호출하게 됩니다.
스프링에서는 인스턴스의 생성부터 소멸까지 개발자가 아닌 컨테이너가 대신 관리하게 됩니다.




ORM (Object Relational Mapping)

  • 관계형 데이터베이스(RDMBS)를 OOP 언어로 변환 해주는 기술
  • 객체와 테이블을 맵핑

Question) "ORM에 대해 설명해 주세요."

ORMObject Relational Mapping으로,
관계형 데이터베이스를 OOP 언어로 변환 해주는 기술 입니다.
따라서, 비즈니스 코드가 DB 테이블에 바로 접근이 가능하도록 해줍니다.




JPA (Java Persistence API)

  • ORM을 위해 Java에서 제공하는 API

  • interface 형태로 선언되어, 구현은 되어있지 않음
    => 하이버네이트에서 JPAinterface를 구현한 class를 제공하여,
          실질적으로 하이버네이트를 사용

Question) "JPA에 대해 설명해 주세요."

JPAORM을 위해 Java에서 제공하는 API 입니다.
Java 객체와 DB 테이블을 맵핑하며, 구현체로는 하이버네이트가 있습니다.




ORM, JPA, Hibernate 장단점

Question) "ORM, JPA, Hibernate의 장단점에 대해 설명해 주세요."

장점으로는 비즈니스 로직에 집중하고, 객체 중심의 개발을 할 수 있습니다.
메소드 호출 만으로도 쿼리를 수행하여, 생산성유지보수성이 향상 됩니다.
또한 특정 DB에 의존하지 않게 됩니다.

단점으로는 직접 SQL을 호출하는 것보다 조금 느릴 수 있습니다.
또한 복잡한 쿼리의 경우, 메소드 호출만으로 처리하기 어려울 수 있습니다.




profile
Silver Star

0개의 댓글