Page History
...
Info |
---|
RDB를 조작하는 언어인 SQL문을 JPA와 연관하여 무의식중으로 사용중인SQL문 분석을 통해 다시 개념정리를 하도록 하겠습니다SQL문을 함께 정리를하였습니다. 설명을 위해 작성되는 테이블은 JPA를 이용하는 만큼, SQL문을 통해 테이블을 먼저 생성하고 DB모델을 맵핑하는 방식이아닌, 처음부터 OOP방식으로 데이터 모델을 설계하고 해당 모델이 어떠한 SQL문으로 변환이되고 사용되어지는지 확인해보도록 하겠습니다. |
SELECT 구문
주소 테이블 생성
Select 구문을 익히기전에 JPA를 통해 테이블을 생성하고 샘플 데이터를 입력하겠습니다.
어플리케이션에서는 데이터모델뿐 아니라 JSON유틸리티/리퀘스트유틸/라우터처리 등
...
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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문을 어플리케이션에서 직접 제어한다고 했으면 위 구문에서 각 인자값을 전달하는
함수를 제작하였을것입니다.
검색
데이터베이스의 핵심처리는 검색입니다. 저장되어 있는 테이블에서 필요한 데이터를 뽑아내는 것이며
...