Java Persistence API
EJB에서 구현 되었던 엔티티빈을 POJO철학을 반영하여 구현한 기술.
Persistence 란 어플리케이션의 데이터가 프로세스(JVM)보다 오래 지속 되는것을 말한다.(참고)
관계형 데이터베이스에서 받은 데이터를 Row단위로 오브젝트에 매핑 시키는 것이 ORM인데 이를 표준화 했다.
대표적으로 Hibernate가 있는데, Hibernate가 나왔기 때문에 JPA스팩이 정의된것인지 , JPA에의해서 Hibernate가 구현된것인지는 비밀.
소스로 한번 참고해보자. Spring Data JPA 로 구현한것이다.
- Entity 클래스 생성 – 클래스 이름이 테이블 이름
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//import구문은 생략 //Entity 선언 @Entity public class Car { @Id //테이블의 PK를 지정 private int carNo; @Column private String color; @Column(length=100, nullable=false) //컬럼 속성 private String onwer; public Car(){} public int getCarNo(){ return carNo; } public void setCarNo(int carNo){ this.carNo = carNo; } //getter, setter 생략 } |
2. CrudRepository를 상속 받아 구현
1 2 3 |
import org.springframework.data.repository.CrudRepository; public interface CarRepository extends CrudRepository<Article, Integer> { } |
3.실행
1 2 3 4 5 6 7 8 9 10 11 |
//설정 생략 @Resource CarRepository carRepository; @Test public void test(){ Car car = new Car(); car.setCarNo(1); car.setColor("#ffffff"); car.setOwner("Jin"); carRepository.save(car); } |
간단히 개념적인 부분만 코드로 적어본 것이다. 자세한 내용을 원한다면 http://jekalmin.tistory.com/entry/springdatajpa-%EA%B8%B0%EB%B3%B8-%EC%98%88%EC%A0%9C 를 참고
진짜 이런 설정 하다보면 그냥 PHP하고 싶을때가 많다. Laravel에서는 저런거 없이 ORM개념을 잘 구현하는거 같던데.. 시간 되면 PHP의 ORM과 Java의 ORM을 비교