분류 전체보기 (272) 썸네일형 리스트형 7월3일 서블릿 서블릿 HTML Form 데이터 전송 Request전송 Response 반환 요청 메시지는 단순문자 서블릿은 request에서 비즈니스로직 실행 , DB저장 이외에 모든 작업을 대신해준다. 서블릿 구조 -UrlPatterns(/hello)의 URL이 호출되면 서블릿코드가 실행 -HTTP 요청 정보를 편리하게 사용할수 있는 HttpServletRequest -HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse -개발자는 HTTP 스팩을 매우 편리하게 사용 HTTP 요청 , 응답 흐름 HTTP 요청시 -WAS는 Reqeust, Response 객체를 새로 만들어서 서블릿 객체 호출 -개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용 -개발자는 Respo.. 7월2일 웹서버 , 웹애플리케이션 서버 웹서버 , 웹 애플리케이셔 서버 모든것이 HTTP 웹서버 -HTTP기반으로 동작 -정적 리소스 제공 , 기타 부가기능 -정적파일 , HTML , CSS , JS , 이미지 , 영상 웹 애플리케이션 서버 (WAS _ Web Application Server) -HTTP기반으로 동작 -웹 서버 기능포함 + (정적 리소스 제공 가능) -프로그램 코드를 실행해서 애플리케이션 로직 수행 // 가장 큰 차이짐 ㄴ동작 HTML , HTML API ( JSON ) ㄴ서블릿 , JSP , 스프링 , MVC ex) tomcat , Jetty , Undertou 웹서버 , 웹 애플리케이션 서버 (WAS) 차이 -웹서버는 정적리소스 (파일), WAS는 애플리케이션 로직 -사실은 둘의 용어도 경계가 모호함 ㄴ웹서버도 프로그램을.. 쿼리 메소드 조건들 KeywordSampleJPQL snippet Distinct findDistinctByLastnameAndFirstname select distinct … where x.lastname = ?1 and x.firstname = ?2 And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2 Or findByLastnameOrFirstname … where x.lastname = ?1 or x.firstname = ?2 Is, Equals findByFirstname,findByFirstnameIs,findByFirstnameEquals … where x.firstname = ?1 Between findByStartDateBe.. 3월 24일 SpringDataJPA 페이징과 정렬 page 와 Pageable 을 사용 @GetMapping("/members") public Page list(Pageable pageable){ Page page = memberRepository.findAll(pageable); return page; } 위 같이 page 형태로 반환받고 pageable을 매개변수로 사용하면 스프링이 페이징 해준다. pageable 은 인터페이스 , page는 결과 정보이다. pageable이 있으면 spring이 PageRequest를 생성해서 값을 세팅해 준다. 또한 http://localhost:8080/member?page = 0 을 붙여주면 0페이지부터 가져온다 (한 페이지당 기본값 20개) http://localhost:8080/member?page=0&s.. default_batch_fetch_size 이해 default_batch_fetch_size 는 지연로딩이 작동할때 작동하는 옵션으로 Collection 형태의 필드를 fetch join으로 즉시로딩해서 가져올때 일단 toMany를 join하기 때문에 결과값이 뻥튀기 되고 중복값을 제거하기 위해서 distinct가 필요하다. 거기다 페이징도 되지않게된다. 그래서 fetch join을 하지않고 collection을 지연로딩시키게 되는데 이 지연로딩이 발생할때 그 지연로딩 필드를 가진 엔티티 list를 받아오게 될것인데 그 엔티티에 id값을 모두 가져와 한번 지연로딩할때 IN절에 그 엔티티 ID 값들을 모두 넣고 지연로딩을 하게 된다. 이 역활을 해주는게 default_batch_fetch_size 이다. 이렇게 하면 지연로딩은 발생해서 쿼리는 한번 더 .. 3월 23일 SpringDataJPA 도메인 클래스 컨버터 도메인 클래스 컨버터 간단한 조회용으로 사용 @GetMapping("members/{id}") public String findMember (@PathValiable("id") Long id){ Member member = memberRepository.findById(id).getId(); return member.getUsername(); } HTTP정보로 ID를 받아 그 ID를 엔티티로 찾아오는 로직이다. 그런데 이걸 SpringBoot 에서는 @GetMapping("/members2/{id}") public String findMember(@PathValiable("id") Member member){ return member.getUsername(); } SpringBoot에서는 HTTP로 id.. 3월 23일 SpringDataJPA Auditing Auditing 테이블을 만들때 등록일 , 수정일을 꼭 남겨주어야한다. 엔티티를 생성, 변경시 추적을 위해서 등록일, 수정일 , 등록자 , 수정자를 꼭 남겨야 한다. 순수 JPA 사용 1.시간기록데이터 엔티티 생성 @MappedSuperClass //해당 엔티티의 필드를 다른 엔티티에서 가져다 쓸수 있게 한다. @Getter public class JPABaseEntity{ @Column(updatable = false , insertable = true) // 수정 등록시 데이터 변경 여부 private LocalDateTime createdDate(); private LocalDAteTime updatedDate(); //@PrePersist 는 영속화 되기 직전 //@PostPersist 는 영속화.. 3월 23일 SpringDataJPA 사용자 정의 리포지토리 구현 사용자 정의 리포지토리 구현 (실무에서 중요) 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동생성하는 방식인데 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현해야 하는 기능이 너무 많다 다른 이유로 인터페이스와 메서드를 직접 구현하고 싶다면? -JPA를 직접사용(EntityManager) -스프링 JDBC Template 사용 -MyBatis 사용 -데이터 베이스 커넥션 직접 사용 등등 -Query DSL 사용 등 위 기능을 데이터 JPA에서 사용하고 싶을 경우 커스텀한 기능 하나마 쓰고 싶을 경우 사용자 인터페이스 인터페이스를 만든다. 1.MemberRepositoryCustom , Interface 생성 ( 기능 명시) public interface MemberR.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 34 다음 목록 더보기