목록전체 글 (348)
파게로그
특별한 기능을 사용하는 것은 아니다. 예를 들어 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..
문제 링크: 17840번 피보나치 음악 https://www.acmicpc.net/problem/17840 N번째 수에 바로 접근하는 방법 나누는 수는 2 이상으로 정해져있는데, 그렇다면 나머지를 저장하는 수열은 반드시 0 1 1 ... 이런 식으로 이루어진다. 그렇다면 저 패턴이 다시 반복되면, 해당 패턴은 무한히 반복되는 것이다. 수열을 만들어가면서 1 1이 반복되면 그 때 멈추면 된다. 한 자리씩 떼어내서 세는 것을 어떻게 해야할까? fibo 배열과 digitList 배열을 따로 두어서 해결할 수 있다. 조심해야 할 점 아무 생각없이 나누면서 리스트에 집어넣어버리면 1의 자리부터 역순으로 들어가게 된다. import java.io.BufferedReader; import java.io.IOExcep..