본문 바로가기
반응형

전체 글155

[Spring] HTTP 쿠키의 개념과 로그인 구현 보통 현업에서는 Spring Security(스프링 시큐리티)라이브러리를 사용하거나, 세션을 이용합니다. 오로지 쿠키로만 로그인을 구현하면 심각한 보안 문제가 있으므로 토큰이나 세션, 라이브러리를 추가로 사용해야됩니다. 그래도 쿠키의 개념과 용도는 알아야하므로 쿠키를 다뤄보는 실습을 제작하게 됐습니다. Stateless(무상태) 프로토콜 우리가 현재 사용하는 HTTP 프로토콜은 Stateless(무상태), 비연결성 프로토콜 입니다. (연결성이 필요한 경우 소켓 프로토콜이라고 따로 이용합니다.) 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어지고, 클라이언트가 다시 요청하면 서버는 이전 내용을 기억하지 못합니다. 클라이언트와 서버는 서로 상태를 유지하지 못하는 대신의 서버의 확장성이 좋다는 장점.. 2023. 3. 27.
[Spring Boot] gitpod.io 에서 h2 데이터베이스 사용하기(RDBMS) 이 글을 작성하는 시점(2023.2.25)에서, 아래와 같이 구글 검색해보면 깃팟같은 웹IDE에서 h2같이 실습하기 좋은 내장 데이터베이스를 사용하는 법에 대해서 전혀 안알려져 있습니다. 제 글이 아마 세계 최초일 것입니다(그냥 그렇다구요..ㅎ) 어서 제 글이 세계 최초라고 해줘요(찡긋) 이용하는 법이 구글에 전혀 없어서 제가 개척해봤습니다. (리눅스 명령어 조금은 할줄 아므로..) 어서 세계 최초라고 해줘요(찡긋) 아니면 국내 최초라도.... 언제어디서나 웹브라우저만 가지고 코딩하거나, 자신만의 노트북이 없거나, 아니면 군입대(ㅋㅋ...)처럼 웹브라우저로 개발환경을 구축하는 사람은 언제나 있을거라고 생각합니다. gitpod에서는 에디터와 콘솔 환경만 쓸수 있고, 일반 컴퓨터처럼 mysql workben.. 2023. 2. 25.
[Spring JPA] 상속관계 엔티티 매핑 전략 (@Inheritance @DiscriminatorColumn) 이전 포스트들 보고 이어서 하기 스프링부트와 jpa 연동(설정)하기 테이블,엔티티 jpa로 생성하기 프로젝트(이전포스트) 상속관계 매핑 자바 객체는 상속 관계가 존재하지만, 관계형 데이터베이스는 상속관계가 대부분 없습니다. JPA를 이용해서 매핑하는 법에는 세가지가 있는데 아래와 같습니다. @Inheritance(strategy=InheritanceType.XXX)의 stategy를 설정해주면 됩니다. default 전략은 SINGLE_TABLE(단일 테이블 전략)이다. InheritanceType 종류 JOINED SINGLE_TABLE TABLE_PER_CLASS @DiscriminatorColumn(name="DTYPE") 부모 클래스에 선언합니다. 자식 클래스를 구분하는 용도의 컬럼이다. 관례는 .. 2023. 2. 1.
[Spring JPA] 엔티티(연관 테이블) 생성하고 일대일,일대다 연관관계(1:1 1:n) 설정하기 JPA 세팅에 대해선 이전 포스트를 보고 참고하세요! build.gradle (스프링 2.7.8 기준) getter,setter를 자동으로 생성해주는 lombok 디펜던시를 사용했습니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' // implementation 'org.springframework.boot:spring-boot-devtools' com.. 2023. 1. 31.
[Spring 입문] AOP 개념과 간단한 예제 - 메서드 시간측정 AOP 란? AOP(Aspect Oriented Programming)는 관점지향적 프로그래밍의 약자로 스프링 기술의 핵심이 되는 개념입니다. 관점 지향은 어떤 로직(ex. 한 기능의 총 걸린 시간 측정하기)을 기준으로 각각 모듈화 하겠다는 것입니다. 만약 모든 기능의 시간(회원 가입시간, 조회 시간)을 측정해서 어디부분이 성능 저하를 일으키는지 구하고 싶으면 모든 메서드에 아래와 같은 로직을 적용 시켜줘야 합니다. public ? 측정하려는_메서드(?){ Long start = System.currentTimeMillis(); try { // 메서드의 본래 내용 } finally { Long end = System.currentTimeMillis(); Long timems = end - start; S.. 2023. 1. 24.
[Spring 입문] 스프링부트 JPA를 이용해서 MySQL 연결하기 (AWS이용) 연동 이전 포스트에 맞춰 실습하겠습니다! (VSCode on Gitpod.io WEB IDE) https://konkukcodekat.tistory.com/entry/Spring-%EC%9E%85%EB%AC%B8-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0%EC%99%80-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%9D%98%EC%A1%B4%EA%B4%80%EA%B3%84%EC%A3%BC%EC%9E%85-Dependency-Injection-%EC%8B%A4%EC%8A%B5 [Spring 입문] 계층 구조와 클래스 의존관계/주입 (Dependency Injection) 실습 입문자의 비즈니스 실습 요구 사항 정리 데이터 : 회원 ID , 이름 기능 : 회원 등록, 조회 아.. 2023. 1. 21.
[Spring 입문] 스프링부트와 MySQL연결하기 - JDBC Template (AWS이용) 이전 포스트에 맞춰 실습하겠습니다! (VSCode on Gitpod.io WEB IDE) https://konkukcodekat.tistory.com/entry/Spring-%EC%9E%85%EB%AC%B8-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0%EC%99%80-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%9D%98%EC%A1%B4%EA%B4%80%EA%B3%84%EC%A3%BC%EC%9E%85-Dependency-Injection-%EC%8B%A4%EC%8A%B5 [Spring 입문] 계층 구조와 클래스 의존관계/주입 (Dependency Injection) 실습 입문자의 비즈니스 실습 요구 사항 정리 데이터 : 회원 ID , 이름 기능 : 회원 등록, 조회 아.. 2023. 1. 21.
[Spring 입문] 스프링 빈(Bean)과 의존관계 설정(Dependency Injection) 스프링 빈 (Spring Bean) 스프링 빈이란 스프링 컨테이너에서 관리되는 자바 객체를 의미합니다. 저번에 만든 서비스와 레포지토리를 스프링이 알아볼수 있게 빈으로 등록할 수 있습니다 스프링 컨테이너 스프링 컨테이너는 스프링 빈의 생명 주기를 관리하고, 스프링 빈들에게 추가적인 기능을 제공하고, DI(Dependency Injection 의존관계 주입)와 IoC원리가 스프링 컨테이너에 적용됩니다. 저번 포스트에서는 new 연산자, 인터페이스 호출 등등으로 의존성 주입하고 객체를 생성했었습니다. 스프링 컨터이너를 사용하면 스프링이 알아서 다 관리해줍니다. 스프링 빈 등록 방식 스프링 등록 방식에는 총 두가지 방법이 있고, 두가지 방법 다 중요합니다! 편리한건 컴포넌트 스캔이지만, Configuratio.. 2023. 1. 20.
[Spring 입문] 자바 JUnit 프레임워크를 이용해서 테스트 케이스 작성 스프링 테스트 하기 개발한 기능을 실행해서 테스트 할 때 자바의 main 메서드를 통해서 서버를 직접 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행해서 테스트 할 수 있습니다. 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있습니다다. 자바는 JUnit이라는 프레임워크로 테스트를 실행해서 이러한 문제를 해결합니다. 대규모 협업 프로젝트 할땐 테스트 케이스 없이 프로젝트 진행이 아예 불가하고, 로버트 마틴의 '클린 코트'책에 따르면 개발코드와 테스트 코드는 1:1 로 투자하는 게 맞을 정도로 엄청 중요하다고 했습니다. JUnit 자바 단위테스트란? Java에서 독립된 단위테스트 (Unit test)를 지원해주는 프레임.. 2023. 1. 15.
[Spring 입문] 계층 구조와 클래스 의존관계/주입 (Dependency Injection) 실습 입문자의 비즈니스 실습 요구 사항 정리 데이터 : 회원 ID , 이름 기능 : 회원 등록, 조회 아직 데이터저장소가 없다고 가정하고, 자바내부 자료구조를 이용해서 모의로 실습 해볼 것입니다. 서비스, 리포지토리와 , 도메인관계 웹앱의 구조는 보통 위와 같이 분류가 됩니다. 컨트롤러 : 웹MVC의 컨트롤러 역할로 받는 라우터 마다 나눠서 정의 합니다. 서비스 : 핵심 기능의 로직을 구현합니다. (컨트롤러에서 서비스의 함수를 호출하는 방식) 도메인 : '흔히 아는 객체'. 회원,주문,쿠폰 등등의 객체를 클래스로 정의합니다. 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장, 조회, 관리 등등을 합니다. 클래스 의존관계/주입 (Dependency Injection) 어떤 클래스가 다른 클래스에 접.. 2023. 1. 15.