스프링부트 입문 개념정리 3 - JPA기본, AOP

Haeun Kim·2022년 5월 14일
0

spring 기본개념

목록 보기
3/3

11. 스프링 통합 테스트 - 스프링 컨테이너, DB를 모두 연결한 통합 테스트

기존의 테스트 파일에 @SpringBootTest, @Transactional 어노테이션만을 추가한다.

  • @SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행
  • @Transactional : 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백한다
    -> BeforeEach, AfterEach를 사용할 필요가 없다.
    트랜잭션이란? DB에 insert call을 하면, 커밋하기 전까진 DB에 반영되지 않는다.

12. JPA

JPA : SQL도 JPA가 직접 만들어서 실행해주는 방식. SQL보다는 객체 중심의 설계에 더 집중할 수 있어 개발 생산성을 높여준다.
ORM : Object Relational Mapping . 객체와 relational database의 테이블을 매핑한다.

  • JPA 엔티티 매핑
    @Entity 어노테이션 추가. @Id나 @Column과 같은 어노테이션을 사용하여 테이블의 컬럼값을 관리한다.
@Entity
public class Member {
 	@Id 
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	private Long id;
 	
    @Column("username")
    private String name
}
  • 리포지토리 관리
    EntityManager를 주입하여 동작시킨다.
    해당 코드를 실행하면 jpa가 insert 쿼리 진행시켜서 모든 설정을 수행한다.
 private final EntityManager em;
 public JpaMemberRepository(EntityManager em) {
 	this.em = em;
 }
 public Member save(Member member) {
 	em.persist(member);
 	return member;
 }
 
 public List<Member> findAll() {
 	return em.createQuery("select m from Member m", Member.class).getResultList();
 }

0개의 댓글