IDE : Intelij, VSCode
DB : MariaDB
Tech : Thymeleaf, JPA, Hibernate
MariaDB 설치
와 워크벤치랑 오라클보다가 MariaDB보니까 눈이 트인다.. 디자인 깔끔
java의 long에 해당하는 데이터 유형이 bigint라서 no는 bigint로 설정, default는 AI로 해야 저장됨
ORM(Object Relational Mapping) : 클래스만 이용해서 DB에 접근할 수 있는 기술
→ 쿼리 없이 클래스만 정의하면 데이터 조회가 가능
jpa가 자바에서 ORM을 정의한 기술
사용할 ORM 프레임워크 : 하이버네이트(Hibernate)
<MariaDB와 연결하기>
1. jpa dependency 추가
스프링부트에서 버전 관리를 해주기 때문에 <version> 삭제 가능
2. mariadb dependency 추가
mariadb는 스프링부트에서 관리해주는 프로젝트가 아니기 때문에 <version> 삭제 x
3. 구글링 시 나오는 정보 application.properties에 복붙(https://springframework.guru/configuring-spring-boot-for-mariadb/)
강의에서는 이 페이지가서 했는데 구글링했을 때 뜨는 블로그에 많이 나와있음
db명, id, pw 설정 맨 마지막 ddl은 삭제 (안전성)
spring.datasource.url=jdbc:mariadb://localhost:3306/springbootdb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.hibernate.ddl-auto=create-drop
<Board 테이블과 연결>
1. Board.java
package com.javalab.myhome.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Data;
@Entity
@Data
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
}
@Entity : DB연동을 위한 Model 클래스 임을 명시
@Data : 자동 getter/setter
@Id : PK임을 알려주기 위함
@GeneratedValue : AI임을 알려주기 위함(identity가 제일 일반적)
2. BoardRepository.java (interface)
package com.javalab.myhome.repository;
import org.springframework.data.jpa.repository.JpaRepository;
public interface BoardRepository extends JpaRepository<Board, Long> {
}
3. BoardController
@Controller
@RequestMapping("/board")
public class BoardController {
@Autowired
private BoardRepository boardRepository;
@GetMapping("/list")
public String list(Model model){
List<Board> boards = boardRepository.findAll();
model.addAttribute("boards", boards);
return "board/list";
}
}
4. list.html에서 조회
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="fragments/common :: head('게시판')">
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top" th:replace="fragments/common :: menu('board')">
</nav>
<div class=" container">
<h2>게시판</h2>
<div>총 건수 : <span th:text="${#lists.size(boards)}"></span></div>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">제목</th>
<th scope="col">작성자</th>
</tr>
</thead>
<tbody>
<tr th:each="board : ${boards}">
<td th:text="${board.id}">Mark</td>
<td th:text="${board.title}">Otto</td>
<td>홍길동</td>
<tr>
</tbody>
</table>
<div class="text-end">
<button type="button" class="btn btn-primary ">쓰기</button>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.min.js"
integrity="sha384-BBtl+eGJRgqQAUMxJ7pMwbEyER4l1g+O15P+16Ep7Q9Q+zqX6gSbd85u4mG4QzX+"
crossorigin="anonymous"></script>
</body>
</html>
'온라인 강좌 > 유튜브 강의' 카테고리의 다른 글
Spring Boot 9. Spring Security를 이용한 로그인 처리 (0) | 2024.02.19 |
---|---|
Spring Boot 8. JPA를 이용한 페이지 처리 및 검색 (0) | 2024.02.19 |
Spring Boot 7. JPA를 이용한 RestfulAPI 작성 (0) | 2024.02.18 |
Spring Boot 6. thymeleaf에서 form 전송하기 (0) | 2024.02.17 |
도커 한방에 정리🐳 (모든 개발자들이 배워보고 싶어 하는 툴!) + 실습 (0) | 2023.06.26 |