Lecture

· Lecture
서론 **[스터디/12기] 단순 CRUD는 그만! 웹 백엔드 시스템 구현(Spring Boot) 이 스터디를 참여해서 쓴 글입니다. 2주차 세션에 대한 내용은 아래와 같습니다. 🗓 2주차 인증과 인가(Authentication and Authorization) 2주차 미션 핵심 ✅ Spring Security를 활용한 인증(Authentication) ✅ 서비스 확장 시 Session 기반 사용자 인증의 문제점 알기 ✅ 장애 대응을 위한 분산서비스 구조 ✅ Stateless 아키텍처와 JWT(JSON Web Token) 우리는 보통 웹 백엔드 공부를 시작할 때, 쿠키나 세션을 통한 인증 처리 위주로 배우곤 한다. 그런데 실무에선 서비스가 커지면서 이용자가 많아지면 세션이 무척 바빠지면서 서버가 뻗을 수 ..
· Lecture
1주차 미션 정리 서론 *[스터디/12기] 단순 CRUD는 그만! 웹 백엔드 시스템 구현(Spring Boot) 이 스터디를 참여해서 쓴 글입니다. 1주차 미션에 대한 내용은 아래와 같습니다. 간단한 CRUD 만들어보기 1주차 미션에서 적용했던 부분과 배웠던 부분에 대해서 이야기를 해보려고 합니다. 기술 스택 Java 11 Maven Spring Boot 2.6.3 Spring Web Spring JDBC Spring Validation 배운 점 Email VO 분리 User 도메인에 있는 email은 validation이 필요하다. 이것은 User의 책이밍라기 보단 Email 객체의 책임이라고 생각이 들었다. 따라서 해당 필드를 VO로 분리하였다. public class Email { private s..
· Lecture
1주차 세션 정리 서론 **[스터디/12기] 단순 CRUD는 그만! 웹 백엔드 시스템 구현(Spring Boot) 이 스터디를 참여해서 쓴 글입니다. 1주차 세션에 대한 내용은 아래와 같습니다. 🗓 1주차 내 손으로 직접 Maven 기반 Spring Boot 프로젝트 셋업하기 1주차 미션 핵심 ✅ Spring 주요 개념 (이미 알아도 다시)제대로 짚고 가기 ✅ Spring Boot 개론(Spring 3.* 버전만 사용해본 경우, 필수 내용) ✅ Maven 프로젝트 직접 세팅 IDE는 IntelliJ, Eclipse 둘 중 본인이 편한 것을 써도 된다. 또한, 프로젝트 셋업은 모두 준비된 것을 주어주지 않는다. 앞으로의 미션 수행을 위해 직접 세팅하는 것 이 중요하다. 매번 누가 던져준 환경에서만 개발해본..
· Lecture
1. 프로젝트 생성 Gradle / Java11 / Spring Boot 2.3.x / Spring Boot web, Thymelaf 2. 라이브러리 살펴보기 의존관계가 있는 라이브러리를 함께 다운로드 한다. 스프링 부트 라이브러리 spring-boot-starter-web spring-boot-starter-tomcat: 톰캣 (웹서버) spring-webmvc: 스프링 웹 MVC spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View) spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅 spring-boot spring-core spring-boot-starter-logging logback, slf4j 테스트 라이브러리 spring-boo..
Spring Data JPA와 QueryDSL 이해 Spring Data JPA 소개 지루하게 반복, 중복되는 CRUD 문제를 세련된 방법으로 해결 개발자는 인터페이스만 작성 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입 적용 전 public class MemberRepository { public void save(Member member) {...} public Member findById(Long id) {...} public List findAll() {...} public Member findByUsername() {...} } 적용 후 public interface MemberRepsoitory extends JpaRepository { List findByUsername(Stri..
JPA 객체지향 쿼리 JPA는 다양한 쿼리 방법을 지원 JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 JPQL 소개 가장 단순한 조회 방법 EntityManager.find() 객체 그래프 탐색을 할 수 있어 엔티티 객체를 중심으로 개발 가능 문제는 검색 쿼리인데, 테이블이 아닌 엔티티 객체를 대상으로 검색 그러나 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공 SQL과 문법 유사 SELECT, FROM, WHERE, GROUP BY,..
6. JPA 내부구조JPA에서 가장 중요한 2가지객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping)영속성 컨텍스트영속성 컨텍스트엔티티 매니저 팩토리와 엔티티 매니저엔티티를 영구 저장하는 환경이라는 뜻영속성 컨텍스트는 논리적인 개념으로 눈에 보이지 않습니다.엔티티 매니저를 통해서 영속성 컨텍스트에 접근J2SE 환경에서는 엔티티 매니저와 영속성 컨텍스트가 1:1JSEE, 스프링 프레임워크 같은 컨테이너 환경에서는 엔티티 매니저와 영속성 컨텍스트가 N:1엔티티 생명주기엔티티 생명주기(entity LifeCycle)영속성 컨테스트의 장점1차 캐시동일성(identity) 보장트랜잭션을 지원하는 쓰기 지연 (transactional write-behind)변경 감지 (Dirty Ch..
5. 양방향 매핑 연관관계 주인과 mappedBy mappedBy == JPA의 멘붕 클래스 mappedBy는 처음에는 이해하기 어렵다. 객체와 테이블간에 연관관계를 맺는 차이를 이해해야 한다. 객체와 테이블이 관계를 맺는 차이 객체 연관관계 회원 → 팀 연관관계 1개(단방향) 팀 → 회원 연관관계 1개(단방향) 즉 양방향은 단방향 2개로 이루어져있다. 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단방향 관계 2개다. 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다. 테이블 연관관계 회원 ↔팀의 연관관계 1개(양방향) 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리 외래 키 하나로 양방향 연관관계 가짐(양쪽으로 조인할 수 있다.) 둘 중 하나로 외래 키를 관리해야 한..
4. 연관관계 매핑 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. - 조영호(객체지향의 사실과 오해) 객체를 테이블에 맞추어 모델링(연관관계가 없는 객체) 참조 대신에 외래 키를 그대로 사용한다면? import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Member { @Id private Long id; private Long teamId; private String name; public Long getId() { return id; } public void setId(final Long id) { this.id = id; } public Long getTeamId() { return..
3. 필드와 컬럼 매핑 데이터베이스 스키마 자동 생성하기 JPA DDL Auto With Hibernate 매핑 어노테이션 @Column name : DB column명을 쓸 때 사용 (필드명과 같으면 생략이 가능) insertable, updateable: 읽기 전용 nullable: null 허용 여부 결정 - DDL 생성시 사용 unique: 유니크 제약 조건, DDL 생성시 사용 columnDefinition : 컬럼 정보를 줄 수 있다. length(default 255) : 문자 길이 제약조건 precision : 소수점을 포함한 전체 자리수 scala : 소수 자리수 @Temporal 시간 관련된 속성 TemporalType.DATE : 날짜 TemporalType.TIME : 시간 Temp..
Seyun(Marco)
'Lecture' 카테고리의 글 목록