## 반복주기 3 학습 목표
* 데이터베이스에 사용자 데이터 추가
* 개인정보 수정 기능 구현
* 질문하기, 질문목록 기능 구현
## 강의 순서
* 3-1. QnA HTML 템플릿, H2 데이터베이스 설치, 설정, 관리를 확인
* 3-2. 자바 객체와 테이블 매핑, 회원가입 기능 구현
* 3-3. 개인정보 수정 기능 구현
* 3-4. 질문하기, 질문목록 기능 구현
* 3-5. 원격 서버에 소스 코드 배포
* 연습2. vi 연습하기
MAVEN 에서 spring boot jpa 검색
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-data-jpa
User 클래스가 데이터베이스와 연결시켜주는 것이라는 것을 인식시켜주기 위해서
@Entity 어노테이션 추가
@Id 는 primary key 라는 것을 인식
@GeneratedValue 자동 증가 auto_increment
package net.slipp.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
//널 방지
@Column(nullable=false, length=20)
private String userId;
private String name;
private String email;
private String password;
public User() {
}
public User(String userId, String name, String email, String password) {
super();
this.userId = userId;
this.name = name;
this.email = email;
this.password = password;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", userId=" + userId + ", name=" + name + ", email=" + email + ", password="
+ password + "]";
}
}
spring boot h2 database 구글링
https://stackoverflow.com/questions/24655684/spring-boot-default-h2-jdbc-connection-and-h2-console
|
(Spring Boot + Spring Data JPA + H2)
spring.datasource.url=jdbc:h2:~/demo2;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
|
다음과 같이 인터페이스 설정후 @Autowired 하면 자동으로
스프링 부트에서
userRepository.save(user); 명렁어로 데이 터 저장 및
userRepository.findAll() 명령어로 데이터 목록을 가져 올 수 있다.
interface UserRepository
package net.slipp.domain;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository{
}
class UserController
package net.slipp.web;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import net.slipp.domain.User;
import net.slipp.domain.UserRepository;
@Controller
@RequestMapping("/user/*")
public class UserController {
private static final Logger log = LoggerFactory.getLogger(UserController.class);
@Autowired
private UserRepository userRepository;
@PostMapping("create")
public String create(User user){
log.info("create : {}", user.toString());
// jpa h2 로 자동으로 인클로드 된다.
userRepository.save(user);
return "redirect:list";
}
@GetMapping("list")
public String list(Model model){
// userRepository.findAll() 목록 가져오기
model.addAttribute("users", userRepository.findAll());
return "list";
}
}
댓글 ( 5)
댓글 남기기