-
[JPA] 기초와 매핑프로그래밍/Java 2021. 8. 20. 10:40반응형
기초 개념
@Entitiy: JPA가 관리할 객체
@Id: DB PK와 매핑할 필드
@Entity public class Member{ @Id private Long id; private String name; }
create table MEMBER
데이터베이스 방언
jpa는 특정 데이터베이스에 종속적이지 않은 기술
각각의 데이터베이스가 제공하는 sql 문법과 함수는 조금씩 다르다.
ex. VARCHAR <-> VARCHAR2, SUBSTRING<->SUBSTR
방언: sql 표준을 지키지 않거나 특정 데이터베이스만의 고유한 기능
JPA -> DIALECT(인터페이스와 같은 역할)-> MySQLDialect / OracleDialect / H2Dialect
애플리케이션 개발
- 엔티티 매니저 팩토리는 서버를 켤 때 딱 한번 생성해서 애플리케이션 전체에서 공유
- 엔티티 매니저는 쓰레드 간에 공유하면 안된다.
- JPA의 모든 데이터 변경은 트랜잭션 안에서 실행
예시 코드
public class Main { public static void main(String args[]) { // manager는 서버 킬 때 딱 한번 로딩. 그 후 꺼내서 사용한다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); // hello에 담긴 설정 정보 가지고 로딩 EntityManager em = emf.createEntityManager(); // em 생성 EntityTransaction tx = em.getTransaction(); // 트랜잭션 시작 tx.begin(); try { Member member = new Member(); member.setId(100L); member.setName("안녕하세요"); em.persist(member); // persist는 영구저장의 의미 tx.commit(); } catch(Exception e){ tx.rollback(); } finally { em.close(); } emf.close(); // 종료 } }
반응형'프로그래밍 > Java' 카테고리의 다른 글
[JPA] 엔티티 데이터 접근 전략 @Access (feat. 필드접근 vs 프로퍼티 접근) (0) 2021.12.28 [JPA] 영속성 관리 (영속성 컨텍스트란?) (0) 2021.12.28 [JAVA] 동일성과 동등성 (0) 2021.12.28 java 비동기 (0) 2021.11.22 [JPA] 필드와 컬럼 매핑 (0) 2021.08.20