본문 바로가기

분류 전체보기

(95)
Spring 숙련주차 Part3 1. N:1관계N:1 단방향 관계: 테이블 예시처럼 외래키의 주인은 음식 테이블이지만 실제로 외래키가 저장되는 곳은 고객 테이블이다.1 : N에서 N 관계의 테이블이 외래 키를 가질 수 있기 때문에 외래 키는 N 관계인 users 테이블에 외래 키 컬럼을 만들어 추가하지만 외래 키의 주인인 음식 Entity를 통해 관리한다. 음식 엔티티(외래키 주인):@Entity@Table(name = "food")public class Food { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private double price; @ManyToOne @Joi..
Spring 숙련주차 Part2 1. RestTemplate의 Post 요청public ItemDto postCall(String query) { // 요청 URL 만들기 URI uri = UriComponentsBuilder .fromUriString("http://localhost:7070") .path("/api/server/post-call/{query}") .encode() .build() .expand(query) //pathvariable 사용 .toUri(); log.info("uri = " + uri); User user = new User("Robbie", "1234"); R..
Spring 숙련주차 Part1 1. Bean 수동으로 등록하기Bean은 @Component애너테이션으로 자동 등록하는게 일반적이다. Bean을 수동등록할 때는 주로 공통 로그처리와 같은 비즈니스 로직을 지원하기 위한 부가 적이고 공통적인 기능들을 담당하는 객체들을 등록할 때 수동등록을 한다. 참고로 이런 Bean들은 기술 지원 Bean이라고 부른다.기술 지원 Bean은 비즈니스 로직 Bean 보다는 그 수가 적기 때문에 수동으로 부담없이 등록해도 좋다. 그리고 수동등록된 Bean에서 문제가 발생했을 때 해당 위치를 파악하기 쉽다는 장점이 있다. Bean을 수동으로 등록하려면 Bean으로 등록하고자하는 객체를 반환하는 메서드를 선언하고(주로 생성자) @Bean을 설정한다. Bean을 등록하는 메서드가 속한 해당 클래스에 @Configu..
Spring 입문주차 2주차 1. 3 Layer Architecture 다음은 어느 프로젝트의 컨트롤러 클래스 일부이다.@RestController@RequestMapping ("/api")public class MemoController { private final Map memoList = new HashMap(); @PostMapping("/memos") public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto) { // RequestDto -> Entity Memo memo = new Memo(requestDto); // Memo Max ID check Long maxId = memoLi..
Spring 입문주차 1주차 1. 클라이언트와 서버클라이언트는 서버에 정보를 요청하는 사용자이다. 그리고 서버는 사용자에게 요청받은 정보를 제공하는 관리자이다.클라이언트의 요청이 서버에 제대로 전달 되려면 일종의 '주소'가 필요한데 그게 바로 IP주소이다. 네트워크 상에서 데이터의 송/수신은 IP주소를 기준으로 한다. 2. 웹 서버웹 서버는 클라이언트의 요청을 웹 페이지 형태로 응답해주는 서버이다.클라이언트는 웹 브라우저를 통해 HTTP Request 형태로 요청한다. 이후 웹 서버는 HTTP Response형태로 웹 사이트 데이터를 전송한다.마지막으로 웹 브라우저는 받아온 데이터를 바탕으로 화면에 출력한다. 3. API와 REST(Representational State Transfer)ful APIAPI는 개발자와 소프트웨어간의..
Spring 일정관리 앱 프로젝트 2일차 오늘은 상세보기와 수정과 삭제기능을 구현할 것이다. 먼저 일정의 자세한 정보를 보여주는 GET방식의 API이다.@GetMapping("/{id}") public String updateGetCalanderbyId(@PathVariable Long id, Model model) { Calander calander = findById(id); model.addAttribute("id", calander.getId()); model.addAttribute("title", calander.getTitle()); model.addAttribute("content", calander.getContent()); model.addAttribute("n..
Spring 일정관리 앱 프로젝트 1일차 공통 조건일정 작성, 수정, 조회 시 반환 받은 일정 정보에 비밀번호는 제외일정 수정, 삭제 시 선택한 일정의 비밀번호와 요청할 때 함께 보낸 비밀번호가 일치할 경우에만 가능1단계: 일정 작성일정할일 제목할일 내용담당자비밀번호작성일 일정에는 다음과 같은 정보를 저장해야하고 저장된 일정 정보를 반환받아 확인할 수 있어야 함 2단계: 일정 조회: 선택한 일정 상세 조회3단계: 일정 목록 조회: 등록된 일정 전체 조회4단계: 선택한 일정 수정: 제목, 내용, 담당자 수정 가능, 입력받은 비밀번호 일치해야함5단계: 선택한 일정 삭제: 입력받은 비밀번호 일치해야만 삭제 가능 위 요구사항에 맞춰서 Use Case Diagram, ER Diagram, API명세서를 작성했다그리고 작성한 문서들을 바탕으로 구현을 시작..
정수 내림차순으로 배치하기 문제 설명함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.제한 조건n은 1이상 8000000000 이하인 자연수입니다.입출력 예: 111372 -> 873221출처:프로그래머스(https://school.programmers.co.kr/learn/courses/30/lessons/12933)라는 문제다. 필자는 정수를 정렬하는 기능을 가진 메소드는 없다고 생각해서 일일이 정렬하는 기능을 구현해서 문제를 풀었다.class Solution { public long solution(long n) { String n1 = String.valueOf(n..