전체 글
-
스프링 데이터 Common - 2 (스프링 데이터 JPA - 5)Programming/Spring Data JPA 2021. 1. 1. 15:47
1. 커스텀 리포지토리 만들기 - 스프링 데이터 리포지토리 인터페이스에 기능을 추가하거나 기본 기능을 덮어쓸 수 있음 1) 커스텀 리포지토리 인터페이스 정의 public interface PostCustomRepository { List findMyPost(); void delete(T post); } 2) 인터페이스 구현 클래스 만들기 (기본 접미어는 Impl) public class PostCustomRepositoryImpl implements PostCustomRepository { @Autowired EntityManager entityManager; @Override public List findMyPost() { return entityManager.createQuery("SELECT p F..
-
스프링 데이터 Common - 1 (스프링 데이터 JPA - 4)Programming/Spring Data JPA 2021. 1. 1. 15:47
1. Repository - 기본적으로 제공하는 기능 테스트 @RunWith(SpringRunner.class) @DataJpaTest class PostRepositoryTest { public static final String STRING = "31"; @Autowired PostRepository postRepository; @Test @Rollback(false) public void curdRepository() { // Given Post post = new Post(); post.setTitle("Title1"); assertThat(post.getId()).isNull(); // When Post newPost = postRepository.save(post); // Then assert..
-
JPA 프로그래밍 - 2 (스프링 데이터 JPA - 3)Programming/Spring Data JPA 2021. 1. 1. 15:46
1. Entity 상태 - Transient : JPA가 모르는 상태 - Persistent : JPA가 관리중인 상태 (1차 캐시, Dirty Checking, Write Behind, ...) - save - Detached : JPA가 더이상 관리하지 않는 상태 - return 한 경우 - Removed : JPA가 관리하긴 하지만 삭제하기로 한 상태 save()를 호출한다고 바로 DB에 반영되는 것이 아님, JPA가 판단하여 DB에 반영 2. Cascade 엔티티의 상태 변화를 전파 시키는 옵션 Parent - Child 구조를 만들고 양방향 관계를 만듬 - Post.java cascade를 통해 상태 변화시 저장된 Comment에게 전파하겠다는 설정을 함 @Entity public class P..
-
JPA 프로그래밍 - 1 (스프링 데이터 JPA - 2)Programming/Spring Data JPA 2020. 4. 30. 19:03
1. 개요 (기본) - 의존성 추가 (spring data JPA와 관련된 빈들이 모두 등록됨) org.springframework.boot spring-boot-starter-data-jpa - application.properties 추가 spring.datasource.url=jdbc:postgresql://localhost:5432/springdata spring.datasource.username=hongchan spring.datasource.password=pass spring.jpa.hibernate.ddl-auto=create //update, validate // 개발할 때는 create, 이후에는 validate 사용을 권장! // update는 스키마 수정 시 지저분해질 수 있는 우..
-
관계형 데이터베이스와 ORM (스프링 데이터 JPA - 1)Programming/Spring Data JPA 2020. 4. 30. 18:26
1. JDBC - 관계형 데이터베이스와 자바의 연결 고리 - 기본적으로 자바 안에 들어있어서, 각 디비에 맞는 드라이버만 추가하면 됨 - 아래는 postgreSQL 드라이버를 의존성에 추가한 부분 org.postgresql postgresql 42.2.10 - 도커를 사용하여 디비 실행 (스프링 부트 포스팅 참고) - URL 정보, 인증 정보가 필요함 public class Application { public static void main(String[] args) throws SQLException { String url = "jdbc:postgresql://localhost:5432/springdata"; String username = "hongchan"; String password = "pas..
-
모델, 바인더, 예외 처리, 전역 컨트롤러 (스프링 MVC - 7)Programming/Spring MVC 2020. 3. 26. 21:21
1. @ModelAttribute - @Controller, @ControllerAdvice 를 사용한 클래스에서 모델 정보를 초기화 할 때 사용함 - @RequestMapping과 같이 사용하면 해당 메소드에서 리턴하는 객체를 모델에 넣어준다. (뷰는 요청 url로 찾음 - 리퀘스트 투 뷰 네임 트렌스레이터) @ModelAttribute public void categories(Model model) { model.addAttribute("categories", List.of("study", "hobby")) } @GetMapping("/events/model/test") @ModelAttribute public Event modelTest() { return new Event(); } 2. @Init..
-
핸들러 메소드 - 2 (스프링 MVC - 6)Programming/Spring MVC 2020. 3. 26. 17:47
1. @SessionAttributes - 모델 정보를 HTTP 세션에 저장해주는 애노테이션 - 이 애노테이션에 설정한 이름에 해당하는 모델 정보를 자동으로 세션에 넣어준다. - @ModelAttribute는 세션에 있는 데이터도 바인딩한다. - 여러 화면에서 사용해야 하는 객체를 공유할 때 사용함 ex) 회원 가입을 여러 창에 나누어서 할 때 - SessionStatus를 사용해서 세션 처리 완료를 알려줄 수 있다. (폼 처리가 끝나고 세션을 비울 때 사용) 2. @SessionAttribute - 해당 컨트롤러 안에서 동작하는 @SessionAttributes와는 다르게 쓰임 -> @SessionAttribute는 컨트롤러 밖 (인터셉터 또는 필터 등)에서 만들어 준 세션 데이터에 접근할 때 사용함 ..
-
핸들러 메소드 - 1 (스프링 MVC - 5)Programming/Spring MVC 2020. 3. 24. 19:17
1. 지원하는 메소드 아규먼트와 리턴 타입 주요한 아규먼트와 리턴 타입이며, 전부는 아님. 심지어 직접 커스텀하여 사용 가능 1) 핸들러 메소드 아규먼트 : 주로 요청 그 자체 또는 요청에 들어있는 정보를 받아오는데 사용한다. 요청 또는 응답 자체에 접근 가능한 API (Low Level 느낌) - WebReqeust - NativeWebRequest - HttpServletRequest, HttpServletResponse (서블릿 API) 요청 본문을 읽어옥거나, 응답 본문을 쓸 때 사용할 수 있는 API (Low Level 느낌) - InputStream, OutputStream - Reader, Writer HTTP/2 리소스 푸쉬에 사용 기존) 클라이언트가 서버에 요청 -> 서버 응답 -> 해당..