| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 격파르타비전공자
- java알고리즘
- 코딩부트캠프후기
- java기본자료형
- javaJRE
- java map 출력
- java map
- 프로그래머스
- 항해15기
- java map 저장
- java set 저장
- java최솟값구하기
- java 자료구조 활용
- 노베이스부트캠프
- java list 출력
- 항해99후기
- java list 저장
- java알고리즘문제풀이
- 격파르타후기
- java set 출력
- 프로그래머스제일작은수
- 비전공자sqld
- javaJVM
- 컴파일
- 격파르타합격후기
- 격파르타장점
- 인터프린터언어
- sqld자격증합격
- java참조자료형
- 작은수제거하기
- Today
- Total
코딩과 결혼합니다
230804 - SpringBoot 에서 JPA 환경설정 / 기술 스택 선정 이유 본문
환경설정
// build.gradle
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
//application.properties : Hibernate 설정
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
- show_sql, format_sql, use_sql_comments 옵션
- Hibernate가 DB에 요청하는 모든 SQL을 보기 좋게 출력
- ddl-auto
- create : 기존 테이블 삭제 후 다시 생성합니다. (DROP + CREATE)
- create-drop : create와 같으나 종료시점에 테이블을 DROP
- update : 변경된 부분만 반영합니다. ( 테이블이 없으면 만들어주고, 있으면 안 만들고)
- validate : Entity와 테이블이 정상 매핑되었는지만 확인
- none: 아무것도 하지 않는다.
//SpringBoot 환경에서는 EntityManagerFactory와 EntityManager를 자동으로 생성
@PersistenceContext
EntityManager em;
@PersistenceConext 애너테이션을 사용하면 자동으로 생성된 EntityManager를 주입받아 사용할 수 있다.
JPA
JPA 사용 이유
SQL 중심적인 개발을 하게 되면 많은 문제점들이 있는데 CRUD를 작업하며 SQL문은 무수히 반복하게 되고,
필드를 추가해야 할 경우 쿼리문을 모두 변경해야 하는 일이 발생한다. 그리고 객체답게 모델링할수록 맵핑 작업이 계속해서 늘어나게 된다.
JPA는 이러한 과정(SQL)들을 자동화해 주고, 코드 한 두줄로도 로직을 작성할 수 있다.
JPA는 자바 진영의 ORM 기술 표준으로
ORM이란 객체 관계 매핑을 말하는데 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계하고 ORM 프레임워크가 중간에서 매핑을 해준다.
JPA를 사용하면
- SQL 중심적 개발에서 객체 중심으로 개발이 가능하고
- 생산성이 높아지고
- 유지보수가 편하며
- 성능 또한 높아진다.
- 패러다임 불일치 또한 해결해 준다.
앞으로 프로젝트를 진행하며 계속해서 사용할 테이블이 늘어나고 그것을 잘 관리하기 위해서는 JPA 기술을 사용하는 게 필수적으로 느껴졌다. JPA를 사용함으로써 개발의 시간이 크게 줄 것이고, 그 시간을 다른 기능을 좀 더 정교하게 구현하는데 쓴다면 짧은 시간 동안 조금 더 완성적인 프로젝트 개발을 할 수 있을 것 같다.
JPA 공부 이유
다만, 아무리 좋은 기술이라도 잘 모르고 쓴다면 아무 소용없을 것이다. JPA를 잘 모르는 상태에서 개발을 한다면 지금처럼 한 두 개의 테이블을 관리하는 데는 크게 어려움이 없겠지만 앞으로 복잡한 객체와 테이블을 사용하게 되었을 때에는 오히려 더 많은 시간들이 걸릴 것이다. 그리고 그때는 아마도 어떠한 문제를 해결하는 데에도 바빠 공부할 시간이 없을 것 같다. 그래서 프로젝트 초기인 지금 나를 포함한 팀원들이 각자가 앞으로 다룰 기술들에 대하여 공부하는 시간을 가지는 중이다. 그렇게 나는 JPA에 대한 기초를 다시 다지게 되었다. 확실히 같은 주제에 대해 반복적으로 공부하다 보니 전보다는 더 이해하기 쉽게 다가온다.

계획이 늘 계획대로 이루어지지는 않지만 일단은 이렇게 계획표를 짜놓고 내일까지는 JPA에 대한 개념을 어느 정도 잡으려 한다. 사실 이전에 JPA를 직접 다뤄보기도 했고, 지금 하는 프로젝트에서도 환경설정도 하고 구현도 해놓았지만 확실히 이번에 배운 게 앞으로 많은 도움을 주리라 믿는다. 그렇게 될 것이다!
'코딩과 매일매일♥ > Seoulvival' 카테고리의 다른 글
| 230815 - 코드 리팩토링 멋진 3중 for문을 하나의 for문으로 (2) | 2023.08.15 |
|---|---|
| 230810 - 태그를 누르면 해당 태그의 post가 조회되도록 하기 (0) | 2023.08.10 |
| 230809 - 저장된 태그들로 인기 순위 태그 조회하기 (0) | 2023.08.10 |
| 230806 - DB 정규화 하기 (0) | 2023.08.06 |
| 230803 - 파이널 기획 및 S.A (기술 스택 선정과 이유), 오늘 한 일 (0) | 2023.08.04 |