백앤드/SpringBoot + Java 간간한 백앤드 예제 11

[SpringBoot + Java] 간단한 백엔드(AOP)

들어가며 - 프로젝트의 성능을 테스트 해야 할 일이 생길 때가 있다. - 가장 기초적인 방법은 모든 기능의 실행 전과 후의 시간을 구해 이들의 차이를 구하는 방법이다. - 하지만 이러한 방법은 기능이 많아 졌을 때 유지 보수 하기 어려울 뿐더러 기능과 성능 테스트 코드가 분리 되어 있지 않는다. AOP(Aspect-Oriented Programming - 핵심 비즈니스 로직을 담고 있지는 않지만 어플리케이션에 부가됨으로써 의미를 갖는 특별한 모듈 - 즉 비지니스모델에 실제로 필요한 기능은 아니지만 대부분의 기능에서 공통으로 사용 할 만한 모듈들이다. - 장점 . AOP 를 사용하면 핵심 관심 사항(로그인, 유저 조회 등등) 과 공통 관심 사항(걸리는 시간 측정 등)을 분리 할 수 있다. . 유지 보수가 ..

[SpringBoot + Java] 간단한 백엔드(SpringData JPA)

들어가며 - DB 접근을 하면 기본적으로 자주 사용하는 쿼리문이 존재한다. . 예를 들면 전체를 찾는 findAll, 저장하는 save 등등... - Spring 과 Jpa 를 함께 사용할 경우 JpaRepository 를 사용하게 되면 spring 이 해당 구현체를 자동으로 만들어 SpringBean 에 등록을 해 준다. - 개발자는 이러한 기능을 사용 하기만 하면 된다. - 이때 모든 프로젝트에서 공통적이지 않은 class 가 존재 한다. . 예를 들자면 회원 정보에서는 회원의 이름인 "name" 을 사용 하지만 도서 어플에서는 책 이름인 "Book" 을 사용 할 수도 있다. - 이러한 경우에서는 findBy~~()(ex findByName(String name))과 같은 규칙으로 이름을 설정해주면 ..

[SpringBoot + Java] 간단한 백엔드(JPA)

들어가며 - 이전에 했던 Jdbc 는 어떠한 상황에서는 개발자가 직접 SQL 문을 작성 해야 하였다. - JPA 를 사용하게 되면 Jdbc 의 장점인 반복 제거와 더불어 기본적인 SQL 도 JPA 가 만들어 제공해 준다. - 이러한 이유 덕분에 JPA 를 사용하면 SQL, data 중심의 설계에서 객체 중심의 설계로 전환이 가능 하다. JPA - JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. - 즉 실제로 구현 된 것이 아니라 구현된 class 와 맵핑을 위한 frame work 이다. - JPA 는 PK 기반이 아닌 명령어는 SQL 명령어를 작성 해 주어야 한다. - 또한 JPA 는 join 이 들어 올 때 모든 data 변..

[SpringBoot + Java] 간단한 백엔드(JDBC template)

들어가며 - 기본 Jdbc 만 가지고도 프로그램을 짤 수는 있지만 코드가 불 필요하게 길어지고 반복되는 코드가 많다. - 따라서 "Jdbc Template" 을 이용한 DB 접근 부터 시작 하도록 하겠다. - ps. "Id" 값을 따로 넣기 귀찮아서 GenerationType.IDENTITY 처리(값을 넣지 않으면 하나씩 증가 시키며 자동으로 삽입 해 줌) 하였다. JDBC template - 개발자가 Jdbc 를 직접 사용할때 발생하는 여러 반복 작업을 대신 처리 해 주는 class DataSource 주입 . Jdbc Template 는 DataSource 를 필요로 한다. . 마찬가지로 생성자를 통해 주입시켜 준다. public class JdbcTemplateMemberRepository impl..

[SpringBoot + Java] 간단한 백엔드(MySql + Spring 설정)

들어가며 - DB 를 만들었다고 해서 바로 프로젝트에 사용 할 수 있는것은 아니다. - 몇가지 설정을 통해 이 둘을 연결 해 주어야 한다. Build.gradle . 3번째 줄은 jdbc 를 이용해 DB 에 접근 하기 위해 필요한 라이브러리 이다. . 4번째 줄은 mysql 을 사용하기 위해 필요 한 라이브러리 이다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-jdbc'..

[SpringBoot + Java] 간단한 백엔드(MySql)

들어가며 - 지금까지와 같이 모든 데이터를 메모리에 저장 한다면 다시 시작 하게되면 데이터가 싹 날아가게 된다. - 즉 저장 기간이 매우 짧고 안정적이지 못하다. - 이러한 문제를 해결 하기 위해서는 DB 를 구축하여 저장 할 필요가 있다. MySql - 오픈 소스 관계형 데이터로 행과 열로 구성된 테이블에 데이터를 저장한다고 한다. - 데스크탑에 설치하여 사용 할 수도 있지만 평소에 익숙했던 VirtureBox 를 이용한 Ubuntu 에 설치 하여 사용 해 보도록 하겠다. MySql 설치(순서대로 하면 된다) - Ubuntu 서버 업데이트 $ sudo apt-get update - mysql-server 설치 . 이때 Password 를 입력 하지 않으면 자동으로 Ubuntu 서버의 Password 와..

[SpringBoot + Java] 간단한 백엔드(Spring Bean)

들어가며 - Controller 는 말 그대로 프로젝트를 컨트롤 하는 역할이다. - 무슨 말인가 하면 Contoller 가 Service, Repository 등을 사용해 기능을 수행 한다. - 이 때 자바를 배운 사람이라면 Service 를 사용 하기 위해서 new 를 통해 class 를 생성하고 사용 할 것이다. - 하지만 이렇게 한다면 A_Controller 와 B_Controller 에서 같은 Service 를 사용할 때 서로 다른 객체를 사용 하게 된다. - 위 상황에서는 A 와 B 가 같은 객체를 사용 하도록 해 주는 것이 더 명확한 프로젝트가 된다. Bean - 등록된 class 들을 spring 이 실행 될 때 spring container 에 미리 넣을 수 있게 설정 하는 것이라 보면 된..

[SpringBoot + Java] 간단한 백엔드(test code)

들어가며 - 개발 한 기능을 테스트 하는 방법은 크게 두가지가 있다. . main 을 통해 실행 하는 등 실제로 실행 하는 방법 . test 코드를 이용해 테스트 실행을 해 보는 방법 - 이번 시간에는 test 코드를 통해 기능이 재대로 개발 되었는지 오류 없이 실행 되는지 확인 해 보도록 하겠다. test코드 디렉토리 구성 - main 디렉토리 아래 test 디렉토리에 main 과 유사하게 디렉토리를 구성 해 준다. - 이번에는 저번 시간에 만들었던 repository 를 test 해 볼 것이기 때문에 이와 유사하게 구성 해 주고 test class 를 생성 해 준다. - 코드를 작성 한다. . 방법은 @Test 를 통해 아래의 함수가 test 코드임을 암시 한다. . assertThat 을 통해 정상..

[SpringBoot + Java] 간단한 백엔드(domain, repository, service)

들어가며 - 백엔드의 주 목적은 서버간의 데이터 통신이다. - 오늘은 그중 가장 기초적인 데이터 저장과 반환을 위한 domain, repository 를 만들어 볼 것이다. 일반적인 계층 구조 - 보통은 "controller, service, repository, domain, DB" 의 구조를 띈다. . controller : 웹 MVC 을 컨트롤 하는 역할 . service : 핵심 비지니스 로직을 구현 . repository : DB 에 접근, domain 객체를 DB 에 저장 . domain : 비지니스의 데이터 객체 domain 생성 - 간단하게 만들 예정이라 id 와 name 으로 data class 를 구성 하였다. - 우선 controller 생성과 비슷하게 "domain" 이란 이름의 디..

[SpringBoot + Java] 스프링 웹(Static, MVC, API)

들어가며 - 백앤드를 짜게 되면 그행 결과를 확인할 프론트가 필요하다. - Spring 의 3가지 방식인 Static, MVC, API 에 대해 간략하게 알아 보도록 하겠다. Static - 바로 저번 시간에 진행한 것 중 "resource/static" 디렉토리에 html 파일을 추가 한 것을 기억 할 것이다. - static 이란 말 그대로 "정적" 이라는 말로 서버에서 어떠한 가공도 없이 정적으로 웹에 내려주는 페이지 이다. - 아래 코드를 "resource/static" 에 "hello-static.html" 파일을 추가 한 후 실행 해 보도록 하겠다. static ex - 따로 서버가 페이지를 가공 하지 않고 static ex 라는 글자가 그대로 나오는 것을 확인 할 수 있다. MVC & 템플릿..