create database shop default character set utf8 collate utf8_general_ci;

MySQL로 'shop' 데이터베이스 만듦

 

한글 데이터 저장을 위해 utf8 설정했음

 

show database로 확인 가능


JPA

학습에 앞서서 영속성이란 무엇일까?

 

영속성(persistence)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 

ORM Object Relational Mapping 의 약자로 객체와 관계형 데이터베이스를 매핑해주는 것을 말함

 

보통 객체지향을 이용해서 관계형 데이터베이스를 접근할 때

데이터베이스에 넣을때 sql문을 통해 변환해서 저장하고, 또 다시 꺼내오기 위해서 복잡한 sql문을 작성함

 

이렇기 때문에 ORM 기술이 등장

 

JPA는 ORM 자바에서 제공하는 API임

- JPA를 대표적으로 구현한 것은 Hibernate, EclipseLink , DataNucleus, OpenJpa, TopLink등이 있음

 

가장 많이 사용하는것이 Hibernate(하이버네이트)

장점

1. JPA 사용하면 좀 더 객체지향적 프로그래밍 가능

2. 데이터베이스에 종속되지 않음. ex) mysql , oracle , mariadb 등등 추상화 데이터 접근이므로 언제든지 데이터베이스 변경 가능

3. sql문 직접 작성하지 않고 객체를 사용해서 동작

 

단점

1. 성능 저하

2. 높은 러닝 커브


동작은 어떻게 할까?

 

엔티티(테이블에 대응하는 클래스)

@Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 함.

DB에 TEST 테이블을 만들고 TEST.JAVA를 만들어서 @Entity 어노테이션을 붙이면 엔티티가 생성

 

Test test = new Test();
test.setTestName("개발 테스트");

EntityManger em = entityMangerFactory.createEntityManger();
EntityTransaction transaction = em.getTransaction();
transaction.begin();

em.persiste(Test);

transaction.commit();

em.close();
emf.close();

엔티티 하나 생성

엔티티 매니저 팩토리 부터 엔티티 매니저 생성

트랜잭션을 시작

생성한 상품 엔티티가 영속성 컨텍스트에 지정된 상태 persiste 부분

transaction.commit()하는 부분이 영속성 컨텍스트에 저장되는 부분, 저장된 상품이 INSERT하면서 반영됨

close()메소드를 호출해서 사용한 자원을 반환

 

중간계층 Persistance Context를 만들면 버퍼링 , 캐싱 등 기억해서 사용 가능

 

 

 

+ Recent posts