Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- 알고리즘
- 맥
- 스터디2기
- 데이크스트라
- 티스토리챌린지
- mycli
- VI
- 터미널
- zsh
- 인프런워밍업클럽
- spring boot
- oh-my-zsh
- 오일러 경로
- mysql 표
- 오블완
- 인프런
- 분할정복 방법
- CS스터디
- 이진탐색
- 욕심쟁이 방법
- 네트워킹데이
- Pager
- Less
- cs
- 동적 프로그래밍 방법
- mysql 표 출력
- 순차탐색
- MySQL
- zsh theme
- table status
Archives
- Today
- Total
Develop
33일차_Spring Boot, Thymeleaf, JPA, JPQL 본문
안녕하세요 .ᐟ
오늘은 데브코스 33일차 4/17(목) 입니다.
(정처기 시험 준비여파로 늦게쓰는 점 양해 부탁 드립니다.ㅋㅋ)
오늘은 기존에 배웠던 것들과 어떤차이점이 있는지 위주로 작성해보겠습니다.
- 스프링과 스프링부트
- JSP와 Thymeleaf
- 마이바티스와 JPA
- SQL, JPQL, Query Dsl
Spring 과 Spring Boot
- 스프링 부트를 사용하면 스프링 기반의 어플리케이션을 쉽게 만들 수 있다.
- 스프링을 이용한 개발에 필요한 복잡한 설정은 스프링 부트가 해준다.
1. 내장 서버
- 스프링
- WAS 설치
- 웹 어플리케이션 코드 WAR로 빌드
- WAR를 WAS에 넣고 WAS를 실행
- 스프링 부트
- 톰캣을 라이브러리로 포함 내장 톰캣 기능 제공
- WAR 가 아닌 JAR 파일로 패키징 (즉, main 메소드로 바로 실행 가능)
2. 의존성 & 버전 관리
웹 어플리케이션을 개발한다고 했을때의 차이
- 스프링
- 필요한 라이브러리 추가(spring-webmvc, tomcat, jackson, logback,slf4j 등)
- 라이브러리의 버전 설정
- 라이브러리 버전끼리 호환이 안되는 경우가 발생 -> 번거로움
- 스프링 부트
- 라이브러리 자동 버전관리 플러그인 (io.spring.dependency-managemet) 사용 시 버전 생략 가능
- 기본 라이브러리 묶음 제공
- spring-boot-starter-web (spring mvc, 내장 톰캣 등)
- spring-boot-starter-jdbc (JDBC, HikariCP 커넥션 풀 등)
3. 자동 설정
- 일반적으로 사용하는 빈을 자동으로 등록해줌 (JdbcTemplate, DataSource, TransactionManger 등)
- 등록된 빈 확인 : External Libraries의 spring-boot-autoconfigure 모듈에서 확인 가능

- 스프링 부트의 빈 자동 등록 과정 (@SpringBootApplication)
- 스프링부트의 자동구성 활성화 (@EnableAutoConfiguration)
- 자동 설정에 대한 동적 import 실행 (@AutoConfigurationImportSelector) : 모든 라이브러리 확인 후 설정 정보 세팅
- 해당 파일의 설정 정보가 스프링 컨테이너에 자동으로 등록됨
출처 : https://youtu.be/YdE4krx0dsM?si=RuEWQACW-N2F_bRp
JSP와 Thymeleaf
1. 문법 & 사용성
- JSP : <% %> 태그 사용
- ex) <%= user.getName() %>
- 자바 코드와 HTML이 섞여 있음 (가독성 떨어짐)
- Thymeleaf : HTML 태그 안에서 서버 데이터를 바인딩해서 화면을 그리는 템플릿 엔진
- ex) <span th:text="${user.name}"></span>
- HTML 친화적 문법
- th:text, th:if, th:each 등은 모두 th: 접두사를 붙여야 함
2. 확장성 & 유지보수
- JSP : HTML과 자바 코드가 섞여 있어 유지보수가 어려움
- Thymeleaf : 구조가 깔끔하고 HTML과 분리되어 유지보수 용이
3. 호환성
- JSP : 서블릿 컨테이너에 종속
- Thymeleaf : 독립적이고 스프링 MVC와 호환이 뛰어남
MyBatis와 JPA
둘 다 DB 접근을 위한 ORM 또는 매퍼 도구
1. 쿼리 작성 방식
- MyBatis : 복잡한 쿼리 컨트롤이 쉬움
- ex) SELECT * FROM user WHERE id = #{id}
- SQL을 직접 작성 (단순한 구조)
- ORM 아님
- JPA : 생산성↑, 추상화↑
- ex) userRepository.findById(id)
- 쿼리를 직접 작성하지 않아도 됨 (CRUD 자동 처리)
- ORM 임
- 러닝커브 있음 (엔티티 생명주기, 캐시 등)
2. 매핑 방식
- MyBatis: 수동 매핑 (XML 또는 어노테이션)
- JPA: 객체 중심 매핑 (Entity, 어노테이션 기반)
QL, JPQL, QueryDSL
모두 데이터를 조회하기 위한 언어지만 추상화 정도가 다름
1. SQL
- 데이터베이스 전용 쿼리
- ex) SELECT * FROM user WHERE id = 1
2. JPQL
- JPA용 객체지향 쿼리
- 테이블이 아니라 Entity 기준으로 조회
- ex) SELECT u FROM User u WHERE u.id = :id
3. QueryDSL
- 자바 코드로 작성하는 쿼리
- 타입 안정성 + IDE 자동완성
- ex) QUser.user.id.eq(1L)
오늘도 수고하셨습니다 .ᐟ
'백엔드 > KDT_Programmers' 카테고리의 다른 글
| 35일차_SpringBoot: QueryDSL 적용, Boilerplate 마이그레이션, Thymeleaf 전환 (0) | 2025.04.22 |
|---|---|
| 34일차_Spring-JPA(영속성 컨텍스트, Entity 연관관계 매핑, N+1문제, CRUD), Spring-data(JPA 설정 및 사용, QueryDSL 사용준비) (0) | 2025.04.21 |
| 32일차_Spring-security 인증/인가 실습 (0) | 2025.04.17 |
| 31일차_ Spring-MyBatis 실습정리 : 회원가입, 로그인, CORS, 파일처리, Mock 테스트, 보안 설정 (0) | 2025.04.16 |
| 30일차_Spring-MyBatis 실습 정리: 테스트 코드, 매핑, 회원가입 구현 (0) | 2025.04.16 |