반응형

java 86

JDBC의 이해

우선 https://start.spring.io/에서 프로젝트를 다음과 같이 생성한다. 또한 h2 DB를 사용할 것이기 때문에 h2 DB를 설치해주도록 하자.h2 DB는 다음의 포스팅을 참고하여 설치한다.https://surrealcode.tistory.com/87 스프링 회원 관리 예제 2https://surrealcode.tistory.com/86 스프링 회원 관리 예제이번엔 회원 관리 예제를 만들어보려 한다.기본 환경설정에 관한 내용은 아래를 참고하자.https://surrealcode.tistory.com/85 스프링 입문 - 프로젝트surrealcode.tistory.com h2 DB에 연결을 시도해보고 연결이 된다면 다음과 같은 쿼리를 실행하여 확인해보자. drop table member if..

공부/Spring 2025.05.06

로그인 처리1 - 쿠키, 세션

로그인 요구사항- 홈 화면 - 로그인 전    - 회원 가입    - 로그인- 홈 화면 - 로그인 후    - 본인 이름(~님 환영합니다.)    - 상품 관리    - 로그 아웃- 보안 요구사항    - 로그인한 사용자만 상품에 접근하고, 관리할 수 있음    - 로그인하지 않은 사용자가 상품 관리에 접근하면 로그인 화면으로 이동- 회원 가입, 상품 관리  Package 구조는 다음과 같다.packge 구조- hello.domain    - domain        - item        - member        - login    - web        - item        - member        - login *도메인이 가장 중요하다.* 도메인 = 화면, UI, 기술 인프라 등등의 영..

공부/Spring 2025.04.07

검증2 - Bean Validation

Bean Validation을 알아보기 전에 이전에 보았던 Validation을 참고하자.https://surrealcode.tistory.com/135 검증1 - Validation검증 요구사항기존에 만든 상품 관리 시스템은 허술한 부분이 많다. id가 없어도 등록이 되거나, int값을 받는 곳에 String을 넣게되면, 4xx번대 에러가 발생하는 등 문제가 많았다. 이 부분을 해결surrealcode.tistory.com BeanValidation검증 기능을 지금처럼 매번 코드로 작성하는 것은 상당히 번거롭다. 특히 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다. 다음 코드를 보자public class Item { private..

공부/Spring 2025.04.03

검증1 - Validation

검증 요구사항기존에 만든 상품 관리 시스템은 허술한 부분이 많다. id가 없어도 등록이 되거나, int값을 받는 곳에 String을 넣게되면, 4xx번대 에러가 발생하는 등 문제가 많았다. 이 부분을 해결하기 위해 상품 관리 시스템에 새로운 요구사항이 추가되었다. 요구사항 : 검증 로직 추가- 타입 검증    - 가격, 수량에 문자가 들어가면 검증 오류 처리- 필드 검증    - 상품명 : 필수, 공백X    - 가격 : 1000원 이상, 백만원 이하    - 수량 : 최대 9999- 특정 필드의 범위를 넘어서는 검증    - 가격 * 수량의 합은 10,000원 이상 지금까지 만든 웹 애플리케이션은 폼 입력시 숫자를 문자로 작성하거나해서 검증 오류가 발생하면 오류 화면으로 바로 이동한다. 이렇게 되면 사..

공부/Spring 2025.04.01

타임리프 - 스프링 통합과 폼

타임리프 스프링 통합타임리프는 크게 2가지 메뉴얼을 제공한다. 기본매뉴얼 : https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html스프링 통합 매뉴얼 : https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 그리고 이런 부분은 스프링으로 백엔드를 개발하는 개발자 입장에서 타임리프를 선택하는 하나의 이유가 된다.  스프링 통합으로 추가되는 기능들- 스프링의 SpringEL 문법 통합- ${@myBean.doSomething()}처럼 스프링 빈 호출 지원- 편리한 폼 관리를 위한 추가 속성    ..

공부/Spring 2025.03.29

스프링 MVC 웹 페이지 만들기

우선 프로젝트 생성을 해보도록 하자.  Generate해준 후 intellij로 build.gradle을 실행시킨다.  Welcome 페이지(index)페이지를 만들어보자./resources/static 및에 index.html 파일을 생성하자. 상품 관리 상품 관리 - 기본  서버를 재실행하고 URL을 접속해보면 다음과 같은 결과를 확인할 수 있다.  href 태그를 눌러보면 localhost:8080/basic/items로 이동하는것을 볼 수 있다.   요구사항 분석상품을 관리할 수 있는 서비스를 만들 예정이다. 요구사항은 다음과 같다. 상품 도메인 모델- 상품 ID- 상품명- 가격- 수량 상품 관리 기능- 상품 목록- 상품 상세- 상품 등록..

공부/Spring 2025.03.25

스프링 MVC - 구조 이해

https://surrealcode.tistory.com/128 MVC 프레임워크 만들기프론트 컨트롤러 패턴 소개https://surrealcode.tistory.com/127 서블릿, JSP, MVC 패턴간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 JSP로 개선을 해본 뒤 MVC 패턴을 적용시켜본다. 회surrealcode.tistory.com 스프링 MVC를 이해하기 전에 이전 포스팅에서 직접 만든 MVC 프레임워크를 참고하도록 하자.   스프링 MVC 전체 구조직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보도록 하자.  기존 만들었던 MVC 프레임워크와 사실 스프링MVC 구조는 거의 동일하다(약간 이름에 차이가 있을 뿐) 직접 만든 프레임워크 -> 스프링MVC 비교- Fr..

공부/Spring 2025.03.17

서블릿, JSP, MVC 패턴

간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 JSP로 개선을 해본 뒤 MVC 패턴을 적용시켜본다. 회원 관리 웹 애플리케이션 요구사항회원 정보이름 : username나이 : age 기능 요구사항- 회원 저장- 회원 목록 조회 우선 회원 객체를 만들어준다.@Getter@Setterpublic class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; }} 이후 회원을 저..

공부/Spring 2025.03.12

객체지향 쿼리 언어2 - 중급 문법

JPQL - 경로 표현식경로 표현식 : .(점)을 찍어 객체 그래프를 탐색하는 것을 경로 표현식이라고 한다.ex)select m.username -> 상태 필드(엔티티 안에서 값을 바로 찍음)  from Member m    join m.team t      -> 단일 값 연관 필드(엔티티에서 엔티티를 찍음)    join m.orders o   -> 컬렉션 값 연관 필드(엔티티에서 컬렉션을 찍음)where t.name = '팀A' 상태 필드(state field) : 단순히 값을 저장하기 위한 필드연관 필드(association field) : 연관관계를 위한 필드  - 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티  - 컬렉션 값 연관 필드 : @OneToMany, @..

공부/JPA 2025.01.03

값 타입

JPA는 데이터 타입을 최상위 레벨로 분류하면 2가지로 분류한다. 1. 엔티티 타입  - @Entity로 정의하는 객체  - 데이터가 변해도 식별자로 지속해서 추적 가능 ex) 회원의 키나 값을 변경해도 식별자로 인식 가능2. 값 타입  - int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체  - 식별자가 없고, 값만 있으므로 변경시 추적 불가  - 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체  값 타입은 또 세가지로 분류될 수 있다.1. 기본값 타입2. 임베디드 타입3. 컬렉션 값 타입 값 타입1. 기본값 타입  - 자바 기본 타입(int, double)  - 래퍼 클래스(Integer, Long)  - String 기본 값 타입은 String ..

공부/JPA 2024.12.23
반응형