2021년 12월 10일 금요일

Spring Data JPA를 이용한 CRUD 예제, JPA HelloWorld, 자바스프링JPA동영상교육 , JAVA교육, 스프링동영상, 자바교육, 스프링학원, JAVA학원

 





https://www.youtube.com/watch?v=K5R8FOYo34I&list=PLxU-iZCqT52Bihgf3v1bg5xEYeCwFQ_Zz&index=9 



Spring Data JPA를 이용한 CRUD 예제


  • 이전의 예제를 Spring Data JPA를 이용한 형태로 변형하여 작성해 보자.      
  • 간단히 Spring Data JPA 구조, 기본적인 CRUD인 경우 쿼리를 직접 만들지 않아도 된다는 것만 확인하자.


마리아DB는 아래 URL을 참조하여 설치하자.

http://ojc.asia/bbs/board.php?bo_table=LecSpring&wr_id=524

 

 STS에서 File -> New -> Project -> Spring Starter Project

Name : springjpa, Package name : jpa

 다음화면에서 SQL-> JPA, MySQL 선택



src/main/resources/data.sql(파일 속성에서 text encoding을 UTF-8로)

insert into emp(ename) values ('1길동');

insert into emp(ename) values ('2길동');

insert into emp(ename) values ('3길동');


Spring Data JPA는 테이블을 자동으로 생성하므로 이전 예제에서 작성한 schema.sql은 필요 없다.


src/main/resources/application.properties(파일 속성에서 text encoding을 UTF-8로)

spring.datasource.platform=mysql

spring.datasource.url=jdbc:mysql://localhost/emp2?createDatabaseIfNotExist=true

spring.datasource.username=root

spring.datasource.password=1111

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.sql-script-encoding=UTF-8


# 자동으로 DDL을 만들어 테이블 생성

spring.jpa.hibernate.ddl-auto=create

# 실행되는 SQL문을 로그에서 보이도록

spring.jpa.show-sql=true


도메인 클래스(Emp.java) – 테이블구조와 동일하다.

package jpa.domain;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

@Entity

public class Emp {

@Id               //PK임을 지정

@GeneratedValue  //자동증분 칼럼

private Long empno;

//@Column 어노테이션이없더라도 테이블 칼럼명과 자동 매핑

private String ename;

public Emp() { }

        public Emp(String ename) { this.ename = ename; }

public Emp(Long empno, String ename) { this.empno = empno; this.ename = ename; } public Long getEmpno() { return empno; }

public void setEmpno(Long empno) { this.empno = empno; }

public String getEname() { return ename; }

public void setEname(String ename) { this.ename = ename; }

public String toString() { return "[empno=" + empno +",ename=" + ename + "]";}

}


Repository 인터페이스(EmpRepository.java) – 영속성 서비스용 인터페이스

package jpa.repository;


import org.springframework.data.jpa.repository.JpaRepository;


import jpa.domain.Emp;


/*

 * JpaRepository에는 기본적인 CRUD(findAll, findOne, save, delete, deleteAll) 메소드가

 * 정의되어 있으며 이를 상속한 인터페이스를 만듦으로써 구현클래스 없이 레포지터리 구성이 가능하다. 제너릭으로 도메인 클래스와 키칼럼(ID칼럼)의 타입을 기술하면 된다.  

 */

public interface EmpRepository extends JpaRepository<Emp, Long> {   }


스프링 부트 메인(SpringjpaApplication.java) 

package jpa;


import java.util.List;


import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.CommandLineRunner;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;


import jpa.domain.Emp;

import jpa.repository.EmpRepository;


@SpringBootApplication

public class SpringjpaApplication implements CommandLineRunner {


public static void main(String[] args) {

SpringApplication.run(SpringjpaApplication.class, args); }


@Autowired

EmpRepository empRepository;


public void run(String...args) {

//전체 사원 SELECT

List<Emp> emps = empRepository.findAll();

for(Emp e : emps) { System.out.println(e); }

System.out.println("---------------------");


//2번 사원 SELECT

Emp e = empRepository.findOne(2L);

System.out.println(e);

                               System.out.println("---------------------2번사원 SELECT");


//3번 사원 DELETE

empRepository.delete(3L);

emps = empRepository.findAll();

for(Emp e1 : emps) { System.out.println(e1); }

                               System.out.println("---------------------3번 DELETE후");


//4번 사원 INSERT

e = empRepository.save(new Emp(4L, "4길동"));

emps = empRepository.findAll();

for(Emp e1 : emps) { System.out.println(e1); }

                               System.out.println("---------------------4번 INSERT후");

//'5길동' 사원 INSERT

Emp e5 = new Emp(“5길동”);

e = empRepository.save(e5);


emps = empRepository.findAll();

for(Emp e1 : emps) {

System.out.println(e1);

}

System.out.println("---------------------5번 INSERT후");


                //'5길동' 사원 이름 수정

e = empRepository.findOne(5L);

e.setEname("수정된5길동");

empRepository.save(e);

emps = empRepository.findAll();

for(Emp e1 : emps) {

System.out.println(e1);

}

System.out.println("---------------------5번 수정후");

}


}



#JPA, #JPA교육, #스프링부트, #스프링CRUD예제, #마리아DB, #스프링교육, #스프링동영상, #자바교육, #자바학원, #스프링학원, #스프링JDBC,

JPA, JPA교육, 스프링부트, 스프링CRUD예제, 마리아DB, 스프링교육, 스프링동영상, 자바교육, 자바학원, 스프링학원, 스프링JDBC

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...