본문 바로가기

728x90

전체보기

(65)
@Transactional에 대해서 @Transactional은 스프링으로 개발을 하게되면 Service Layer에서 붙이게 되는 어노테이션이다.스프링(Spring) 프레임워크에서 트랜잭션 관리를 위한 선언적 방식이다.메서드 레벨, 클래스 레벨에서 사용할 수 있으며, 해당 메서드 또는 클래스의 모든 public 메서드에 트랜잭션을 적용한다. @Transactional가 붙은 메서드를 실행할 때스프링은 트랜잭션을 시작하고, 메서드가 정상적으로 종료되면 트랜잭션을 commit한다.만약 예외가 발생하면 트랜잭션을 rollback한다(즉, 비정상적인 종료로 인해 rollback이 발생할 경우에는 트랜잭션의 일부 작업만 데이터베이스에 반영되는 것을 방지해 데이터 일관성을 유지한다)트랜잭션이란?하나의 논리적인 작업 단위ex) 하나의 트랜잭션은 여..
웹서버와 WAS 웹서버와 WAS의 동작 방식 (요청 → 응답 흐름)1. 요청(Request) 발생사용자가 브라우저 또는 앱에서 URL 입력, 버튼 클릭 등의 행동 → HTTP(S) 요청 발생요청에는 URL, 메서드(GET/POST 등), 헤더, 쿠키, 본문 데이터 등이 포함됨 2. 웹서버(Web Server) 처리예시: Nginx, Apache주 역할:정적 파일(HTML, CSS, JS, 이미지 등) 직접 응답SSL 종료(HTTPS 처리)리버스 프록시(백엔드 WAS로 전달)동작 흐름:요청 분석 (정적 리소스 여부 판단)정적 리소스 → 바로 응답동적 요청(API, DB 필요) → WAS로 전달 3. 웹 애플리케이션 서버(WAS) 처리예시: Tomcat, JBoss, Node.js, Spring Boot 내장 서버주 역할:..
VO, DTO, DAO 값(데이터)을 주고받는 방법에는 VO, DTO, DAO가 있습니다. VOVO는 Value Object로써,DTO와 유사하다고 할 수 있습니다.그러나 DTO와 다른 점은 Read-Only 특징(getter만 가능하다)입니다.VO는 값의 수정이 불가능합니다. DTODTO는 Data Transfer Object로써,계층( Controller, Service, 등)간 데이터를 이동할 때 사용되는 객체입니다.로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만을 갖습니다.DAO DAO는 Data Access Object로써,데이터베이스와 가장 가까운 객체라고 할 수 있습니다.데이터베이스에서 값을 CRUD할때 이용되는 객체입니다.
스프링이란 스프링의 종류스프링 프레임워크 - 스프링의 가장 핵심 스프링 부트 - 여러가지 스프링 기술들을 편리하게 사용할 수 있게 도와주는 것스프링 데이터 - CRUD를 좀 더 편리하게 사용할 수 있게 도와주는 것스프링 세션 - 세션 기능을 편리하게 사용할 수 있도록 해주는 것스프링 시큐리티 - 보안과 관련된 것스프링 Rest Docs - API 문서와 테스트를 엮어 문서화를 편하게 해주는 것스프링 Batch - 대량의 데이터 업데이트를 처리하는 것에 도움을 주는 것스프링 클라우드 - 클라우드 기술에 특화된 기술등등이 존재한다. 보통 스프링 부트를 많이 사용한다. 스프링 부트는 스프링을 편리하게 사용할 수 있도록 도와주는 기술이다.스프링 부트가 외부 라이브러리 버전 등이나 설정 같은 것을 알아서 맞춰서 설정해준다...
스프링 시작하기 현재 IDE로는 sts 이클립스를 사용하고 있다.sts내부에서 스프링 부트를 사용해서 프로젝트를 생성할 수 있다.https://start.spring.io/ 위의 사이트 형식 그대로 sts에서 사용할 수 있도록 되어있다.    가장 처음에는 프로젝트 이름과 패키지명을 정하고, 빌드 타입(maven, gradle), 패키징(jar, war), java버전, 언어(java,kotlin,groovy)를 선택한다.다음으로 어떤 라이브러리를 포함할지 선택한다.여기서 선택하지 않아도 추후에 추가가 가능하다.finish를 누르면 프로젝트가 생성된다.프로젝트이름Application.java 파일을 spring boot app으로 실행시키면 서버가 구동된다. 로컬일경우 localhost:8080으로 접속하면 아래의 페이..
쇼핑몰 만들기(13)-고객 페이지(구매확정, 리뷰 기능, pw히스토리 테이블 생성) 이번에는 고객이 구매를 확정하는 기능,리뷰를 작성하는 기능을 구현하고자한다.또한 비밀번호를 변경 할 경우 이전에 사용했던 비밀번호를 관리하기위해(이전에 사용했던 pw 사용못하게 하는 등) pw히스토리 테이블을 만들고 만들었던 기능을 좀 변경하도록 하겠다 리뷰를 작성하기 위해 따로 리뷰 테이블을 생성한다.리뷰 테이블의 기본키를 주문 테이블의 주문 번호로 설정해서, 주문 번호 하나당 리뷰 하나를 작성 할 수 있도록 한다.그리고 상품 상세페이지에 들어갈때 해당 리뷰도 같이 출력하게 할것이다 아래는 리뷰 테이블을 생성한 것이다.orders_no는 주문테이블의 기본키이고 리뷰테이블에서는 기본키이자 외래키이다. 리뷰 테이블을 생성했으니 구매확정 기능을 통해 구매확정을 하고, 리뷰를 작성하는 기능을 구현하겠다. up..
쇼핑몰 만들기(12)-관리자 페이지(주문관리, 주문 상태 변경, 주문취소) 이번에는 emp가 고객의 주문상태를 변경하는 기능, 고객의 주문을 취소하는 기능을 만들어보 그 전에 앞서 관리자 페이지에 주문관리 페이지를 만들었다.주문관리 페이지는 고객들의 주문이 리스트로 보여진다. empOrdersList.jsp> ordersList = OrdersDAO.selectTotalOrdersList(startRow, rowPerPage);%> 전체 고객 주문 목록 상품정보 주문일자 주문고객 주문번호 주문금액 주문상태 m : ordersList) { // 이미지를 출력하기 위해 상품 데이터를 가져오는 메서드 실행 String imgName = (String)GoodsDAO.select..
쇼핑몰 만들기(11)-고객 페이지(주문하기) 이번에는 고객이 상품을 주문할 수 있도록 해보겠다단 몇가지 조건을 두고 구현하고자 한다.일단 상품은 한가지씩만 구매할 수 있다. 개수는 여러개가 가능하다장바구니 없이 바로 구매하게된다.상품을 선택하면 상품 상세 페이지로 이동하게 되고, 주문하기 버튼을 누르면 주문 폼으로 이동한다 주문을 하게되면 [DB]shop.orders로 데이터가 insert된다.아래에 orders의 테이블 구조이다주문번호와, 고객의 id, 상품번호, 전체 수량 및 가격, 주소, 상태(결제완료, 배송중, 구매확정), 수정일, 생성일로 구성돼있다. 그럼 주문 폼의 코드를 보겠다.customerOrdersForm.jsp loginCustomer = (HashMap)session.getAttribute("loginCustomer");%> ..

728x90