본문 바로가기

Programming/SpringBoot

모의 쇼핑몰 만들어보기 #1 프로젝트 생성

프로젝트 스펙은 아래와 같이 설정했다.

- 서버에서 가공한 데이터를 뷰에 보여주기 위해 템플릿 엔진 Thymeleaf를 추가했고, 

- Spring Data JPA는 JPA를 손쉽게 구현할 수 있도록 추가했고, 

- 프로젝트에서 사용할 DB로 MySQL을 사용하려 했고,

- H2는 자바기반의 RDMBS로 메모리 데이터 베이스 기능을 지원해 비록 데이터를 영구적으로 저장하는데 권장되진 않지만, 

매우 가볍고 빠른 데이터베이스다. 그래서 테스트용 DB로 많이 사용된다.

 


왜 MySQL을 썼는가?

더보기

여러가지 이유가 있겠지만, "쇼핑몰을 구현하는데 MySQL이 손색없기 때문이다." 라는 이유가 가장 적합하겠다.

 

MySQL의 장점으로는 

1. 많은 사용자가 한번에 DB에 접근할 수 있다는 것

2. 다른 프로그래밍 언어와 통합이 가능하다는 것

3. 큰 RAM이 필요없는 가벼운 프로그램이라는 것.(거의 1MB)

4. MAC, Linux, Windows등 다양한 운영체제에서 안정적이게 사용가능하다는 것.

5. 테이블 구조가 유연하다는 것 (확장가능)

6. 오픈 소스 DBMS로, 무료로 사용할 수 있다는 것.

7. MySQL Workbench로 손쉽게 관리가 가능하다는 것

8. 보안기능이 뛰어나다는 것(암호화, 서브넷 마스크 수준, 호스트 이름, 사용자 엑세스권한 등)

9. 간단한 쿼리를 처리할 때 속도가 매우 빠르다. (대용량처리도 용이)

10. API 함수를 사용해 다양한 응용 프로그램,  타 언어와 인터페이스 교류 가능.

11. 다른 데이터 관리 툴에 비해 구조가 간단 -> 사용하기가 쉽다.

 

 

단점으로는

1. 큰 데이터 베이스로 적용하기 어렵다는 점이 있으나

-> 토이프로젝트로 구현하기에 어려움이 없다. 추후 실제로 대용량 트래픽을 관리하면 Oracle 등으로 바꿔줄 필요가 있다.

 

2. 복잡한 쿼리는 성능이 저하된다.

 

3. 트랜잭션 지원이 완벽하지 않다는 점*

 

4. 사용자 정의 함수의 사용이 쉽지 않고 유연하지 않다는 점이 있다. 

 

 

 

 

Oracle과의 차이점을 들자면, 

 

🔑구조적 차이로는

Oracle: DB서버가 통합된 하나의 스토리지를 공유하는 방식

MySQL: DB서버마다 독립적인 스토리지를 할당하는 방식

 

🔑조인 방식의  차이로는

Oracle : 중첩 루프조인, 해시 조인, 소트 머지 조인 방식을 제공.

MySQL: 중첩 루프조인 방식을 제공.

 

🔑확장성의  차이로는

Oracle: 별도의 DBMS를 설치해 사용할 수 없고,

MySQL: 별도의 DBMS를 설치해 사용할 수 있다.

 

🔑메모리의  차이로는

Oracle: 메모리 사용률 큼. (최소 수백 MB이상)

MySQL: 메모리 사용률 작음(1MB 이하)

 

 

 

⚔️오라클의 특징

- 다수의 사용자가 동시에 접근 가능

- 변경 plan을 작성하고 실제 구현하기 전에 변경 사항의 효과를 볼 수 있다.

- 오류가 발생하면 설정되어있는 계정 및 이메일로 연락이 온다.

- DBMS 실행 컴퓨터/서버역할 컴퓨터/DB 응용 프로그램 실행 컴퓨터가 각각 다르게 분산처리한다.

- 고성능의 트랜잭션 처리

 

- 비용적인 부담

- 기능이 많아 초보자에게 어려움

- 높은 지원 하드웨어 사양이 필요하다.


상품엔티티 설계

 

엔티티: 데이터베이스의 테이블에 대응하는 클래스!

@Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 한다.