스프링


## 반복주기 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.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

 

(Spring Boot + Spring Data JPA + H2)

 

 

 

 

 

 

spring.datasource.url=jdbc:h2:~/demo2;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
server.port=1111

 

 

 

 

 

 

 

 

다음과 같이 인터페이스 설정후  @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";
	}
	
}




 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

달면 삼키고 쓰면 뱉는다 , 신의나 지조를 돌보지 않고 이익만을 꾀한다는 말.

댓글 ( 5)

댓글 남기기

작성