반응형

전체 글 96

[인천 서구 맛집] 광명대창집 인천본점 석남점 여긴 진짜다! 강추 (대창 맛집/인천 맛집/석남동 맛집/찐맛집/가격)

평소 곱창/막창/대창 등 내장 매니아인 저는...... 광명대창집 본점을 가봤습니다! 결론부터 말씀드리면 진짜 맛있어요. 강추! 대창같은 경우는 느끼한 경우가 많은데 여긴 찐입니다. 광명대창집 인천본점 위치 : 인천광역시 서구 석남동 453-18번지 (가정로 293번길 14-1) 영업시간 : 오후 4시 ~ 9시, 매주 월요일 휴무 (예약가능) 검색해봤을 때, 웨이팅이 항상 있다고 해서 토요일 오후 5시쯤! 방문했습니다.ㅎ 근데 웬걸.. 웨이팅이 하나도 없어 바로 들어 갈 수 있었어요! 대기할 때, 심심할까봐 두신 것 같은 옛날 놀이? 용품들이 세팅되어있었어요ㅎ 광명 대창집 가격은 아래와 같습니다! (2022.05.07 기준) - 대창 : 14,900원 - 막창 : 15,900원 - 곱창 : 19,000원..

일상/[맛집] 2022.06.04

[코드로 배우는 스프링 웹 프로젝트] 20강. 댓글과 댓글 수에 대한 처리 (트랜잭션 적용)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 게시글에 달린 댓글의 개수를 나타내기 위해 댓글 추가시, replyCnt(댓글 개수) 컬럼을 update하는 예제를 진행해본다. 먼저, tbl_board 테이블에 replyCnt 컬럼을 추가한다. (기본 값 0) alter table tbl_board add (replyCnt number default 0); 기존에 댓글이 존재했다면, replyCnt에 반영해 두어야 하므로 아래의 쿼리를 실행한다. update tbl_board set replyCnt = (select count(rno) from tbl_reply where tbl_reply.bno = tbl_board.bno); 적용 결과 20.1 프로젝트 수정 위와 같..

[코드로 배우는 스프링 웹 프로젝트] 19강. 스프링에서 트랜잭션 관리 (트랜잭션, ACID ...)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 트랜잭션(Transaction)이란? : 한 번에 이루어지는 작업의 단위를 뜻함. (쪼갤 수 없는 하나의 단위 작업) 트랜잭션의 성격을 'ACID 원칙'으로 설명한다. 아래의 표를 참고해보자. 19.1 데이터베이스 설계와 트랜잭션 데이터베이스의 저장 구조를 효율적으로 관리하기 위해서는 '정규화' 작업을 한다. '정규화' 작업은 '중복된 데이터를 제거'해서 데이터 저장의 효율을 올리는 것을 목표로 한다. 정규화를 진행하면 1) 테이블을 늘어나고, 2) 각 테이블의 데이터 양은 줄어드는 것이 일반적이다. 정규화의 목적과 단계 별 정규화에 대해 상세히 알고 싶다면, 여기 글을 참고하면 좋다. 19.2 트랜잭션 설정 실습 스프링의..

[MSA] REST Web Service 성숙도 모델 (REST Maturity Model)

성숙도 모델을 통한 REST Web Service의 성숙도 판단하기 Leonard Richardson이 REST 서비스 성숙도 모델을 고안함. 레벨 0 : 단일 URI와 단일 동사로부터 레벨 3 : HATEOAS까지 총 네 단계로 구성되어 있음. 레벨 2 부터 진정한 RESTful 서비스 수준에 도달했다고 말할 수 있음. 성숙도 모델 레벨 별 요약 Level 3 : HATEOAS 클라이언트 요청에 따른 응답에 하이퍼미디어 컨트롤을 포함하고 있어서 클라이언트가 다음에 어떤 액션을 할 지 안내한다. 리소스를 표현하는 것 이상의 정보를 갖고 있어서 RESTful에 대한 논쟁이 있다. Level 2 : HTTP Verbs POST와 더불어 GET, HEAD, DELETE, PUT을 사용하며, 진정한 REST 서..

[IT]/MSA 2022.05.09

