본문 바로가기

분류 전체보기

(60)
페이징 순서대로 정렬 시 주의할 점(rownum 과 order by) 페이징 쿼리를 이렇게 작성하고, order by를 어느 위치에 끼워도 그 페이지 안에서 순서만 바뀔 뿐 전체 페이지가 순서대로 정렬되지 않는 오류가 발생했다 ROWNUM : 조회된 순서대로 순번을 매기는 고유 변수 ORDER BY : 데이터 정렬 시 사용되는 기능 유의점은 ORDER BY로 데이터 정렬이 되기 전에, ROWNUM이 매겨진다는 것 https://ajdahrdl.tistory.com/23 => 참고 블로그 그러므로 select * from ( select rownum rn, temp.* from (select review_id, products_id, review_writter, review_title, review_content, review_star, review_img, review_d..
트랜잭션이란!??!?!!?!??! 1. 트랜잭션의 개념 논리적 단위로 어떤 한 부분의 작업이 완료되었다 하더라도 , 다른 부분의 작업이 완료되지 않을 경우 전체 취소되는 것입니다. 이때 , 작업이 완료되는 것을 커밋(commit)이라고 하고 , 작업이 취소되는 것을 롤백(rollback)이라고 합니다. 영화 예매를 할 경우 카드 결제 작업과 마일리지 적립 작업 2. 스프링 트랜잭션 사용방법 트랜잭션 처리를 하지 않았을 경우 rollback이 되지 않는 경우입니다 조건에 안 맞는 데이터가 들어왔을때 '매표소 직원' 테이블에는 제약조건에 걸린 값만 들어오지만 '카드 결제' 컬럼에선 제약조건이 없기때문에 그 데이터가 그대로 남아있다 => 문제생김! 3. 스프링 트랜잭션을 이용하기 위한 설정 *. servlet-context.xml *. Dao..
Spring Validator를 이용한 검증 회원가입할때 많이 씀. 값을 받아와서, 커맨드 객체는 dto.class 컨트롤러단의 validator 객체로 검증 실시 후 view단 => 클라이언트 공통기능을 하는 클래스를 하나 만들어서(StudentValidator), 값 체크하는 메소드를 넣어줌 ValidationUtils 클래스 오류 있으면 각 오류에 맞는 메시지를 보여준다. @Valid와 @InitBinder @Valid 오류 발생시 실습 그대로 전송 이거대신 ValidationUtils.rejectIfEmptyOrWhitespace(errors, "id","trouble"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "pw","trouble"); 이게 더 간편 로그보면잘나옴 소스코드 packag..
타임리프 문법관련 오류(RFC 7230 and RFC 3986) https://developer-rooney.tistory.com/181 [Thymeleaf] 타임리프 a태그 링크 작성 방법 타임리프에서 a태그를 작성할 때는 th:href="@{}" 을 이용하여 작성합니다. 글 상세보기 게시글 리스트 글 상세보기 글 상세보기 글 상세보기 developer-rooney.tistory.com HTTP Status 400 – Bad Request Type Exception Report Message Invalid character found in the request target [/review/delete?reviewId=${content_view.reviewId} ]. The valid characters are defined in RFC 7230 and RFC 398..
xml 경로 설정 오류 xml이 바인딩이 안되는 오류 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.project_machimo.review.dao.ReviewDao.list 인텔리제이의 디렉터리를 만들때 위처럼 mapper/review라고 했어야 했는데 패키지처럼 mapper.review로 만드는 바람에 계속 저 오류가 떴었다.. db에서 스네이크 표기법을 한 후 자바 dto변수에서도 스네이크를 했는데, 자바 변수에 롬복으로 @DATA를 달면 자동으로 get+카멜표기법의 변수이름 이 되서 오류가 난줄 알고, 그걸 수정하고 있었다.,, 스프링 부트가 스프링보다 훨씬 쉽다길래 금방 적응할 수 있을 줄 알았는데 ..
프로젝트 마취모- spring boot의 구조 파악하기 드디어 우리 팀 레포지토리가 생겼다! 이제 점프 투 스프링을 참고하여 차근차근 내가 맡은 파트인 [판매하기 기능/ 리뷰게시판]을 구현해보자. 판매게시판은 관리자에게 먼저 승인을 받은 후 올라가는 형태이기에 생각할 부분이 좀 더 필요할 것 같다. 일단 익숙한 리뷰게시판부터 구현하기로 했다. 스프링부트로 프로젝트를 만들면 기본 구조가 이렇게 된다고 한다. 스프링과 달라진 점이라면 1. 프로젝트 관리 도구 :이때까지는 maven을 통해 빌드했지만, gradle이 더 성능이 좋고 설정이 편리하다고 한다. 2. 자바버전 : 이때까지 8버전을 사용했으나 스프링 부트 3.0 이후로는 17버전 이상을 사용해야한다. 그리고 지금 받을 수 있는건 전부 3점대 이상임...ㅎ 3. 프로젝트 타입이 spring legecy가 ..
스프링부트 3. 스프링 부트 동작원리 1. 스프링부트 동작원리 (1) 내장 톰켓을 가진다. 톰켓을 따로 설치할 필요 없이 바로 실행가능하다. 우선 톰켓에대한 개념 정리 다시필요. 소켓이 뭔지 알아야함. 소켓 : 운영체제가 가지고 있는 것. a가 5000번 포트를 열고 b가 ip주소 5000을 넣으면 서로 통신이 가능함. 그런데 이미 b가 a의 5000번 포트를 쓰고 있으면 c는 5000 번 포트로 연결할 방법이 없음 ⇒5000번 포트는 연결용도로만 쓰고 새로운 포트를 랜덤 생성해서 그걸로 통신함 근데 이렇게 되면 다른 사용자의 요청을 받을 수 없음 cpu가 b와 5001번으로 소통하고 있기 때문에 ⇒ 5001번을 만들때는 새로운 스레드를 만들어줌, 그리고 스레드가 만들어지면 원래 5000번은 끊김 소켓통신 : 시간을 쪼개서 동작. 장점: 연..
스프링 부트 2. JPA JPA란? JPA는 Java Persistence API 이다. JPA는 ORM 기술이다. JPA는 반복적인 CRUD 작업을 생략하게 해준다. JPA는 영속성 컨텍스트를 가지고 있다. JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능) JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계) 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음. JPA는 쉽지만 어렵다. JPA는 Java Persistence API 이다. ⇒ persistence: 영속성 컴퓨터의 ram에 있는 데이터는 휘발성이다. 이 데이터를 날아가지 못하게 하기 위해 하드디스크에 영구적으로 저장을 한다. 영속성 : 데이터를 생성한 프로그램이 종..