본문 바로가기
Spring

[Spring] 실습 : 스프링 데이터 JDBC 프로그램 생성

by 기록하는_사람 2022. 11. 5.

스프링 데이터 JDBC 프로그램 생성 - 프로젝트 생성

📌 프로젝트 생성

 

스프링 데이터 JDBC 프로그램 생성 -  application.properties

📌 application.properties

: 스프링 부트 프로젝트의 환경 설정용 파일.

  postgres 데이터베이스 접속에 관련된 설정함.

spring.datasource.driver-class-name JDBC 드라이버의 클래스명 지정.
spring.datasource.url 데이터베이스의 접속 URL 설정.
spring.datasource.username 데이터베이스에 접속하는 유저명 설정.
spring.datasource.password 데이터베이스에 접속하는 패스워드 설정. 
spring.datasource.diver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=password

 

스프링 데이터 JDBC 프로그램 생성 - 엔티티 생성

📌 엔티티 생성

① src/main/java 우클릭, 'com.example.demo.entity' 패키지 생성.

 com.example.demo.entity 폴더 우클릭, 'Member' 자바 클래스 생성.

③ 코드 작성.

package com.example.demo.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Member {
    @Id
    private Integer id;
    private String name;
}

 

📌 Lombok에서 제공하는 어노테이션.

@Data 전 필드에 대해 getter, setter로 액세스 가능.
hashCode(), equals(), toString() 자동 생성됨.
@NoArgsConstructor 기본 생성자 자동 생성됨.
@AllArgsConstructor 전 필드에 대해 초기값을 인수로 가지는 생성자가 자동 생성됨.

 

📌 기본 키(Primary Key)에 해당하는 필드에 @Id 어노테이션 부여. 

 

스프링 데이터 JDBC 프로그램 생성 - 리포지토리 생성

📌 리포지토리 생성

① src/main/java 우클릭, 'com.example.demo.repository' 패키지 생성.

 com.example.demo.repository폴더 우클릭, 'MemberCrudRepository' 자바 인터페이스 생성.

③ 코드 작성.

package com.example.demo.repository;

import com.example.demo.entity.Member;
import org.springframework.data.repository.CrudRepository;

public interface MemberCrudRepository extends CrudRepository<Member, Integer> {
}

 

📌 CrudRepository의 CRUD 메서드

반환형 메서드 개요
long count() 취득한 엔티티 수 반환.
void delete(Member entity) 지정한 엔티티 삭제.
void deleteAll() 리포지토리에서 관리하는 모든 엔티티 삭제.
void deleteAll(Iterable entities) 지정한 복수의 엔티티 삭제.
void deleteAll(Integer id) 지정한 ID에 해당하는 엔티티 삭제.
boolean existById(Integer id) 지정한 ID에 해당하는 엔티티 존재 여부 확인.
Iterable findAll() 모든 엔티티 반환.
iterable findAllById(Iterable ids) 지정한 복수의 ID에 해당하는 엔티티 반환.
Optional findById(Integer id) 지정한 ID에 해당하는 엔티티 반환.
Member save(Member entity) 지정한 엔티티 저장.
Iterable saveAll(Iterable entities) 지정한 모든 엔티티 저장.

 

💡 @Id 어노테이션이 부연된 필드 값이 null인 경우, save 메서드는 INSERT를 실행함. 

 

스프링 데이터 JDBC 프로그램 생성 - 클래스 생성

📌 리포지토리 생성

① 코드 작성.

package com.example.SpringdataDBCSample;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.example.demo.repository.MemberCrudRepository;
import com.example.demo.entity.Member;

@SpringBootApplication(scanBasePackages = {"com.example.demo.repository.MemberCrudRepository"})
public class SpringdataDbcSampleApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringdataDbcSampleApplication.class, args)
				.getBean(SpringdataDbcSampleApplication.class).execute();
	}

	@Autowired
	MemberCrudRepository repository;

	private void execute() {
		executeInsert();
		executeSelect();
	}

	private void executeInsert() {
		Member member = new Member(null, "jimin");
		member = repository.save(member);
		System.out.println("Insert : " + member);
	}

	private void executeSelect() {
		System.out.println("--- All Data ---");
		Iterable<Member> members = repository.findAll();
		for(Member member : members) {
			System.out.println(member);
		}
	}

}

 

'Spring' 카테고리의 다른 글

[Spring] 스프링 MVC  (0) 2022.11.15
[Spring] MVC 모델  (0) 2022.11.15
[Spring] 스프링 데이터 JDBC  (0) 2022.11.05
[Spring] SQL과 CRUD, 엔티티, 리포지토리  (0) 2022.11.05
[Spring] 데이터베이스와 테이블  (0) 2022.11.05

댓글