221031 (월) JPA1 - 미완
[복습]
<oBootJpa01>
application.properties = pom.xml
포트 번호
JPA MyBatis
domain = DTO
ㅣ
엔티티
(@Entity)
DI: 셋팅 작업 Injection (Annotation)
구현체 @Repository 가 스프링 컨테이너에 Bean으로 등록하고 (= DAO)
@Controller에서 @Autowired 하면 서비스랑 알아서 연결
레포지토리 선언 방법
1) 컨스트럭터 - 한 번 연결하면 바꿀 일 X.
2) 세터
JPA
@Transactional 안 쓰면 쓰지 못 함, (@Service에 거는 것 권장)
Table 명이 빠지면 객체명하고 이름이 같음 (default)
@Id : PK 설정. 없으면 테이블 취급 안 함.
저장 메소드 em.persist
조회할 때는 JPQL (em.createQuery) - Member은 테이블이 아니고 객체다.
결과를 리스트 형태로 받겠다 => .getResultList();
<oBootJpa02>
create : 초기 만들 때만 / none : 데이터 유지
@
Get : 조회
Post : 입력 조회 삭제
03.Jpa -> 성능 관리
9:35-9:50졸았다
Controller -> Service -> Repository
[찐범위] 10:38AM ~
- 회원 검색
- 회원검색 id 큰 것, 회원검색 급여 큰 것
왜 또 안되냐...
src/test/java > com.oracle.oBootJpa02 >
@SpringBootTest : 스프링 부트 띄우고 테스트 (이게 없으면 @Autowired 다 실패)
반복 가능한 테스트 지원, 각각의 테스트를 실행할 때마다 트랜잭션을 시작하고
테스트가 끝나면 트랜잭션을 강제로 롤백 (이 어노테이션이 테스트 케이스에서 사용될 때만 롤백)
oBootJpa03
야믈 (YAML)
application.yml에 이렇게 작성하고 application.properties 삭제 (대체)
server:
port : 8385
# Oracle Connect
spring:
datasource:
url: jdbc:oracle:thin:@localhost:1521/xe
username: scottjpa
password: tiger
driver-class-name: oracle.jdbc.driver.OracleDriver
# JPA Setting
jpa:
hibernate:
ddl-auto: none # none create
properties:
hibernate:
show-sql: true # System.out에 하이버네이트 실행 SQL
format_sql: true
FK가 있는 곳이 Owner다?!
하는 쪽이 Embedded
EnumType.STRING으로 해줘야 함!!!
연관관계의 주 역할을 가진 쪽이 Owner 역할을 한다.