반응형
Notice
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
- 보안
- 네트워크
- 데이터과학
- 자료구조
- 파이썬
- Yes
- 소프트웨어공학
- springboot
- 자바스크립트
- 컴퓨터비전
- 프로그래밍언어
- 데이터구조
- I'm Sorry
- 컴퓨터공학
- 알고리즘
- 웹개발
- 데이터분석
- 클라우드컴퓨팅
- 인공지능
- 네트워크보안
- 데이터베이스
- 버전관리
- 빅데이터
- 사이버보안
- 소프트웨어
- 딥러닝
- 머신러닝
- 프로그래밍
- 디자인패턴
- 컴퓨터과학
Archives
- Today
- Total
스택큐힙리스트
자바 스프링 게시판 DB 연동 본문
반응형
1. 목표
정적 게시판을 Spring Data JPA + H2(또는 MySQL) 데이터베이스와 연결해 실제 CRUD 뼈대로 업그레이드한다. 일단 H2로 빨리 확인한 뒤, 설정 몇 줄만 바꿔 MySQL·MariaDB로 옮길 수 있게 설계한다.
2. 의존성 추가
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2' // ▶ H2
// runtimeOnly 'com.mysql:mysql-connector-j' // ▶ MySQL로 바꿀 경우
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
JPA + DB 드라이버만 더해 주면 끝. 자동 설정(Autoconfigure)이 나머지를 처리해 준다.
3. DB 설정
src/main/resources/application.yml
spring:
datasource:
url: jdbc:h2:mem:testdb # ▶ H2 인메모리
driver-class-name: org.h2.Driver
username: sa
jpa:
hibernate:
ddl-auto: update # 테이블 자동 생성·수정
show-sql: true # 쿼리 콘솔 출력
# ▶ MySQL로 갈아탈 땐
# url: jdbc:mysql://localhost:3306/board?serverTimezone=Asia/Seoul
# driver-class-name: com.mysql.cj.jdbc.Driver
# username: root
# password: 비밀번호
- ddl-auto: update는 개발 단계 전용 옵션. 운영에서는 validate나 none을 추천.
- H2 콘솔은 http://localhost:8080/h2-console (JDBC URL 동일).
4. 엔티티·리포지터리
Post.java
@Entity
@Getter @Setter @NoArgsConstructor
@AllArgsConstructor
public class Post {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String writer;
@Lob // 긴 글 본문
private String content;
}
PostRepository.java
public interface PostRepository extends JpaRepository<Post, Long> { }
JPA 인터페이스 하나로 CRUD 메서드 18개가 자동 생성된다. 따로 구현 클래스가 필요 없다.
5. 서비스(선택)
규모가 커질 때 비즈니스 로직을 모아 둘 계층:
@Service
@RequiredArgsConstructor
public class PostService {
private final PostRepository repo;
public List<Post> findAll() { return repo.findAll(); }
public Post findOne(Long id) { return repo.findById(id).orElseThrow(); }
public Post save(Post post) { return repo.save(post); }
}
6. 컨트롤러 수정
@Controller
@RequiredArgsConstructor
public class PostController {
private final PostService svc;
@GetMapping("/posts")
String list(Model m) {
m.addAttribute("posts", svc.findAll());
return "posts";
}
@GetMapping("/posts/{id}")
String detail(@PathVariable Long id, Model m) {
m.addAttribute("post", svc.findOne(id));
return "post";
}
}
- 기존 List<Post> 하드코딩을 JPA 호출로 대체.
- Thymeleaf 템플릿은 어제 만든 그대로 사용한다.
7. 데이터 초기화 팁
data.sql
INSERT INTO post(title, writer, content)
VALUES ('첫 글', '관리자', 'DB 연결을 환영합니다 🎉');
애플리케이션 기동 시 자동으로 실행 → 초기 목록이 바로 표시된다.
8. MySQL·MariaDB로 전환하기
- MySQL 실행 & 스키마(board) 생성.
- application.yml에서 URL·드라이버·계정·비번만 교체.
- Gradle runtimeOnly 'com.mysql:mysql-connector-j' 주석 해제.
- ddl-auto: update가 테이블을 생성해 주면 끝!
9. 결과 확인
./gradlew bootRun
- http://localhost:8080/posts → DB의 게시글 목록
- 글 추가·수정·삭제 기능은 다음 차례에 구현 예정!
10. 오늘의 한 줄 요약
“Spring Data JPA + 드라이버 + application.yml 세 줄이면 DB 연동 완료!”
반응형
'개발' 카테고리의 다른 글
CLI Todo 앱으로 배우는 GoF 생성 패턴 5종 완전 활용 (0) | 2025.07.15 |
---|---|
자바 스프링 Spring Security 로그인·권한 관리 (0) | 2025.07.14 |
자바 스프링으로 정적 게시판 만들기 (0) | 2025.07.14 |
Spring Boot로 1분 만에 프로젝트 만들기 (3) | 2025.07.14 |
자바 스프링 개발 시작하기 - 8일차 IoC·DI와 Bean 생명주기 (0) | 2025.07.14 |
Comments