자바에만 상속의 개념이 있고, RDBMS에는 상속의 개념이 없다. 이를 해결하기 위해 3가지 방법이 있다. 1.joined 2.singletable 3.tableperclass (거의 사용안함) @Inheritance(strategy = InheritanceType.JOINED) joined가 디폴트, joined에서 부모엔티티에서 @DiscriminatorColumn(name = "") // Dtype이 default 자식엔티티에서 @DiscriminatorValue("") // 컬럼에서 나타낼 값을 쓰면 된다. 부모엔티티에서 @Inheritance(strategy = InheritanceType.JOINED) 추가 abstract 붙이기 상속관계에서는 @Entity를 붙여주어야 한다. Employee..
* 페이징 SuperCarDAO.java alt+enter > inject language > jpql 엔터 > 쌍따음표안에서 색깔 표시 가능 정렬을 해야 최신순으로 나옴. SuperCarTest.java (1, 10) > 1번부터 10개 뽑기(1페이지) (10, 10) > 10번부터 10개 뽑기(2페이지) * 수정(벌크연산) 하나만 수정할 때는 setter를 쓰면 되지만, 한번에 여러 개 수정할 때, ex) 자동차 금액 전체 10% 인상, 벌크 연산을 사용해야 한다. 벌크연산 : 영속성 컨텍스트를 무시하고 SQL 반영된다. 영속성 컨텍스트와의 불일치(디비만 반영된 상태) 무조건 영속성 컨텍스트를 비워주고 벌크연산을 해야 한다!! SuperCarDAO.java executeUpdate : insert, ..
entity manager : entity 관리 요청 하나당 entity를 만들어줌. 요청2개 -> entity 2개 만듦. 각각의 entity가 jdbc를 쓴다. jpa의 구현체가 hibernate > hibernate는 sqlsession 사용 > sqlsession에서는 jdbc를 사용 ! open session은 쓰면 사용자가 선택한 메소드에 따라서 select ~ delete까지 메소드를 적절하게 써준다. if) select 사용 시, jdbc를 통해서 preparestatement로 execute가 될 것임. exectuequery, executeupdate : 알맞는 메소드 진행될 것임. entity manager는 persistenceContext 영역을 사용함. persistenceCon..
▶ JPQL 한 개의 데이터를 조회할 때에는 JPA가 find()를 제공하지만 전체를 조회할 때에는 JPA가 제공하는 JPQL을 사용해야 한다. SQL문 뒤에는 결과 중 한 개 행에 대한 resultType을 작성해준다. 여러개 행을 가져올 때에는 getResultList()를 사용한다. ▶ JPQL 주의사항 1.엔티티명과 필드명은 대소문자를 구분한다. 2.JPQL 키워드는 대소문자를 구분하지 않는다. 3.JPQL에서 사용하는 테이블명은 클래스명이 아닌 엔티티명이다. 4.엔티티의 Alias는 필수로 작성해야 한다. 쿼리 from절에 테이블명이 아니라 엔티티명을 쓴다. @Entity(name= "zzz") 클래스명이 아니라 zzz을 사용해야 한다. 없을 때는 클래스명으로. *파라미터 바인딩 년월일만 비교하..
인텔리제이에서 쿼리를 때리면 실제로 DB에 table이 만들어질까??? @Entity : JPA에 등록됨. entity로 인식함. (@Component는 빈객체 등록하려고 붙이는 어노테이션) *@Setter는 기본적으로 만들지 말고, 회사에 물어보자. @Table(name = "TBL_NAME") > 테이블명 쓰기, 생략하면 클래스명으로 자동으로 만들어짐. //빨간 줄 없애기 setting > inspections > jpa > Unresolved database references in annotations 체크 해제 @Id > 메소드와 필드에 사용 가능, PK설정(보통 Long) @GeneratedValue > 자동으로 값 증가(autoincrement) @Column(name = "컬럼명") > 생..
(day01 복습) JPA는 인터페이스이므로, JPA구현체는 hibernate이다. insert -> persist select -> find update -> setter delete -> remove ------------ JPA new project - 추가 해야 할 dependencies application.properties JPA는 mybatis(hikari)가 아닌 jdbc를 사용함. #oracle spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver spring.datasource.url=jdbc:p6spy:oracle:thin:@localhost:1521:XE spring.datasource.username=hr sp..
ORM(Object Relational Mapping) 객체진영과 RDB진영을 자동으로 매핑하여 구조의 불일치를 개발자 대신 해결해주는 기술의 총칭이다. 객체지향 구조에서 프로그래밍 언어를 사용하여 RDB의 데이터를 조작하는 방법이다. ORM을 사용하면 개발자가 SQL문을 직접 작성하지 않아도 RDB와 상호작용할 수 있다. JPA(Java Persistence API) (자바에 특화시켜서 ORM을 쓸 수 있게 만들어놓은 틀이 jpa이다. db와 java를 연동) ORM을 사용하기 위한 설계도(틀)이다. Java Application용 RDB 매핑 관리를 위한 인터페이스이며, DBMS 벤더사에 의존하지 않고 독립적으로 ORM을 사용할 수 있는 ORM 표준이다. 인터페이스이기 때문에 구현되어 있지 않은 틀만..