-
스프링이란? JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크이다.

-
스프링과 스프링 부트 차이
-
- Embed Tomcat을 사용하기 때문에, (Spring Boot 내부에 Tomcat이 포함되어있다.) 따로 Tomcat을 설치하거나 매번 버전을 관리해 주어야 하는 수고로움을 덜어준다.
-
- starter을 통한 dependency 자동화. 과거 Spring framework에서는 각각의 dependency들의 호환되는 버전을 일일이 맞추어 주어야 해서 version 관리에 어려움이 많았음.
-
- XML설정을 하지 않아도 된다.
-
- jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능.
-
스프링 어노테이션 : 주석이라는 뜻, 자바에서는 코드 사이에 특별한 의미, 기능을 수행하도록 하는 기술. 프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공, 코드에 정보를 추가하는 정형화된 방법. 어노테이션을 사용하면 코드가 깔끔해지고 재사용이 가능.
-
스프링 버전별 기능
-
MVC 1과 MVC 2의 차이
- MVC 1 : 하나의 jsp페이지 내에서 controller는 자바, view는 html, css 이벤트는 자바스크립트를 사용. ← 유지 보수 어려움
- MVC 2 : 웹 브라우저 요청을 controller에서 처리. controller는 요청에 대한 로직처리를 model로 보내고, model은 결과를 view로 보내여 사용자에게 응답. ← 구조 설계를 위한 시간 필요
- Model은 둘 다 jdbc 인터페이스로 DB 조작하면서 class를 정의.
-
ORM : Object Relational Mapping의 약자로, 관계형 데이터베이스를 OOP언어로 변환해주는 기술. 그래서 비즈니스 코드가 DB 테이블에 바로 접근하게 도와준다.
-
JPA : ORM을 위해 자바에서 제공하는 API. 자바 객체와 DB 테이블을 매핑. 구현체: 하이버네이트
-
ORM, JPA, Hibernate 장단점
- 장점 : 비즈니스 로직에 집중하고 객체 중심의 개발을 할 수 있음. 메소드를 호출하는 것만으로 쿼리를 수행해서 생산성 향상, 유지보수 비용이 줄어듭니다. 그리고 특정 DB에 의존하지 않음.
- 단점 : 직접 SQL을 호출하는 것보다는 조금 느림. 복잡한 쿼리같은 것은 메소드로 처리가 힘듦.
-
Mybatis란?
- 자바의 관계형 데이터베이스 프로그래밍을 좀더 쉽게 만들어주는 개발 프레임워크. SQL쿼리문과 프로그램 코드를 분리할수 있다는 장점이 있다.
-
Mybatis, JPA 차이
- Mybatis 장점
- JPA에 비해 쉽다. SQL 쿼리를 그대로 사용하기에 복잡한 Join, 튜닝 등을 좀더 수월하게 작성 가능
- SQL의 세부적인 내용 변경 시 좀 더 간편.
- 동적 쿼리 사용 시 JPA보다 간편하게 구현 가능.
- Mybatis 단점
- 데이터 베이스 설정 변경 시 수정할 부분이 너무 많다.
- Mapper 작성부터 인터페이스 설계까지 JPA보다 많은 설계와 파일, 로직이 필요.
- 특정 DB에 종속적.
- JPA 장점
- RDB에 종류와 관계없이 사용 가능. 추후 DB 변경이나 코드 재활용에 용이.
- 기본적인 CRUD 제공과 페이징 처리 등 상당 부분 구현되어 있어 비지니스 로직에 집중 가능.
- 테이블 생성, 변경 등 엔티티 관리가 간편.
- 쿼리에 집중할 필요 없어 빠른 개발이 가능
- JPA 단점
- 어렵다. 단방향, 양방향, 임베디드 관계 등 이해해야할 내용이 많으며, 연관관계 이해 없이 잘못 코딩 했을 시 성능상의 문제와 동작이 원하는대로 되지 않는 일이 발생.
-
Spring JDBC
- Spring Framwork에서 제공하는 JDBC 추상화 라이브러리 - JdbcTemplete
- Spring JDBC는 JDBC 코드를 간결하게 작성하고, 더 쉽게 데이터베이스에 연결, 상호 작용할 수 있도록 돕는다.
-
DAO, DTO, VO 란? - AOP 프로그래밍을 위한 관심사의 분리
- DAO(Data Access Object)
- 데이터 사용기능 담당하는 클래스. DB 데이터 조회나 수정, 입력, 삭제와 같은 로직을 처리하기 위해 사용. DAOInterface/DAOImplement 로 구분지어 명세와 구현 분리하며 개발. 만약 Mybatis 연동처럼 Interface만 필요한 경우 그냥 DAO라고 명시 가능.
- DTO(Data Transfer Object)
- 데이터 저장 담당 클래스. Controller, Service, View처럼 계층 간의 데이터 교환을 위해 사용됨. 로직을 갖고 있지 않으며 순수한 데이터 객체이며 getter, setter 메소드만 소유.
- VO(Value Object)
- 값 오브젝트로써 값을 위해 사용됨. read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능). DTO와 유사하지만 DTO는 setter를 가지고 있어 값이 변함.