목록전체 글 (99)
한다 공부
스프링 MVC를 적용하기 전에, 태초에는 MODEL 1 아키텍처 구조와 MODEL 2 아키텍처 구조라는 것이 있었다. ~ Model 1 ~model 1 아키텍처는 JSP와 JavaBeans만을 이용하는 웹 개발의 가장 단순한 구조이다. Bean은 자바에서의 객체를 의미하며, JavaBeans는 DB연동에 사용되는 자바 객체들인 DAO와 VO 클래스를 의미한다. 여기서는 JSP가 Controller와 View의 기능을 모두 담당한다. JSP는 HTML에 Java코드를 사용하게 할 수 있는 것이며, 자바코드는 으로 감싸야한다. 이를 스크립틀릿 태그라고 한다. 스크립틀릿으로 자바 코드를 감싸지 않으면, 에러는 나지 않지만 자바 코드가 그냥 화면에 텍스트로 뿌려진다.. 는 expression이라고 하는데, 안에..
비즈니스 로직을 구현하다보면 로깅, 예외처리, 트랜잭션 처리 등 같은 코드가 반복되는 경우가 있다. AOP는 이처럼 공통되는 로직을 묶어서 관심사를 분리하고, 코드의 응집도를 높이는 것이다. 낮은 결합도와 높은 응집도를 위해. 로깅, 예외처리, 트랜잭션 등의 반복되는 코드를 횡단 관심이라고 하고, 핵심 비즈니스 로직을 핵심 관심이라고 한다. ~ PointCut ~ 우선 포인트 컷을 설명하기 전에, 조인포인트에 대해 알아보자. 조인포인트는, 비즈니스 클래스가 가지고 있는 모든 비즈니스 메소드를 의미한다. 포인트컷은 필터링된 조인포인트, 즉 필터링된 비즈니스 메소드를 의미한다. 예를 들어 로깅 기능을 CRUD 중 C와 D에만 적용하고 싶다면, C와 D에 포인트컷을 지정해야 하는 것이다. xml에 이를 설정할..
최근에 스프링을 다시 공부할 일이 생겨서 공부하면서 배운 것을 요약 정리해봤다.. 아직 갈길이 멀구나.. ✨ ~ 스프링의 탄생 ~예전에는 EJB라는 것을 사용해서 개발을 했다. 하지만, 1. 복잡한 스펙으로 많은 학습 시간 필요, 복잡한 유지보수 2. EJB를 실행하기 위한 WAS의 비용 문제 (수천만원 이상..) 3. 메모리를 많이 사용하기 때문에 성능이 좋지 않고, 이를 개선하기 위한 여러 디자인패턴 숙지 필요 등등의 단점으로 EJB를 사용하던 시절은 개발자들에게 겨울이었다고 한다. 그러면서 2005년 개발자들의 요구가 충분히 반영된 오픈소스 프레임워크가 등장하면서 개발자들에게 봄이 찾아왔다. 그래서 이 오픈소스 프레임워크의 이름이 스프링이라고 한다. 스프링은 POJO를 사용한다. POJO란, Pla..
SQL 고득점 Kit의 문제를 다 푼지 어언 2개월.. 8문제가 새로 추가되었다.. (2024/02/25 기준) 이 8문제를 풀어보고자 합니다. 1, 4, 6, 7번은 아이템과 관련된 문제 시리즈이고, 2, 3, 5, 8번은 개발자 찾기 관련된 문제 시리즈입니다. SELECT 1. 업그레이드 된 아이템 구하기 테이블을 삼중 조인하여 parent 아이템의 데이터를 select 했다 이때, 첫번째 join 시 left join을 하지 않았다. 왜냐하면 parent 아이템이 없는 경우도 있기 때문이다. (left join을 할 경우, parent 아이템이 null로 출력되므로) SELECT P.ITEM_ID, P.ITEM_NAME, P.RARITY FROM ITEM_INFO AS I JOIN ITEM_TREE..
SQL에서 글자와 날짜는 어떻게 다루지? 풀지 않은 10문제를 풀어보며 알아보도록 하겠습니다 1) 조건에 부합하는 중고거래 상태 조회하기 처음엔 아래와 같이 중첩 IF문을 사용했는데 CASE를 사용하면 좋을 것 같다고 생각했다. SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, IF(STATUS='DONE', '거래완료', IF(STATUS='SALE', '판매중', '예약중')) AS STATUS FROM USED_GOODS_BOARD WHERE CREATED_DATE LIKE '2022-10-05' ORDER BY BOARD_ID DESC; CASE를 사용하면 아래와 같다! SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, CASE WHEN STATU..
원래는 프린트기가 데스크탑과 연결되어있어서 데스크탑에서 인쇄 버튼을 누르면 바로 프린트가 됐었다.. 그리고 이사한지 한달이 안된 오늘.. 급하게 프린트 해야하는 일이 생겨서 프린트기를 찾는데, 데스크탑은 설치도 안되어 있었고 프린트기는 전원이 뽑힌채 덩그러니 방치되어있었다 데스크탑부터 설치하는 것 보다, 내 노트북이랑 프린트기를 바로 연결한다면 빠르게 프린트를 할 수 있을 것 같아서 이것 저것 시도해보다가 찾은 방법을 공유합니다.. 참고로 와이파이를 사용해서 연결을 할건데, 모델명 뒤에 W가 붙어있지 않으면 와이파이 연결이 안되는 제품이므로 다른 해결 방안을 찾아보시는 것을 추천드립니다. 노트북과 프린터기를 연결하기 위해 두 개의 케이블이 필요합니다. 이렇게 생긴 것은 프린트기 전원입니다. 프린트기에 연..
풀지 않은 JOIN 6문제를 풀고자 합니다 JOIN은 SQL의 꽃 같은 느낌이죠.. 암요 1) 주문량이 많은 아이스크림들 조회하기 평범하게 조인하고, 맛을 기준으로 그룹으로 분류해서 SUM 하고 정렬했다. SELECT H.FLAVOR FROM FIRST_HALF AS H JOIN JULY AS J ON H.FLAVOR = J.FLAVOR GROUP BY H.FLAVOR ORDER BY SUM(H.TOTAL_ORDER + J.TOTAL_ORDER) DESC LIMIT 3; 그런데 이해가 안되는 부분이 생겼다.. 뜨아.. JOIN을 하면 아래와 같이 되고 SUM을 해버리면.. # JOIN 결과 +------------+---------------+--------------+ | H.FLAVOR | H.TOT..
고득점 키트에서 풀지 않은 그룹바이 문제 11개를 풀고자 합니다 ^_^ 오잉 그런데 순서대로 풀고 있었는데,, 며칠 뒤 그룹바이 문제목록을 보니까 순서가 바뀌어있네요 ?! 뒤죽박죽으로 11문제를 풀어보았습니다..,, 1) 조건에 맞는 사용자와 총 거래금액 조회하기 그룹바이로 분류된 문제지만 조인과 연관도 있는 문제였다 우선 두 테이블을 조인한다. 그리고 where문을 통해 개별 행마다 done인 것을 추출해낼 것이다 그리고 유저 아이디로 그룹화한 다음, 유저가 판 물건 금액의 합이 700000이상인 것을 고른다. (여담: 속성은 주로 복붙하는데.. nickname이 문제 설명에 nickanme으로 표기되어있어서 복붙 실수를 했다 ㅋㅋㅋ) SELECT U.USER_ID AS USER_ID, U.NICKNA..
앞선 두개의 포스팅에 실린 sql 문제풀이를 따라가다 보면 요만큼의 진척도가 있었다. 여기서 풀지 않은 문제들을 풀려고한다. 일단 셀렉트 문제를 풀었다 (셀렉트 문제지만 join과 group by가 다 나오는.. ㅎ) 1) 12세 이하 여자 환자 목록 출력하기 - IFNULL (원하는 속성,"NULL일 경우 대체될 값") SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO FROM PATIENT WHERE GEND_CD='W' AND AGE3000 ORDER BY F.TOTAL_ORDER DESC; 6) 조건에 부합하는 중고거래 댓글 조회하기 이건 문제가 불친절하게 되어있었는데, WHERE 절에서 댓글이 2022-10에 작성된게 아니라, ..
SQL을 4개월 만에 다시 들여다보니 기억이 잘 안나서.. 문제를 풀어 감을 익히고자 한다 🥹 프로그래머스 SQL 고득점 키트에 있는 것 중 안 풀었던 것을 풀 것임 1. SELECT https://school.programmers.co.kr/learn/courses/30/lessons/133024 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 인기있는 아이스크림 SELECT FLAVOR FROM FIRST_HALF ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID; 정렬 조건을 두 개를 주고 싶어서 컴마를 사용했다 ( , ) 2. S..