전체 글

    영속성 컨텍스트 (persistence Context)

    JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 ( Object Relational Mapping) 영속성 컨텍스트 엔티티 매니저 팩토리와 엔티티 매니저 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 "엔티티를영구 저장하는 환경"이라는 뜻 EntityManager.persist(entity); 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 형태 영속 (managed) 영속성 컨텍스트에 관리되는 상태 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) 삭제된 상태 엔티티 생명주기 code // ..

    JPA 구동방식 및 CRUD

    JPA 구동방식 회원 Entity를 활용한 CRUD 더보기 회원 Entity 생성 package hellojpa; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Member { @Id private Long id; private String name; //Getter, Setter … public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 회원 ..

    SpringBoot dependency 버전 설정시 참고사항

    Spring 공식 홈페이지에서 SpringBoot tap에 LEARN을 보면 해당 버전에 필요한 Documentation 정보가 있다. Spring Boot Spring Boot Commercial support Business support from Spring experts during the OSS timeline, plus extended support after OSS End-Of-Life. Publicly available releases for critical bugfixes and security issues when requested by customers. spring.io 위 Reference Doc에서 해당 부트 버전에 적합한 버전정보나 사용법이 있으니 참조하자.

    JPA 개요

    JPA란? Java Persistence API 자바 진영의 ORM 기술 표준 ORM? Object-relational mapping (객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 대중적인 언어에는 대부분 ORM 기술이 존재 JPA의 장점 SQL 중심적인 개발에서 객체 중심으로 개발 생산성 유지보수 패러다임의 불일치 해결 성능 데이터 접근 추상화와 벤더 독립성 (Mysql이나 Oracle등 DB변경에서 자유로움) 표준 목표 - 객체와 테이블 설계 매핑 객체와 테이블을 제대로 설계하고 매핑하는 방법 기본 키와 외래 키 매핑 1:N, N:1, 1:1, N:M 매핑 목표 - JPA 내부 동작 방식 이해 JPA의 내부 동작 방식을 이..

    [토비의 스프링] 2.6 테스트 정리

    2장은 테스트의 필요성과 작성 방법에 대해 다뤘다. 테스트는 자동화돼야 하고, 빠르게 실행할 수 있어야 한다. main() 테스트 대신 JUnit 프레임워크를 이용한 테스트 작성이 편리하다. 테스트 결과는 일관성이 있어야 한다. 코드의 변경 없이 환경이나 테스트 실행 순서에 따라서 결과가 달라지면 안 된다. 테스트는 포괄적으로 작성해야 한다. 충분한 검증을 하지 않는 테스트는 없는 것보다 나쁠 수 있다. 코드 작성과 테스트 수행의 간격이 짧을수록 효과적이다. 테스트를 먼저 만들고 테스트를 성공시키는 코드를 만들어가는 테스트 주도 개발 방법(TDD)도 유용하다. 테스트 코드도 애플리케이션 코드와 마찬가지로 적절한 리팩토링이 필요하다. @BeforeAll, @AfterAll를 사용해서 테스트 메소드들의 공통..

    [토비의 스프링] 2.5 학습 테스트로 배우는 스프링

    학습 테스트란? 자신이 만들지 않은 프레임워크나 다른 개발팀에서 만들어서 제공한 라이브러리 등에 대해서도 테스트를 작성한다. 이런 테스트를 학습 테스트 (learning test)라고 한다. 학습 테스트의 목적은 자신이 사용할 API나 프레임워크의 기능을 테스트로 보면서 사용 방법을 익히려는 것이다. 프레임워크 기능에 대한 검증이 아닌 자신이 만들려는 기술이나 기능에 이해와 사용방법을 위한 검증이 목적이다. 학습 테스트의 장점 다양한 조건에 따른 기능을 손쉽게 확인해볼 수 있다. 학습 테스트 코드를 개발 중에 참고할 수 있다. 프레임워크나 제품을 업그레이드할 때 호환성 검증을 도와준다. 테스트 작성에 대한 좋은 훈련이 된다. 새로운 기술을 공부하는 과정이 즐거워진다. 학습 테스트 예제 JUnit 테스트 ..