[코드로 배우는 스프링 웹 프로젝트] 18강. AOP라는 패러다임 (Aspect-oriented programming/트랜잭션/AOP 용어 정리)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. AOP(Aspect-oriented programming)는 '관점 지향 프로그래밍'이라는 용어로 해석되는데 이때 '관점(Aspect)'는 '관심사(concern)'라는 말로 통용된다. 주로, 아래와 같이 핵심 로직은 아니지만, 코드를 온전하게 만들기 위해서 필요한 고민들이다. 파라미터가 올바르게 들어왔는가? 이 작업을 하는 사용자가 적절한 권한을 가진 사용자일까? 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리할까? AOP가 추구하는 것은 이와 같은 반복적인 부분을 '관심사의 분리(separate concerns)'하는 것이다. 즉, AOP는 개발자가 염두에 두어야하는 일들은 별도의 '관심사'로 분리하고, 핵심 비즈..

[Spring] 스프링 AOP 적용 시 에러 발생 (ERROR: org.springframework.web.context.ContextLoader - Context initialization failedorg.springframework.beans.factory.BeanCreationException) / @Transactional 사용시 오류

스프링 트랜잭션 적용 중 아래와 같은 오류가 났다. 해결 방법을 알아보자! 오류 내용 ERROR: org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.event.internalEventListenerProcessor': ERROR: org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans..

오류해결 2022.05.07

[JAVA] OOP(객체 지향 프로그래밍)의 개념과 특징 (장단점/추상화/다형성/캡슐화/상속)

OOP(Object Oriented Programming)이란? 더보기 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 출처 : https://ko.wikipedia.org/wiki/객체_지향_프로그래밍 OOP(객체 지향 프로그래밍)이란 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로 객체들이 서로 상호작용하는 프로그래밍 이론이다. 위와 같이 프로그램을 "객체"들의 모임으로 파악하는 것에 의미를 둔다. 또한, OOP는 코드 재사용성과 생산성의 향상 효과를 볼 수 있고,..

[IT]/JAVA 2022.05.04

[코드로 배우는 스프링 웹 프로젝트] 17-3. Ajax 댓글 처리 (페이징처리/DB인덱스생성..)

ReplyService ReplyService 해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 앞서 작성된 예제들을 해당 게시물의 전체 댓글을 가져와서 화면에 출력한다. 댓글이 몇 개 없을 때는 괜찮지만, 만약 1000개 라면? DB에서 모두 조회해야하며 끝없는 스크롤을 내리게 될 것 이다. (성능 문제는 물론) 이러한 문제를 페이징 처리를 이용하여 처리해볼 것 이다. 17.6 댓글의 페이징 처리 17.6.1 데이터베이스의 인덱스 설계 댓글에 대해 우선적으로 고려해야할 부분은 tbl_reply 테이블을 접근할 때 댓글의 번호(rno)가 아니라, 게시물의 번호(bno)가 중심이 되어야한다. tbl_reply의 PK는 rno이므로, bno에 대해 인덱스를 생성해주자. cre..

[코드로 배우는 스프링 웹 프로젝트] 17-2. Ajax 댓글 처리 (JQuery/이벤트위임/모달창띄우기/게시물 댓글 관리)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 17.4 JavaScript 준비 JSP 내에서 댓글에 대한 처리는 하나의 페이지 내에서 모든 작업이 이뤄지기 때문에 조금 복잡하다. 또한 기존과 달리 JavaScript와 동적으로 만들어지는 HTML로 처리하기 때문에 각 단계를 작성할 때 주의해야한다. 17.4.1 JavaScript의 모듈화 JavaScript에서 가장 많이 사용되는 패턴 중 하나는 모듈패턴이다. 모듈패턴이란 쉽게 말해 관련있는 함수들을 하나의 모듈처러 묶음으로 구성하는 것을 의미한다. 예제 프로젝트의 webapp 내 resources/js 폴더에 reply.js 파일을 작성해본다. reply.js : 우선은 아무 기능 없이 생성해 놓는다! consol..

[코드로 배우는 스프링 웹 프로젝트] 17-1강. Ajax 댓글 처리 (게시판 댓글 페이징/CRUD 처리하기...)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 17.1 프로젝트의 구성 REST 처리를 위해서는 pom.xml에서 수정된 내용이 대부분이므로, PART3 에서 사용된 'src/main/java'폴더 아래 모든 Java코드를 그대로 복사해서 사용한다. 또한, 'src/main/resources'에서는 log4jdbc-log4j2를 이용하기 위해서 log4jdbc-log4j2.properties 파일을 추가해야한다. 프로젝트는 오라클을 이용하으로 프로젝트 설정을 통해 JDBC 드라이버가 프로젝트 경로에 포함되도록 설정이 필요하다. * 프로젝트명 우클릭 > Properties > Java Build Path > Libraries > ojdbc추가 * 프로젝트명 우클릭 > P..