My footsteps
김영한 '스프링 입문' / 4 본문
@Transactional : 테스트 케이스에 이어노테이션이 있으면 테스트 완료후에 항상 롤백을해서 DB에 데이터가 남지 않으므로 다음테스트에 영향을 주지않음
단위테스트 : 자바코드만 실행해보는거
통합테스트 : 스프링 컨테이너랑 디비까지연동해서 테스트해보는거
* 순수한 단위테스트가 훨씬 더 좋은거다
jdbcTemplate
// jdbc템플릿 사용방법(레퍼지토리에 임플리먼츠 받고)
private final JdbcTemplate jdbcTemplate;
@Autowired
public JdbcTemplateMemberRepository(DataSource dataSource){
jdbcTemplate = new JdbcTemplate(dataSource);
}
테스트케이스 잘작성하는게 굉장히 중요하다..
JPA
jpa를 사용하면 기본적인 SQL도 jpa가 짜주기때문에 그런것들은 신경을 안써도 돼서 좀더 객체지향적으로 개발을 할수있게 해준다
< jpa 설치법 >
build.gradle에 이한줄 추가하고 그래들 재실행
어플리케이션 프로퍼티스에
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
이렇게 적어주구,하이버네이트 라이브러리 추가되었는지 확인
jpa는 인터페이스이고 구현체는 하이버네이트이다
DB가 id를 자동생성해주는걸 아이덴티티 라고 한다
엔티티에 @Entity @Id @GeneratedValue(strategy = GenerationType.IDENTiTY) 이렇게 어노테이션 달아주면 jpa가 동작할수 있다
jpa는 entitymanager로 동작한다
public Optional<Member> findByName(String name) {
List<Member> result = em.createQuery("select m from Member m where m.name = :name",Member.class)
.setParameter("name",name) // 쿼리의 name 매개변수에 전달된 이름 설정
.getResultList(); // 쿼리를 실행하고 결과를 리스트로 받기
return result.stream().findAny(); //옵셔널로 반환
}
PK를 사용하지 않는거는 JPQL을 사용함
'Develop > 곤부📙' 카테고리의 다른 글
JavaScript / 1 (0) | 2023.10.06 |
---|---|
김영한 '스프링 입문' / 5 (0) | 2023.10.05 |
김영한 '스프링 입문' / 3 (0) | 2023.09.30 |
게시판 만들기 (0) | 2023.09.25 |
김영한 '스프링 입문' / 2 (0) | 2023.09.14 |