TIL(Develop)56 📖Hibernate/JPA의 id 생성 전략들 📖Identifiers in Hibernate/JPA strategies of id generations https://www.baeldung.com/hibernate-identifiers AUTO Generation strategy 숫자 타입 the primary key value들은 database level에서 unique하게 됨 based on a sequence or table generator @Entity public class Student { @Id @GeneratedValue private long studentId; // ... } UUID 타입 Hibernate 5부터 추가된 UUIDGenerator를 이용 Hibernate will generate an id of the form .. 2024. 1. 17. 클라이언트에서 데이터를 받아오는 방법 클라이언트에서 데이터를 받아오는 방법 Path Variable (GET) 방식 → Primitive 타입으로 받는다 Request Param (GET)방식 → Primitive 타입으로 받는다 Request Param (POST) 방식 Model Attribute 방식 → QueryString을 객체로 받는다 Request Body 형식 → JSON을 객체로 받는다 1. Path Variable (GET)방식 → Primitive 타입으로 받는다 html에서 /hello/request/star/${name}/age/${age} 데이터를 전송 // [Request sample] // GET @GetMapping("/star/{name}/age/{age}") @ResponseBody public String.. 2023. 12. 6. 인증과 인가 인증과 인가 인증(Authentication) 인증 : 해당 유저가 실제 유저인지 인증하는 개념 실제 그 유저가 맞는지를 확인하는 절차 ex) 스마트폰 지문인식, 사이트 로그인 등 인가(Authorization) 인가 : 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념 ex) 관리자 페이지-관리자 권한, 회원/비회원 여부에 따라 다른 권한을 받음 “웹 애플리케이션 인증” 일반적으로 서버-클라이언트 구조로 되어있고, 실제로 이 두가지 요소는 아주 멀리 떨어져 있다. 그리고 Http 라는 프로토콜을 이용하여 통신하는데, 그 통신은 **비연결성(Connectionless) 무상태(Stateless)**로 이루어짐 비연결성(Connectionless) 서버와 클라이언트가 연결되어 있지 않다 채팅.. 2023. 11. 20. Spring Bean Bean 수동 등록 new project → web, lombok, thymeleaf 추가 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok' dependency 프로젝트 생성시 추가하는거 까먹어서 수동으로 gradle.build에 추가해줌 // Security implementation 'org.springframework.boot:spring-boot-starter-security' Security 추가해줌! Security 기능 제한.. 2023. 11. 20. JPA in Spring Boot JPA in Spring Boot SpringBoot 환경에서의 JPA 메모장 프로젝트 JPA 설정 build.gradle : spring-boot-starter-data-jpa 추가 // JPA 설정 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' application.properties : Hibernate 설정 spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.use_sql_comme.. 2023. 11. 15. [JPA Core] JPA Core - Java 환경에서의 JPA JPA란 무엇일까? DB를 직접 다룰 때의 문제점 애플리케이션에서 아래 형태의 객체 데이터를 DB에 저장해서 관리해야 하는 상황 public class Memo { private Long id; private String username; private String contents; } DB 테이블 만들기 create table memo ( id bigint not null auto_increment, contents varchar(500) not null, username varchar(255) not null, primary key (id) ); 이처럼 직접 DB로 접속해서 SQL을 호출해야합니다. 애플리케이션에서 SQL 작성 String sql = "I.. 2023. 11. 15. IoC와 DI IoC (제어의 역전) → 객체지향의 SOLID 설계원칙 DI (의존성 주입) → GoF 디자인 패턴 김치 볶음밥 맛있게 만드는 방법 (설계 원칙) 김치 볶음밥 레시피 (디자인 패턴) 좋은 코드를 위한 Spring의 IoC와 DI 논리가 간단해야 한다. 중복을 제거하고 표현을 명확하게 한다. 코드를 처음 보는 사람도 쉽게 이해하고 수정할 수 있어야 한다. 의존성을 최소화해야 한다. 새로운 기능을 추가 하더라도 크게 구조의 변경이 없어야 한다. → DI 패턴을 사용하여 IoC 설계 원칙을 구현하여 Spring이 개발자가 Java를 사용하여 쉽게 좋은 코드를 작성할 수 있도록 도와줌 의존성 강하게 결합되어있는 Consumer 와 Chicken public class Consumer { void eat() {.. 2023. 11. 9. 3 Layer Architecture 역할 분리 지금의 메모장 프로젝트는 MemoController로 모든 api를 처리하고 있음 한개의 클래스에 너무 많은 코드가 존재해서 코드를 이해하기가 어려움 코드의 추가/ 변경 요청이 계속 생김 → MemoController 구현한 개발자 퇴사하면 큰일남 서버의 기능을 3 Layer Architecture : Controller, Service, Repository 으로 분리함 client ↔ controller ↔ service(로직 처리)↔ Repository(DB CRUD 처리) 역할 분리하기 src → main → com → service 패키지 생성 → MemoService 클래스 생성 package com.sparta.memo.controller; import com.sparta.memo.dto.Me.. 2023. 11. 9. Database&SQL&JDBC DBMS Database Management System’ Database를 관리하고 운영하는 소프트웨어 RDBMS Relational DBMS 관계형 데이터베이스 RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있다. 테이블간 FK(Foreign Key)를 통해 다른 데이터를 조합해서 함께 볼수 있는 것이 장점 아이디 이름 전화번호 그룹 column 명 ka123 카즈하 010-7777-7777 르세라핌 1 row kim123 김채원 010-6666-6666 르세라핌 2 row sa123 사쿠라 010-8888-8888 르세라핌 3 row heo123 허윤진 010-0000-0000 르세라핌 4 row hong123 홍은채 010-1.. 2023. 11. 7. 이전 1 2 3 4 5 6 7 다음