본문 바로가기

Spring

(8)
Jpa_3강 Board 처리 0. Repository 생성 public interface BoardRepository extends CrudRepository { //페이지 처리된 목록을 가져오는 메소드 Page findByBnumGreaterThan(long bnum, Pageable pageable); } 1. Board 입력 - BoardService.java //게시글 저장 메소드 @Transactional //정상이면 commit, 에러발생 시 rollback 처리. public String insertBoard(List files, //업로드 파일 목록 Board board, HttpSession session, RedirectAttributes rttr) { log.info("insertBoard()")..
Jpa_2강 파일 저장 및 다운로드 1. Multi-part 한 웹 문서 안에 문자와 바이너리 데이터(이미지, 동영상, 오디오 및 다양한 형식의 파일)가 같이 포함되어 있는 형태 Multi-part 관련 설정) application.properties에서 다음과 같은 크기에 대한 설정을 할 수 있다. 업로드 파일의 최대 크기 설정 : max-file-size 요청 객체에 담을 수 있는 최대 크기 : max-request-size input 태그의 file은 파일 전송을 위한 입력 태그로 단일 전송(single, 기본값)과 다중 전송(multiple)을 설정한다. * multiple과 multi-part는 관계 없음 2. 파일의 저장 위치 DB에 내용과 함께 저장 DB에는 내용만, 파일은 따로 저장 둘 중 한 가지의 ..
Jpa_1강 관련 어노테이션 클래스에 붙이는 어노테이션 @Entity 해당 클래스를 Entity로 사용하겠다고 선언 이 클래스는 Jpa가 관리 @Table(name = "테이블명") Entity 클래스를 테이블로 설정(매핑) 테이블명 지정 가능 기본값은 클래스명 변수에 붙이는 어노테이션 @ID 필드 변수와 연결되는 컬럼을 기본키로 설정(생성) @GeneratedValue 자동으로 값을 생성하는 컬럼으로 설정(AI) MySQL의 auto-increment 설정 => strategy = GenerationType.IDENTITY로 설정 @Column 필드 변수를 기반으로 테이블의 컬럼을 설정하기 위한 설정 - name : "필드명" => 기본값은 변수명 - nullable : true / false => false일 경..
Jpa_0강 프로젝트 생성 1. 프로젝트 이름 및 위치 / Java 등 다양한 초기 설정을 하고 싶은 대로, 버전에 맞게 설정해준다. 2. Dependencies를 다음과 같이 추가해준다. Jpa 초기화 전략 관련 설정(application.properties) 1. spring.jpa.generate-ddl DDL 생성 시 DB의 고유 기능 사용 유무를 설정한다. 이 옵션을 true로 설정하면 관련 데이터를 기반으로 서버가 시작할 때 DDL문을 생성하여 DB에 적용하고, 서버가 시작할 때마다 수행되기 때문에 기본적으로 false로 설정해준다. 2. spring.jpa.hibernate.ddl-auto DDL 실행에 대한 설정으로 다음과 같은 값을 가진다. none : 아무런 작업도 하지 않음(DB 테이블은 따로 직..
Ajax_2강 Ajax 문법 $.ajax({ url: "전송할 url", // 컨트롤러까지 도달할 매핑된 url type: "post", // 전송 방식(get, post) dataType: "json", // content-type이 json인 경우만 작성(그 외 생략) data: dt, success: function(result_data) { // 전송(request)과 응답(response)이 성공하면 실행되는 부분 }, error: function(error) { // 전송 또는 응답이 실패했을 때 실행되는 부분 } }); REST 방식 REST(REpresentational State Transfer) 방식은 비동기 통신 방식으로, uri(url)를 통해 자원(데이터)을 명시하고 method(get / po..
Ajax_1강 Ajax 전송 프론트엔드(HTML / Jsp / Js)와 백엔드(Spring framework) 간 통신은 두 가지로 나뉜다. 1. 동기(Synchronous) 통신(페이지 자체가 변경 / 새로운 Jsp / 새로고침) HTML, Js 부분 모두에서 처리가 가능하다. = > location.href = "..." 등을 이용 2. 비동기(Asynchronous) 통신(같은 페이지에서 특정 부분을 변경) Js에서만 처리할 수 있다. 웹페이지를 리로드하지 않고 데이터를 불러와 서버에서 요청이 들어와도 프로그램이 멈추지 않고 계속 돌아간다. 이는 시간도 빠르고, 화면을 리로드할 경우 전체가 아닌 일부 필요한 부분만 가져온다는 장점이 있다. => XMLHttpREquest(순수 Js), Ajax(jQuery)로 처..
Thymeleaf_1강 Thymeleaf template(HTML 확장자) Thymeleaf는 Spring Boot에서 View(HTML)를 처리하는 기본 방식 중 하나이다. resources/templates 폴더 안에 페이지의 틀을 저장하는 형식을 가지고 있다. Jsp처럼 prefix/suffix 설정 및 webapp/WEB-INF/views 폴더를 생성할 필요가 없으며, controller에서 데이터를 전송하는 방식과 HTML 태그 형식은 동일하다. Thymeleaf의 데이터 출력 기본적인 데이터의 출력은 EL 형식을 사용 => ${ ... } 링크(url) : @{link}, a 태그, action 객체의 필드(멤버 변수) : *{field} Jsp에서 HTML에서 Session에 저장된 데이터 출력 let v = [[..
Thymeleaf_0강 프로젝트 생성 thymeleaf를 사용하기 위한 프로젝트 생성 방법은 다음과 같다. 1. 여태 War로 설정했던 Packaging을 Jar로 바꿔준다. 2. Dependencies를 선택할 때 Spring Devtools를 포함시킨다. 3. application.properties에서 devtools 설정 코드를 추가 작성한다. #devtools setting spring.devtools.livereload.enabled=true #thymeleaf setting spring.thymeleaf.cache=false 4. File > Setting에서 다음 항목을 체크해준다.