먼저 , intelliJ에 아래와 같이 spring프로젝트를 생성한다. 처음 Application을 실행하면 아래와 같은 오류가 뜨게 된다. 이는 데이터베이스를 사용하기 위한 dependency가 존재하는 경우 @SpringBootApplication 에서 자동으로 데이터베이스 값을 설정하려고 시도하지만 사용자는 데이터베이스 값을 입력을 안했기에 발생하는 에러이다. 따라서 해결방법으로 직접 DB를 넣어주거나 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://localhost:3306/bootex spring.datasource.username=bootuser spring.dataso..
전체 글
[ 특정 영화의 모든 이미지와 평균 평점/리뷰 개수 ] public interface ReviewRepository extends JpaRepository { List findByMovie(Movie movie); } 먼저 , ReviewRepository 인터페이스에 위와 같이 정의한 뒤 Review에서 필요한 데이터를 추출한다. @Test public void testGetMovieReviews() { Movie movie = Movie.builder().mno(96L).build(); List result = reviewRepository.findByMovie(movie); result.forEach(movieReview -> { System.out.println(movieReview.getRevi..
[ M:N(다대다)관계의 특징 ] 먼저, 테이블은 고정된 개수의 칼럼을 가지고 있기 때문에 M:N(다대다)의 관계를 실제 테이블로 설계할 수 없다. 예를 들어 여러 개의 상품이 있고, 여러 개의 카테고리가 있다고 생각한다. 여기서, 특정한 상품에 대해서 카테고리 정보를 추가하면 상품 하나가 '가전'인 동시에 '주방','계절 가전','신혼'과 같이 여러 개의 카테고리를 각각 칼럼에 담는다면 고정된 수의 칼럼으로는 처리할 수 없다는 문제가 생긴다. 상품번호 상품명 상품 카테고리 1 냉장고 C1,C2,C3 2 세탁기 C1,C2 3 TV C4 그림으로 표현하자면 위와 같다. 위의 그림과 같은 경우 ','를 사용해서 해당 상품이 여러 개의 카테고리에 속하는 것을 표현하고 있지만 근본적인 해결책이라고 할 수 없다...
먼저 , 학생이라는 객체를 생성하는 코드가 있고 , 아래와 같은 생성자 정의해두었다고 가정한다. public Student(long id,String name,String major,int age,String address){ this.id=id; this.name=name; this.major=major; this.age = age; this.address = address; } 여기서 클라이언트 입장에서 인스턴스를 생성한다고 생각한다. Student student = new Student(123,'jsh','py',25,'pankyo'); 위와 같이 생성할 수 있을것이다. 그렇다면 아래와 같은 경우는? Student student = new Student(123,'lsh',null,0,null); 이..
1. @Controller(Spring MVC Controller) [ Controller - View ] 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트한다. Controller가 요청을 처리한 후에 응답을 DispatcherServlet으로 반환하고, DispatcherServlet은 View를 사용자에게 반환한다. @Controller가 View를 반환하기 위해서는 V..
REST 방식이란? HTTP에 존재하는 모든 자원에 고유한 URI를 부여하여 활용,자원을 정의하고 자원에 대한 주소를 지정하는 방법론 REST 아키텍처의 장점 1. 자원이 존재하는 Server, 자원을 요청하는 Client로 명확하게 구분된다. 2. HTTP 표준 방식을 활용한다면 어떤 플랫폼에서도 똑같이 사용 가능하다. 3. URI 주소 자체가 동사 + 명사로 이루어져 어떤 기능을 수행하는지 유추할 수 있다. REST 아키텍처는 HTTP URI를 통해 자원을 명시하고 HTTP 메서드를 통해 해당 자원에 대한 CRUD Operational을 적용 HTTP 메서드 Method 역할 POST 리소스 생성 GET 리소스 조회 PUT 리소스 수정 DELETE 리소스 삭제 JSON이란? Javascript에서 객..
Springboot JPA에 thymeleaf를 결합한 프로젝트를 하다가 개발자 도구에서 아래와 같은 오류가 발생했다. 대충 에러는 위와 같이 존재하지 않는 변수를 참조하는 곳이 있다고 경고하고 있다. 해결 방법은 라이브러리(jQuery와 같은)의 로딩을 반드시 코드 "$"와 같은 라이브러리 변수에 접근하기 이전에 수행해야 한다. 라이브러리를 로딩하는 태그가 그 변수를 사용하는 코드보다 앞에 위치하도록 한다. 해결
관계형 데이터베이스 설계 JPA를 이용하여 연관관계를 해석할 때는 PK를 기준으로 잡고, 데이터베이스를 모델링하는 방식으로 구성한다. 위 사진처럼 각각 member,board,reply 테이블을 생성한다. BaseEntity 클래스 Member 클래스 Board 클래스 Reply 클래스 각 테이블 생성후 각 엔티티에 맞는 Repository 인터페이스를 추가시킨다. Member 객체를 100개 추가하고, Board 객체 또한 100개 생성하여 추가한다. 여기서 한 명의 사용자가 하나의 게시물을 등록하도록 작성한다. 이후 300개의 댓글을 1~100사이의 번호로 추가한다.(board_bno 칼럼 값이 임의의 번호이다.) 이렇게 1번부터 100번까지 게시물에 대해서 n개의 댓글이 추가된다. MemberTes..