목록콤퓨타 왕기초/Spring Boot (12)
파게로그
https://mybatis.org/mybatis-3/ko/dynamic-sql.html에서 foreach element에 대해서 살펴본다. 만약 Assignment 여러개의 번호를 배열로 받는, int deleteAll(int[] ids)라는 메서드가 있다면, 이 때는 MyBatis가 제공하는 element를 사용할 수 있다. DELETE FROM assignment WHERE id IN #{id} "컬렉션 파라미터로 Map이나 배열객체와 더불어 List, Set등과 같은 반복가능한 객체를 전달할 수 있다. 반복가능하거나 배열을 사용할때 index값은 현재 몇번째 반복인지를 나타내고 value항목은 반복과정에서 가져오는 요소를 나타낸다. Map을 사용할때 index는 key객체가 되고 항목은 value..
특별한 기능을 사용하는 것은 아니다. 예를 들어 Assignment 하나의 정보를 보고자 한다면, ASSIGNMENT 테이블의 내용과 CHAPTER 테이블의 내용이 JOIN되어야 한다. 이는 SQL을 통해 DB에서 직접 View를 생성하고, 이를 이용하는 메서드를 생성하는 정도로 정리할 수 있다. 그리고 Entity 패키지에는 Assignment를 상속받는 AssignmentView 클래스를 다음과 같이 생성할 수 있다. package com.ddoongi.springbootwebprj.entity; import java.sql.Date; public class AssignmentView extends Assignment { private String chapterName; public Assignmen..
annotation을 이용해 SQL을 매핑할 경우... 1. 규모가 커지게 되면 너무 복잡해진다. 2. 인터페이스인 AssignmentDao가, MyBatis라는, 구현을 위한 특정 기술과 너무 밀접해진다. 3. annotation 때문에 인터페이스 전반에 대한 가독성이 나빠진다. 인터페이스에는 메서드만 남겨놓고, resources에서 원하는 위치에 XML 파일을 만든다. 여기서는 resources/dao/mybatis/mapper/AssignmentDaoMapper.xml로 만들었다. 이 파일의 이름은 AssignmentDaoMapper.xml라고 지으면 알아보기가 쉽다. 이 XML 파일이 어떤 인터페이스를 구현하는지는 어떻게 표현할 수 있을까? mybatis.org/mybatis-3/ko/gettin..
Column Mapping DB에서의 실제 column name과 Java 어플리케이션에서의 필드 변수명이 다를 때 어떻게 할 수 있을까? 첫째로, DB의 column name을 바꿀 수 있다. column name과 필드 변수명이 일치하는 것이 권장되지만, DB를 수정하기 힘든 경우가 많다. 둘째로, 필드 변수명과 getter, setter의 메서드 이름, 그리고 View에서 속성명을 모두 변경할 수 있다. 하지만 이는 굉장히 비효율적인 방법이다. 이러한 경우를 위해서 MyBatis는 column mapping을 지원한다. package com.ddoongi.springbootwebprj.dao; import com.ddoongi.springbootwebprj.entity.Assignment; impo..
Controller, Service, DAO com.ddoongi.web.controller.EmpController @Controller("adminEmpController") @RequestMapping("/admin/emp/") public class EmpController { @Autowired private EmpService service; @GetMapping("list") public String list() { List list = service.getEmpList(); return "admin/emp/list"; } } 차근차근 생각해보자. URL을 통해 request가 들어오면, 일단 Controller가 이 request를 적절한 Service에 전달해야 하고, Service는 자..
디자인 패턴으로서, SE 용어이긴 한데 마침 나와서 써본다. [singleton pattern]velog.io/@kyle/%EC%9E%90%EB%B0%94-%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4-Singleton-Pattern [Spring에서의 singleton pattern]sabarada.tistory.com/25 [Spring에서의 singleton pattern]webdevtechblog.com/%EC%8B%B1%EA%B8%80%ED%84%B4-%ED%8C%A8%ED%84%B4-singleton-pattern-db75ed29c36 [singleton pattern 전략] n1tjrgns.tistory.com/177 [singleton pattern W..
Spring MVC 모델에서 Model은 application의 상태를, 곧 데이터를 나타내며, 구체적으로는 DAO, DTO, Service로 나눌 수 있다. 스프링 Service & DAO 객체 구현 engkimbs.tistory.com/692 스프링 MVC gmlwjd9405.github.io/2018/12/20/spring-mvc-framework.html 싱글톤 패턴 velog.io/@kyle/%EC%9E%90%EB%B0%94-%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4-Singleton-Pattern VO 설명(우테코) velog.io/@livenow/Java-VOValue-Object%EB%9E%80 Entity, VO, DTO velog.io/@gill..
다행히 강의에서 MyBatis뿐만 아니라 JPA도 다루지만, 확실히 최근 서비스 기업들은 JPA를 많이 사용한다는 점은 인식하고 있어야 한다. 어찌되었든, 두 기술을 비교한 글이 몇 개 있어 링크를 달아둔다. 몇몇 헷갈리는 것들만 정리해두자면 다음과 같다. - JPA(Java Persistence API)는 Java 어플리케이션에서 RDB를 사용하는 방식을 정의한 인터페이스이다. - 이러한 JPA를 따르는 실제 구현체이자 라이브러리로 쓰일 수 있는 기술이 Hibernate이다. [MyBatis.org] mybatis.org/mybatis-3/ko/index.html [Hibernate ORM 5.3.20.Final User Guide] docs.jboss.org/hibernate/orm/current/u..