Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
title샘플데이터준비

주소 테이블 생성

Select 구문을 익히기전에 JPA를 통해 테이블을 생성하고 샘플 데이터를 입력하겠습니다.


 어플리케이션에서는 데이터모델뿐 아니라 JSON유틸리티/리퀘스트유틸/라우터처리 등

여러가지 성격이 다른 클래스를 다루게 됩니다. 여기서는 data모듈하위에 데이터베이스에

관련된 테이블의 정의를 집합하도록 하겠습니다. 


JPA-주소테이블

Code Block
languagejava
themeEmacs
@Entity
public class Address {
	@Id
    @GeneratedValue
    @Column(name = "ADDRESS_ID")
    private Integer id;
	
	private String name;	
	private String phoneNbr;	
	private String address;	
	private String sex;	
	private int	   age;	
	//getter,setter 생략	
}


SQL-주소테이블

Code Block
languagesql
themeEmacs
CREATE TABLE `address` (
  `address_id` int(11) NOT NULL AUTO_INCREMENT,
  `address` varchar(255) DEFAULT NULL,
  `age` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `phone_nbr` varchar(255) DEFAULT NULL,
  `sex` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`address_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


JPA-주소 데이터 입력

Code Block
languagejava
themeEmacs
package com.example.demo.data;

import org.springframework.data.repository.CrudRepository;

public interface AddressRepo extends CrudRepository<Address, Long>{

}
//사용예
	@Autowired
	private AddressRepo addressRepo;

	public void InsertAddressData(){		
		for(int i=0; i<100;i++) {
			Address address = new Address();
			address.setAge(i % 50 + 1);
			address.setAddress(String.format("영등포 %d", i+1));
			address.setPhoneNbr(String.format("010-3333-1%04d", i));			
			if( i%2 == 0 ) {
				address.setName(String.format("민수%d", i+1));
				address.setSex("남");				
			}else {
				address.setName(String.format("영희%d", i+1));
				address.setSex("여");				
			}			
			addressRepo.save(address);			
		}		
	}

JPA에서는, SQL문을 직접사용하여 Insert를 하지 않습니다. JPA로 작성된 데이터모델에

Insert를 하기위해서는, CrusRepository 인터페이스를 작성후, 관련 함수를 사용하는것만으로

실제 데이터베이스 테이블에 데이터를 추가하는것과  동일한 효과를 낼수 있습니다.


SQL-주소 데이터 입력

No Format
Hibernate: 
    /* insert com.example.demo.data.Address
        */ insert 
        into
            address
            (address, age, name, phone_nbr, sex) 
        values
            (?, ?, ?, ?, ?)

실제 위와같은 SQL문을 실행하여 실제 데이터베이스에 입력을 하게 됩니다.

JDBC를 통해 SQL문을 어플리케이션에서 직접 제어한다고 했으면 위 구문에서 각 인자값을 전달하는

함수를 제작하였을것입니다.




SELECT와 FROM

전체선택


SQLJPA

Image Modified

addressRepo.findAll();



WHERE

SQLJPA

Image Added

public interface AddressRepo extends CrudRepository<Address, Long>{
List<Address> findBySex(String sex);
}

addressRepo.findBySex("여");