[Spring Boot] 스프링부트 (IntelliJ) 31

[Spring boot] web.xml

web.xml의 역할 1. Servletcontext의 초기 파라미터 생성 2. Session의 유효시간 설정 3. Servlet/JSP에 대한 정의 4. Servlet/JSP 매핑 5. Mime Type 매핑 6. Welcome File list 설정 7. Error Pages 처리 8. 리스너/필터 설정 9. 보안 설정 성이 있다고 가정해보자 web.xml은 문지기라고 한다. 1. Servletcontext의 초기 파라미터 생성 - 초기 파라미터는 '암구호'라고 생각한다 - 문으로 들어온 사람은 암구호를 알겠지만 벽을 넘어온 사람은 모른다. 2. Session의 유효시간 설정 - 인증을 하고 성에 있을 수 있는 시간을 정해주고 들여보내 주는 것 - 정해진 시간이 지나면 추방당함 - 세션을 초기화하려면..

[Spring boot]Socket(소켓), http통신, 웹서버, 톰켓 쉽게 이해하기

Socket(소켓) : 운영체제가 가지고 있는 것 소켓통신 A와 B가 채팅을 하려고 한다. A가 5000번 소켓을 오픈한다. -> 5000번은 연결용도의 소켓이다. B와 연결이 되면 5000번은 닫히고 예를들어 5001번 소켓으로 연결되어 채팅를 한다. 5001번을 만들 때는 새로운 스레드를 만듬 5000번 - 메인스레드로 연결만 해주는 기능 소켓통신의 장점 연결이 끊어지지 않지만 부하가 크다. 스레드를 이용하면 time slice를 통해서 동시동작 처럼 보이게 시간을 쪼개서 동작시킬 수 있다. http통신 - 문서를 전달하는 통신 - http 확장자로 만들어진 문서를 필요한 사람에게 제공 - statless 방식 사용 - 한 소켓으로 명령을 수행하고 끊어버림 - 전에 통신했던 사람인지 인식하지 못함 웹..

[JPA] ORM

ORM (Object Relational Mapping) 자바와 DB의 데이터 타입이 다름 자바는 보통 vo에 데이터에 있는 데이터를 자바에 '모델링' 한다고 함 어플리케이션과 데이터베이스 연결 시 SQL 언어가 아닌 어플리케이션 개발 언어로 데이터베이스를 접근할 수 있게 해주는 툴 데이터 전송 및 받는 과정 자바에서 데이터 베이스에 연결 요청을 해서 승인을 받으면 세션을 열어줌 자바는 커넥터로 쿼리 전송 쿼리를 돌린 데이터 베이스는 데이터 타입을 자바로 보내줌 자바가 알아볼 수 있는 데이터 타입으로 바꿔주는 것 까지의 모든 과정을 JPA를 사용하면 단순한 함수로 처리해줌

junit을 이용한 테스트2

given, when, then 주석 틀 이용하기 @Test void join(){ //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberService.join(member); //then Member findeMember = memberService.findOne(saveId).get(); Assertions.assertThat(member.getName()).isEqualTo(findMember.getName()); } 이런식으로 사용하면 보기 편하다. void duplicateJoin(){ // 중복을 일부러 만들어 테스트해보는 메서드 //given Member member1 = new Mem..

junit을 이용한 테스트 기본 동작

junit은 자바 언어에서 주로 사용되는 테스트하기 위한 프레임워크이다. 내가 test 폴더 안에서 내가 테스트 하고 싶은 것들이 잘 돌아가는지 테스트를 해볼 수 있다. 메서드마다 @Test 어노테이션을 사용하여 만들고 Assertions.assertThat(A).isEqualTo(B); 를 이용하면 A와 B의 결과값이 같은지 알 수 있다. 그리고 Assertions를 static으로 올리면 assertThat을 바로 사용할 수 있다. 하지만 여러 개의 메서드를 한 번에 테스트를 하다보면 오류가 발생한다. 다른 메서드지만 같은 값들이 정의되는 경우 등 겹치는 상황이 있을 수 있기 때문에 메서드가 테스트가 완료되고 나서 해당 메서드들의 공용데이터나 저장소 을 지워주는 역할이 필요하다. 일단 테스트 파일 말..

로깅이란?

로깅이란? @Slf4j @slf4j로 서버에서 일어나는 일들을 기록하는 어노테이션이다. 코드에서 System.out.println으로 결과를 확인 하는 것은 서버에 큰 무리를 준다고 한다. 로깅을 실제 코드에서 적용해보면 이렇게 log.info();로 사용할 수 있다. 결과값은 아래 사진처럼 기존에 toString형식으로만 나오는게 아니라 어디서 실행됐고 언제 실행됐는지 볼 수 있다.

Lombok(롬복) 사용하기 (리팩토링)

DTO를 작성할 때 getter, setter, 생성자, tostring 등 쓸일이 많다. 하지만 여러 개의 DTO를 작성할 때마다 작성하기엔 시간이 오래걸린다. 물론 eclipse로 쓸때는 단축키로 빨리 칠 수는 있지만 롬복의 어노테이션을 사용하면 더 빠르게 작성하고, 유지보수성도 올라간다. 필드부만 입력하면 나머지는 자동으로 작성해주기 때문에 수정사항이 있더라도 필드부만 고쳐주면 나머지는 자동으로 고쳐지기 때문에 편리하다. 리팩토링이란? 기존의 코드를 개선하여 재구성하는 것을 의미함 build.gradle 파일의 dependencies에 드래그 친 부분을 추가해준다. 그 후 우측 상단에 gradle 새로고침 버튼(load gradle change을 눌러준다. 이렇게 하고 DTO를 바꿔봤더니 이런 오류..

JPA 웹으로 연동하여 사용해보기

JPA는 지속적으로 공부해야 할 것 같아서 공부하는 것들을 그때그때 추가로 게시글을 작성할 예정이다. 스프링부트 프로젝트를 만들 때 h2를 연동했었다. src - main - resource - application.properties파일에 spring.h2.console.enabled=true 를 추가한다. 이는 h2 데이터베이스 콘솔을 활성화 하는 코드이다. http://localhost:8080/h2-console로 h2 데이터 베이스에 접속 할 수 있다. 물론 학습용이고 보안상으로는 안좋다고 한다. 서버를 실행하고 위 URL에 접속하면 이런 인터페이스가 보일텐데 위와 같이 두고 JDBC URL에다가 인텔리제이 콘솔창에서 JDBC를 검색하면 위와 같이 뜰 것이다. 해당 드래그 쳐져있는 부분과 같은 ..

JPA란?

- Java Persistence API - 자바 진영의 ORM 기술 표준 - JPA는 기존에 우리가 직접 썼던 JDBC API를 날렸던걸 대신 사용하여 데이터를 주고받는다. API - Application Programming interface 정해진 인터페이스로 프로그래밍하여 프로그램을 만들 수 있는 도구 ORM이란? - Object-relational mapping (객체 관계 매핑) - 객체는 객체대로 설계 - 관계형 데이터베이스는 관계형 데이터베이스대로 설계 - ORM 프레임워크가 중간에서 매핑 - 대중적인 언어에는 대부분 ORM 기술이 존재 JPA를 사용하는 이유 1. 생산성이 좋아진다. - 저장 : jpa.persist(member) - 조회 : Member member = jpa.find(..