[사용기술]
Java, Spring Boot, Spring JPA, MySQL
[만들려는 것]
책을 위한 SNS.
[오늘 하려는 것]
스프링 프로젝트를 생성하고 MySQL 연결하기
개발에 편리한 설정 추가하기 (application.properties, build.gradle)
0. 간단 요구사항 분석
[회원]
- 회원 가입
- 회원 수정
- 회원 조회
[타임라인]
- 게시글 작성
- 게시글 수정
- 게시글 삭제
- 타임라인 조회
- 덧글 기능
- 좋아요 기능
- 팔로우 기능
- 팔로잉 기능
1. 스프링 스타더 사이트를 이용하여 프로젝트 생성하기
- 스프링에서 제공하는 스프링스타터(https://start.spring.io/) 를 이용해 프로젝트를 생성해 준다.
- [Dependencies]로는 Spring Web, Spring Data JPA, Lombok, MySQL Driver, Thymeleaf 총 5가지를 선택해 넣어주었다.
- ※ 스프링스타터를 통해서 프로젝트를 생성하고 생성된 프로젝트를 인텔리제이에 빌드하는 방법은 아래의 포스팅을 참고하면 됨.
※ 스프링스타터를 통해서 프로젝트를 생성하고 생성된 프로젝트를 인텔리제이에 빌드하는 방법
[인텔리제이/스프링] 스프링스타터로 스프링 프로젝트 생성하기
스프링 프로젝트를 만들 때 스프링스타터 사이트를 이용하면 간편하게 만들 수 있음. 1. 스프링 스타터 사이트 접속 https://start.spring.io/ 2. 아래와 같은 화면이 있을 텐데 만들 프로젝트의 설정을
ddururiiiiiii.tistory.com
(+) 프로젝트가 잘 돌아가는지 Run을 했는데 아래와 같은 에러가 뜸.
간단히 설명하면 MySQL에 관련된 설정을 안해놔서 그렇다!
평소에 공부할 때는 H2 데이터베이스를 사용했는데 한 번에 빌드가 잘 되었는데 MySQL은 따로 별도의 설정을 먼저 해줘야 하는 것 같다.
(영한님이 H2데이터베이스는 내장데이터 베이스를 사용해서 여러모로 편하다고 말할 때는 뭐가 편한지 몰랐는데 이런 점을 말하신 듯)
※ 스프링부트(JPA)에 MySQL을 설정하는 방법에 대해서는 아래의 포스팅에 따로 작성해두었다.
https://ddururiiiiiii.tistory.com/563
[스프링(Spirng)] Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be confi
[문제발생]스프링스타터를 이용하여 프로젝드를 생성해서 첫 Run을 했더니 아래와 같은 에러메세지가 떴다.***************************APPLICATION FAILED TO START***************************Description:Failed to configure a
ddururiiiiiii.tistory.com
3. Lombok 설정 켜기
Lombok을 디펜던시에 추가했지만, 추가적으로 설정이 필요함.
[Settings] - [Annotation Processors] - [Enable annoatation processing] 체크!
4. application.properties 추가 설정
데이터베이스 설정 외에 개발에 편리한 추가적인 설정을 해준다.
spring.jpa.properties.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.format_sql=true
#spring.jpa.properties.hibernate.show-sql=true
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.orm.jdbc.bind= trace
[각 설정에 대한 설명]
- spring.jpa.properties.hibernate.ddl-auto=create
- 애플리케이션 시작 시 데이터베이스 스키마를 자동으로 생성하거나 업데이트
- 값의 종류:
- none: 스키마 자동 생성 비활성화
- validate: 스키마가 엔티티와 일치하는지 검증
- update: 기존 스키마를 업데이트
- create: 기존 스키마를 삭제하고 새로 생성
- create-drop: 종료 시 스키마 삭제
- spring.jpa.properties.hibernate.format_sql=true
- SQL 쿼리를 보기 쉽게 포맷팅하여 출력 -> 실행되는 SQL이 가독성 있게 정렬
- logging.level.org.hibernate.SQL=debug
- Hibernate에서 생성되고 실행되는 SQL 쿼리를 로그에 출력 -> SQL 쿼리 확인 가능. show-sql과 비슷하지만, 로그 파일에도 저장될 수 있음.
- logging.level.org.hibernate.orm.jdbc.bind=trace
- SQL 쿼리에 바인딩되는 파라미터 값을 로그에 출력 -> 쿼리에서 실제 값이 어떤 형태로 바인딩되는지 확인할 수 있음.
- SELECT * FROM users WHERE name = ? 대신 SELECT * FROM users WHERE name = 'John'처럼 값이 표시
5. 외부 라이브러리 추가 (build.gradle)
개발의 편리성을 위해 쿼리 파라미터를 로그로 남기는 외부라이브러리를 추가한다.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
※ 시스템 자원을 사용하므로, 개발 단계에서는 편하게 사용해지만 운영시스템에 적용하려면 꼭 성능테스트를 하고 사용해야 한다.
'💻 뚝딱뚝딱 > 북북클럽' 카테고리의 다른 글
[개발일지#005] 좋아요 도메인 개발 및 테스트 (0) | 2025.01.20 |
---|---|
[개발일지#004] 팔로우 도메인 개발 및 테스트 (0) | 2025.01.20 |
[개발일지#003] 타임라인 도메인 개발 및 테스트 (0) | 2025.01.20 |
[개발일지#002] 회원 도메인 개발 및 테스트 (0) | 2025.01.16 |
[개발일지#001] 엔터티 설계 및 개발 (0) | 2025.01.06 |