JPA_개념 익히기(MySQL)

·2023년 1월 16일
0

JPA

목록 보기
1/1

🌿 JPA(Java Persisrence API)

🌱 ORM(sql없이 DB를 자바 객체로 매핑) 기술 표준

___🌼 한마디로 sql문장 없이 간편하게 DAO를 생성하겠다는 뜻

🌱 Persistence(영속성) :

___🌼 프로그램이 종료되더라도 사라지지 않음. 즉, 데이터를 DB에 영구저장. -> 영속성 부여

🌱 고객의 field 변경 요청사항이 들어와도 sql문을 추가해줄 필요 없이 Entity Class만 수정해주면 됨

🌿DBMS: MySQL

🌱 Oracle과 비교예시(Database방언)

비교MySQLOracle
문자형VARCHARVARCHAR2
함수SUBSTRING()SUBSTR()
페이징LIMITROWNUM

🌿환경설정

🌱 JPA Project추가

🌱 Maven Project 추가

___🌼JPA & Hibernate & log4j lib 추가

🌱 Persistence.xml : JPA가 연동할 DB정보 보유

___🌼MySQL용 property들 추가

___🌼Hibernate property 추가

🌱 src/main/java에 log4j.properties 설정

🌿Hibernate

🌱 DBMS마다 Property 설정하여 방언을 연동시켜줌

========(버전마다 차이가 있을 수 있음)========
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect " />

___🌼MySQL: org.hibernate.dialect.MySQL8Dialect

___🌼Oracle: org.hibernate.dialect.Oracle10gDialect

🌿JPA 사용방법(DTO)

🌱lombok 사용

___🌼@Entity : 테이블

___🌼@RequiredArgsConstructor : 부분생성자

  1. @NonNull설정으로 생성자에 포함할 컬럼 설정

___🌼제약조건

  1. @Id : 해당 컬럼에 pk조건
  2. @GeneratedValue(strategy = GenerationType.IDENTITY) : auto_increment. 시퀀스
  3. @Column(제약조건 = true/false) : 원하는 제약조건 추가

🌱Persistence.xml에 DTO 연결

___🌼Persistence.xml우클릭 - Synchronize Class List

___🌼 Persistence.xml에 <class>DTO클래스명</class> 추가

🌿JPA 사용방법(DAO)

🌱 EntityManagerFactory

___🌼 @Entity가 선언된 class table 생성

🌱 EntityManage

___🌼 emf에서 생성한 Entity 테이블 관리

🌱 같은 트랜잭션 내에서는 같은 Entity를 반환

🌱 EntityTransaction

___🌼 CRUD 역할을 하는 객체

___🌼 지연로딩. begin()으로 시작하고 commit()이 실행된 후 crud가 실행됨

🌱 CRUD

비교sqlJPA
insert into 테이블명(컬럼1,컬럼2,...) values(값1,값2,...)persist(객체 생성자)
select * from 테이블명DTO 변수 = em.find(DTO.calss, pk값)
update set 컬럼명=값 where 조건setXxx(값)
deleteremove()
profile
웹개발입문자

0개의 댓글