본문 바로가기

분류 전체보기111

[Spring] JPA 기초 JPA SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기 JPA가 필요한 이유 1. SQL문 일일이 쓰고 있다가 시간 다 감 2. 기존에 mysql쓰다가 oracle을 사용하려는 경우 sql문법에 대한 검토를 하기 굉장히 번거로움 예시 아래의 JPA 사용 코드를 SQL문으로 자동으로 번역해줌 repository.save(new Customer("Taeong",23)); JPA 사용 전 알아야 할 개념 1. Domain(Entity) = table 테이블이랑 1:1 대응됨 2. Repository = sql SQL의 역할을 함 repository에 써 있는 코드가 JPA코드를 사용하는 것과 같음 JPA 사용하기 현재의 디렉토리 구조는 다음과 같다. course테이블을 생성하.. 2021. 7. 12.
[Spring] 게시판 프로젝트9 - 게시물 등록(+한글 깨짐 필터 설정) 📌 게시물 등록을 위한 작업 1. GET방식으로 게시물 등록 화면 제공 2. POST방식으로 실제 게시물 등록 처리 3. 이후 목록 페이지로 이동(Redirect) 이전 게시물에서 등록하는 경우 post mapping을 사용한 컨트롤러를 이용했었다. 그러나 실제 웹페이지로 게시물을 등록하는 경우에는 게시물 등록을 위한 페이지가 필요하다. 그러므로 기존의 post방식과 다르게 등록 화면을 보여줄 get mapping 메소드를 추가해야 한다. //게시물 등록 화면(추가된 부분) @GetMapping("/register") public void registerGET() { } //실제로 게시물을 등록하는 경우(원래 있던 코드) @PostMapping("/register") // 글을 등록하는 경우에는 get방.. 2021. 7. 12.
[Spring] 게시판 프로젝트8 - JSTL을 이용한 게시물 목록 조회 실습 템플릿을 따라서 사용하는 경우라면 jQuery의 버전을 변경해주는 것이 좋다. (템플릿의 jQuery버전은 낮음) 더보기 아래의 링크를 타고 접속해서 웹 CDN으로 추가해준다. 실습에서는 jQuery 3.x 버전의 minified를 사용하였다. jQuery CDN The integrity and crossorigin attributes are used for Subresource Integrity (SRI) checking. This allows browsers to ensure that resources hosted on third-party servers have not been tampered with. Use of SRI is recommended as a best-practice, when.. 2021. 7. 12.
[GitLab] An error occurred while loading commit signatures 에러 주저리 💬 더보기 깃은...참 어려운거같다.... 멋사 때부터.. 깃때문에 혼나가면서 개발했던 (물론 선배들이 막 혼낸건 아니지만 한숨을..쉬는 빈도수가 많았던 걸로 기억함..) 기억이 있는데 왜 깃에 대한 기억은 없냐.....😯 깃을 소홀히 하면 안되는데.. 하는 생각은 있었는데 한이음에서 깃을 쓰게 돼서 인강과 테스트를 과제로 줬다! 그래서 오 좋은 기회다 싶은 느낌 근데 엄 문제는 내가 개발 팀장인데 깃을 몰라🤦‍♀️🤷‍♀️ 강의듣고 테스트봐서 대강 어떻게 돌아가는지 이해를 한 것 같았는데 역시 실전은 다르더라... 특히 강의에서는 vs code를 사용했는데 난 겁도 없이 sts로 시작을 해버려서 아래와 같은 이슈가 생겨버렸다. An error occurred while loading commit .. 2021. 7. 11.
[git 이해하기3] Merge request를 이용한 협업 과정 git과 외부저장소를 사용하여 실제 프로젝트에 기여하는 과정 (이해하기 쉽게 사용자의 이름을 마이클이라고 가정함) 1. 원래의 프로젝트(원본)를 복사한 프로젝트(복제)를 외부저장소의 마이클의 계정에 별도로 생성함 Fork : 원본 프로젝트의 복사본을 만드는 것 2. 복제한 프로젝트를 git clone으로 자신의 프로젝트에 가져옴 3. 새로운 커밋들을 추가하고 자신의 프로젝트(복제본)에 git push함 4. 복제 프로젝트에서 원본 프로젝트에 merge request를 보냄 merge request : 새로 한 작업이 있으니 확인하고 실제 프로젝트에 반영을 요청함 5. 원본 프로젝트의 maintainer인 유저는 해당 merge request를 보고 마이클과 상의를 진행 6. 확인 후 merge reque.. 2021. 7. 7.
[git 이해하기2] Git Branch, Merge Branch : 특정 커밋을 가리키는 포인터 ◾ 서로 다른 개발 흐름을 병렬적으로 사용하기 위함 ◾ 기능1과 기능2를 나누어서 개발하다가(분기를 나누는 경우) 하나를 합치는 경우가 있기 때문에 브랜치를 사용함 master : 처음 프로젝트를 만들었을 때 기본적으로 지정되어있는 브랜치 ◾ 일반적으로는 개발이 완벽한 경우 master브랜치에 push해줌 ◾ Head -> master : Head는 브랜치를 통해서 특정 커밋을 가리킴 브랜치 생성하기 git branch 생성할브랜치이름 하나의 프로젝트에서 여러 기능을 개발하는 경우 분기가 나뉘는 시점이 발생한다. 그 경우에는 master브랜치 하나만 사용하게 되면 굉장히 비효율적이고 버전관리가 어려울 수 있다. 그래서 각각의 브랜치를 만들어서 개발을 진행한 뒤.. 2021. 7. 7.
[git 이해하기1] git과 외부저장소 1. git디렉토리 생성하기 git init 프로젝트의 디렉토리를 git으로 버전관리할 수 있음 프로젝트의 디렉토리 안에 .git이라는 디렉토리가 생성됨 ->.git디렉토리 안에 버전관리를 위한 기능들을 알아서 관리해줌 (.git파일은 우리가 건드는 파일이 아니기 때문에 폴더에서 확인하면 찾을 수 없음! 기본적으로는 숨김파일 처리가 되어있음) 2. 사용자 정보 설정하기 (1) git을 사용하고 있는 사용자의 이름을 설정함 git config user.name "사용자이름" (2) git을 사용하고 있는 사용자의 이메일을 설정함 git config user.email "사용자이메일" => 히스토리를 남긴 사용자의 정보를 확인할 수 있음 3. Staging Area에 Commit하기 commit : 특정 버.. 2021. 7. 7.
[Spring] 게시판 프로젝트7 - 화면 처리(정적파일 적용, include지시자) 화면처리는 bootstrap을 이용하여 프론트 개발 시간을 단축한다. https://getbootstrap.com/ Bootstrap The most popular HTML, CSS, and JS library in the world. getbootstrap.com 원하는 템플릿을 다운받아서 진행해도 무관함! 교재에서는 아래의 템플릿을 사용했기 때문에 실습에서도 이 템플릿으로 진행한다. 이 위치에 다음 파일들을 붙여넣는다. 📌 스프링MVC의 JSP를 처리하는 설정은 servlet-context.xml에 작성되어있다. 화면 설정은 ViewResolver라는 객체를 통해서 이루어지는데, '/WEB-INF/views'폴더를 이용하는 것을 볼 수 있다. 정적 파일 적용하기 /WEB-INF/views/에 boar.. 2021. 7. 6.
RestController 생성하기 실습은 intelliJ로 진행함 아래 포스팅에 @RestController에 대한 더욱 자세한 설명이 있으니 참고! https://doctorson0309.tistory.com/664 [Spring] 스프링 @RestController란? 그리고 사용방법 안녕하세요. 플랫폼공작소입니다. 오늘은 스프링어노테이션 중 @RestController라는 것에 대해서 알아보겠습니다. 1. @RestController란? - 스프링프레임워크 4.x 버전 이상부터 사용가능한 어노테이션 doctorson0309.tistory.com @RestController = @Controller + @ResponseBody @RestController는 문자열과 JSON등을 전송할 수 있게 한다. 테스트 코드를 확인하면 @Rest.. 2021. 7. 5.
[Mysql] Workbench를 사용해 ERD작성 2학년 데이터베이스 수업 때 Toad data modeler를 사용해서 erd를 작성한 기억이 있어서 이번 한이음 플젝 때도 토드를 사용했었는데 무료 제공 기간 끝나면 결제하면되지~하고 맘편하게 생각했다가 토드는 한국에서는 결제 서비스가 제공되지 않는다는 것을 확인하고 아쥬 큰 탄식을 했다🤯😭 그래서 개발팀원들이랑 은지님이 워크벤치를 얘기해줘서 이번에는 이 툴로 erd를 작성해보려고 한다! (왜 이런게 있는지 몰랐냐구 젠장~) 역시 mysql은 오픈소스여서 이 워크벤치도 무료이고, 내 컴퓨터에 이미 깔려있더라. (컴퓨터 주인도 모르는 사이에 깔려있는 워크벤치) 음 근데 토드쓰다가 워크벤치 쓰니까 불편한게 한 두가지가 아니당 1. FK 안보임 2. 관계선 순서대로 연결 안하면 바로 팅겨져버림 (백업파일 아.. 2021. 7. 5.
[Spring] 게시판 프로젝트6 - Presentation계층 구현 Presentation계층에서 Controller를 작성하기 전에 url설계부터 진행함 리스트 조회(List) 처리 과정 1. BoardController.java 생성 package com.taeong.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import com.taeong.service.BoardService; import lombok.AllArgsCo.. 2021. 7. 4.
[Spring] 게시판 프로젝트5 - Business 계층 구현 Business계층 - 고객의 요구사항을 반영하는 계층 - 업무의 로직을 단위로 설계함 (트랜잭션 단위로 반영) - 여러개의 Mapper나 DAO를 사용하는 경우가 존재함 - xxxService의 형태로 작성 예를 들어 Persistence tier(영속 계층)에서 '상품'과 '회원'을 VO로 만들어서 관리를 한다면 이를 동시에 이용해야하는 '구매 서비스'는 Business tier(서비스 계층)으로 분류하게 된다. 서비스 패키지 설정 service패키지 먼저 생성해주고 인터페이스(BoardService.java)와 클래스(BoardServiceImpl.java)를 추가한다. (참고로 인터페이스인 경우에 아이콘 위에 I 표시가 붙어있음) 서비스 계층 구현 1. BoardService.java 인터페이스에.. 2021. 7. 4.
[Spring] 게시판 프로젝트4 - Persistence 계층 구현 (insert,delete,update) 게시물 등록 - insert 1. BoardMapper.java에 메소드 추가 package com.taeong.mapper; import java.util.List; import com.taeong.domain.BoardVO; public interface BoardMapper { public List getList(); // 아래 insert메소드들 추가 public void insert(BoardVO board); public void insertSelectKey(BoardVO board); } insert() : 단순히 시퀀스의 다음 값을 구해서 insert할 때 사용 insertSelectKey() : @SelectKey라는 MyBatis의 어노테이션을 사용 @SelectKey는 주로 PK값을 .. 2021. 7. 3.
[Spring] 게시판 프로젝트3 - Persistence 계층 구현 (select) 1. boardpro 유저에 접속하여 tbl_board 테이블 생성 작업을 진행 create sequence seq_board; create table tbl_board( bno number(10,0), title varchar2(200) not null, content varchar2(2000) not null, writer varchar2(50) not null, regdate date default sysdate, updatedate date default sysdate ); alter table tbl_board add constraint pk_board primary key(bno); seq_board : 일련번호를 위한 sequence tbl_board : 게시물 저장을 위한 테이블 pk : .. 2021. 7. 2.
Log4j import에러 1. Log4j import 안될 때는 좌측에 Maven Dependencies에서 Log4j 불빛이 꺼져있는지 확인해봄 2. pom.xml에 가서 저 한 줄 빼버리고 저장하면 log4j 불빛이 다시 켜짐 짠⭐ 사실 관련 글들 구글에 많긴 한데 난 너무 자주 겪어가지고 한 번 써봄 2021. 7. 2.