본문 바로가기

DB관련/jpa

jpa 기본 문법

1. Entity

  -1. entity의 생성 = 테이블의 생성

       -- 엔티티 이름은 @Entity @Table(name="테이블") 정할 수 있다.

       -- 엔티티 이름은 @Entitiy(name="Mebmer") 와 같이 정할 수도 있지만

       -- 정하지 않으면 클래스 이름이 Entitiy 클래스의 이름이 된다.

  -2. 칼럼값들의 생성

       --1. @Id : pk와 매칭이되는 필수 어노테이션이다.

       --2. @GeneratedValue: @Id 가 선언된 필드에 대한 값을 자동 생성한다.

             -- 자동 생성 패턴은 다음과 같이 설정이 가능하다.

                 @GeneratedValue(strategy="GenerationType.패턴")

                 -- 패턴 유형

                    1.  TABLE : db 테이블을 사용한 pk 값 생성, pk 값 생성을 위한 별도의 테이블 설정이 필요하다.

                    2. SEQUENCE : 오라클 같은 squence 지원 하는 db에서 사용하는 auto increment

                    3. IDENTITY: mysql 같은 db에서 사용하는 auto increment 

                    4. AUTO : 기본값이며, db에 맞게 자동 생성

 

 

       --3. @Temporal(TemporalType.DATE| TIME| TIMESTAMP)

             :날짜 타입의 변수에 매핑할 때 사용한다. DATE,TIME, TIMESTAMP 세가지 종류가 있다. 

              --- DATE : 날짜

              --- TIME: 시간 

              --- TIMESTAMP: 날짜 + 시간

       --4. @Column : 일반적으로 엔티티 클래스 멤버 변수와 칼럼이 다를때 사용한다.

                           --- 어노테이션을 생략하면 기본 변수 이름과 동일한 칼럼 이름에 매핑 된다. 

                           --- 속성들 

                                1. name :칼럼 이름을 지정

                                2. unique: 제약 조건 추가

                                3. insertable : 입력 sql 명령어 자동 생성시 현재 칼럼 포함 여부 

                                4. updatable : 수정 sql 명령어 자동 생성시 현재 칼럼 포함 여부

                                5. columnDefinition : 현재 칼럼 DDL 직접 설정

                                6. length : 칼럼 길이 지정 , 기본값은 255

                                7. precision : 전체 자릿수 지정

                                8. scale : 소수점 자릿수 지정

         --5. @Transient : 매핑에서 제외 시킴

 

 

2. JPA API 사용

   -- 1. Entity Manager

         -- JPA 에서 CRUD 를 처리하기 위해서 EntityManager 객체를 생성해야 된다.

         -- 그리고 이 EntityManager는 EntityManagerFactory 에서 부터 생성된다. 

         -- EntityMangerFactory는 Persistence 객체가 생성한다.

         -- 이때 Persistence 객체는 persistence-unit의 정보가 있는 설정을 참조한다. 

  --2. api 종류

      --1. persist : 엔티티를 만든다. (=INSERT)

      --2. merge : (=UPDATE)

      --3. remove: (=DELETE)

      --4. find(엔티티 클래스 , 엔티티의 pk):  (=SELECT ONE)

     --1. createQuery(쿼리문, 리스트의 결과를 담을 객체): JPQL 에 해당하는 엔티티 목록의 검색 (=SELECT LIST)

 

3. JPQL  -- JPA 도 sql문이 있다.

   select , update , delete 문 은 있지만 insert문은 없다. 

   -1. crud

       --1. select 문

       --- select m FROM Member As m WHere m.name="이름"

       --- jpql 키워드는 대소문자를 구별하지 않는다. 

       --- 하지만 여기서 Memeber와 같은 엔티티 클래스들은 대소문자를 구별한다.

       -- 엔티티 클래스에 대한 별칭이 있는데 ,별칭이 필수다.

 

 

       

'DB관련 > jpa' 카테고리의 다른 글

JPA -여러가지 어노테이션  (0) 2021.04.09