본문 바로가기

개발공부/웹개발

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (~100p) 스프링부트에서 JPA로 데이터베이스를 다뤄보자! ORM이란 Object Relational Mapping (객체지향매핑) MyBatis는 ORM이 아닌 SQL Mapper. ORM은 객체를 매핑하는 것이고, SQL Mapper는 쿼리를 매핑합니다. 예전 : Spring & MyBatis 최근 동향 : Spring Boot & JPA SQL에 신경써야할 것이 너무 많아짐 관계형데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰져있음. 객체지향프로그래밍은 기능과 속성을 한 곳에서 관리하는 기술. 객체를 데이터베이스에 저장하려하니 문제 발생 => 페러다임 불일치. 더이상 SQL에 종속적인 개발을 하지 않기 위해 JPA 사용 JPA는 인터페이스로서 자바 표준명세서. 인터페이스를 사용하기 위해서는 구현체가 필요.. 더보기
메세지큐란? (Message Queue) 메세지 큐란? - 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중에 하나 - 메세지 지향 미들웨어(Message Oriented Middleware:MOM)를 구현한 시스템을 의미 메세지 지향 미들웨어란? 비동기 메세지를 사용하는 응용프로그램들 사이에서 데이터를 송수신하는것. 간단한 구조에서 쓰이는 건 이상하고, 많은 데이터 통신이 이루어지는 작업이 있을때 쓰인다. 부가적인 서비스를 행할때 던져놓고 되길 기다리며 다른작업을 하기 위함이다.(비동기적) 당장 실행해서 값을 얻어야하는 서비스들 보다는 부가적인 서비스를 제공할때 쓰인다. 예를 들면 1) 이메일보내기 2) 블로그에 이미지를 올려 포스팅할때 사진을 최적화시키는 서비스 3) 대용량 배치 작업 4) 채팅 서비스 다 당장 실행되어.. 더보기
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (~77p) * 테스트 코드에 대해 공부해보기 TDD란? - 테스트가 주도하는 개발 - 테스트 코드먼저 작성하는 것 부터 시작 1. 항상 실패하는 테스트를 먼저 작성하고(RED) 2. 테스트가 통과하는 프로덕션 코드를 작성하고(GREEN) 3. 테스트가 통과하면 프로덕션 코드를 리팩토링합니다.(REFACTOR) 단위테스트란? - TDD의 첫번째 단계인 기능단위의 테스트 코드를 작성하는것을 말함 테스트코드의 작성이유? - 초기에 문제 발견하도록 도와줌 - 기능에 대한 불확실성을 감소시킬 수 있음 - 단위테스트는 시스템에 대한 실제문서를 제공함(단위테스트 자체가 문서로 사용가능) - 나중에 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인 가능 기존 기능이 잘 작동되는것을 보장해주는.. 더보기
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (~49p) - svn에서 깃으로 전환되어 가는중 - 깃에서 원격 저장소 역할을 하는 서비스 1. 깃허브 2. 깃랩 프로젝트와 깃허브를 연동 인텔리제이에서 Action 창열기 : ctrl+shift+ A => share project on github .idea 디렉토리는 커밋하지 않는다. => 인텔리제이에서 실행시 자동으로 생성되는 파일들이기 때문 .idea 폴더를 앞으로의 모든 커밋 대상에서 제외되도록 처리히는것 : .gitignore 파일 사용 .ignore 플러그인사용 - 파일 위치 자동완성 - ignore 처리 여부 확인 - 다양한 ignore파일 지원(.gitinore, .npmignore 등) 인텔리제이에서 깃 커밋 창 열기 : ctrl+ k 인텔리제이에서 생성 목록열기 : alt + insert 커밋하.. 더보기
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (~39p) 개발 일기 마냥 쓰기로 결심 - 인텔리제이 설치완료 gradle 프로젝트를 스프링부트 프로젝트로 변경 - build.gradle 파일을 수정 * Gradle 이란? : Groovy를 이용한 빌드 도구 (다른 빌드 도구들: maven(pom.xml), Ant가 있다) : 다른 빌드 도구들의 단점을 보완함 * 책에 나왔던 build.gradle buildscript { ext{ springBootVersion = '2.1.7 RELEASE' } repositories { mavenCentral() jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } // .. 더보기
[JSTL] GET, POST로 받은 파라미터 바로 사용하기 JSTL의 경우) //JSTL 사용할 수 있도록 include ${param.파라미터이름} //이렇게 사용하면됨 보통 JSP의 경우) 더보기
[자바] ip주소 구하기 & (0:0:0:0:0:0:0:1 일때 해결방법) 😏 자바에서 IP주소를 구하는 방법 String ip = request.getRemoteAddr(); 🤧하지만 이것만 쓰면 안된다~! 보통 보안 문제로 방화벽등을 거쳐 요청이나 응답이 가공되어 나가고 들어오기 때문에 getRemoteAddr()만 쓸경우 프록시 서버나 엉뚱한 ip를 얻을 수 있게됩니다. 이 문제를 해결하기 위해 등장한 것이 X-Forwarded-For 헤더 developer.mozilla.org/ko/docs/Web/HTTP/Headers/X-Forwarded-For X-Forwarded-For - HTTP | MDN X-Forwarded-For X-Forwarded-For (XFF) 헤더는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사.. 더보기
[spring] java 파일에서 화면에 alert 띄우기 😏 PrintWriter를 사용해주면된다. PrintWriter out = response.getWriter(); out.println(""); out.flush(); script 안에 하고싶은거 써주면 됨 더보기