분류 전체보기 51

백엔드 서비스 아키텍처

렝React js 스프링 부트 AWS 로 배우는 웹 개발 101 책의 좋은 점 내가 놓쳤던 개념적 부분에 대해 깊게는 아니지만 알아야 할 최소한의 개념을 설명 학습내용 레이어드 아키텍처 패턴 REST 아키텍터 스타일 레이어드 아키텍처 패턴이 프로젝트 내부에서 어떻게 코드를 관리할 것인가에 대한 내용이고 REST 아키텍처 스타일은 클아이언트가 우리 서비스를 이용하려면 어떤 형식으로 요청을 보내고 응답을 받는지에 대한 것(RESTful 서비스) 1. 레이어드 아키텍처 레이어드 아키텍처 패턴은 애플리케이션을 구성하는 요소들을 수평으로 관리하는 것 수평으로 관리 한다는 것은 무엇인가? 레이어가 없는 웹 서비스를 예시로 들어 보자 복잡한 비즈니스 로직을 구현한다면 몇 백줄 ~ 몇 천줄이 넘을거고, 기능을 추가 해..

개발/도서 2022.08.08

Todo 웹 어플리케이션 만들기 - 설정2

디펜던시 라이브러리 추가 메이븐 센트럴을 사용하여 메이븐 리포지터리를 이용해서 라이브러리를 추가 1. google guava 추가(필수 X) 2. 버전 선택 28.1-jre 버전 선택 3. 구글 구아바 그래들 스니펫에 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' compileOnly 'org.projectlombok:lombok' runtimeOnly..

개발/도서 2022.08.08

Todo 웹 어플리케이션 만들기 - 설정

개발 환경 이클립스 자바 11 스프링부트, JPA React MySQL 또는 ORACLE AWS(배포) 기능 Todo 생성 Todo 리스트 Todo 수정 Todo 삭제 회원 가입 로그인 로그 아웃 배포할 애플리케이션 아키텍쳐 React.js, 스프링 부트, AW로 배우는 웹 개발 101 장점 웹 개발에 있어서 필요한 핵심 부분만 설명 시작하기 전 사전 지식(HTTP, JSON 등)에 대해 설명 백엔드와 프론트엔드로 정확하게 나눠서 설명(쉬움) 스프링 부트 설정 https://start.spring.io 스프링 부트 프로젝트 생성 Project : maven or gradle Packaging : jar java : 11 라이브러리 : Lombok, Spring Web, Spring Data JPA, H2..

개발/도서 2022.06.20

객체 지향 쿼리 언어(JPQL) - 1

객체지향 쿼리 언어 소개 JPA는 다양한 쿼리 방법을 지원 JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 JPQL 소개 가장 단순한 조회 방법 EntityManager.find() 객체 그래프 탐색(a.getB().getC()) 나이가 18살 이상인 회원을 모두 검색하고 싶다면? JPQL 사용 이유 JPA를 사용하면 엔티티 객체를 중심으로 개발 문제는 검색 쿼리 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 모든 DB데이터를 객체로 변환해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요 JPQL 특징 JPA는 SQL을 추상..

개발/JPA 2022.06.17

값 타입 - 2

값 타입의 비교 값 타입 : 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 한다. // primitive type 비교 int a = 10; int b = 10; System.out.println(a == b);//true // 임베디드 타입(인스턴스) 비교 Address a = new Address("서울", "AAA", 1000); Address b = new Address("서울", "AAA", 1000); System.out.println(a == b);//false 인스턴스가 달라서 false가 뜸 상황에 따라 다르게 비교를 한다. 동일성 비교 : 인스턴스의 참조 값을 비교, == 사용 동등성 비교 : 인스턴스의 값을 비교, equals() 사용 값 타입은 a.equals(b)를 사용..

개발/JPA 2022.06.16

값 타입 - 1

기본값 타입 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 임베디드 타입(embedded type, 복합 값 타입) EX) 좌표 등 컬렉션 값 타입(collection value type) EX) Array, Map, Set 기본값 타입 EX) String name, int a..

개발/JPA 2022.06.10

프록시와 연관관계 관리

프록시 em.find() : 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 객체를 반환 특징 프록시 객체는 실제 객체의 참조(target)를 보관 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 프록시 객체는 처음 사용할 때 한 번만 초기화 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님, 초기화되면 프록시 객체를 통해서 실제제 엔티티에 접근 가능 프록시 객체는 원본 엔티티를 상속받음, 따라서 타입 체크시 주의해야함( == X, instanceof 사용) m1.getClass() == m2.getClass() //false m1 instanceof Member /..

개발/JPA 2022.06.08

MongoDB 소개 및 설치, 간단한 사용법

NoSQL? MongoDB? 아래 링크를 꼭 참고 하길 바랍니다. https://kciter.so/posts/about-mongodb MongoDB 이해하기 사내에서 MongoDB를 잘 쓰기위한 스터디를 하게되어 이번 기회에 관련 자료를 정리하기로 했다. MongoDB가 왜 필요한지, 더 잘사용하기 위해서 무엇이 필요한지를 중심으로 처음 MongoDB를 사용할 때 kciter.so 1. WINDOW에 MongoDB 설치 https://www.mongodb.com/try/download/enterprise MongoDB Enterprise Server Download Download MongoDB Enterprise Server, which provides advanced security and perfo..

IntelliJ IDEA에 JUnit 설정 및 테스트 코드 작성

JUnit? 자바 프로그래밍 유닛 테스트 프레임워크이다. JUnit은 테스트 주도 개발(TDD) 면에서 중요하며 SUnit과 함께 시작된 XUnit이라는 이름의 유닛테스트 프레임워크 계열의 하나이다. JUnit은 컴파일 타임에 JAR로서 링크된다. 프레임워크는 JUnit 3.8 이하의 경우 junit.framework 패키지 밑에 상주하며, JUnit 4 이상의 경우 org.junit 패키지 밑에 상주한다. IntelliJ에서 JUnit 설정하기 1. Multiplier.java public class Multiplier { public int Multiply(int a, int b){ return a * b; } public int Multiply(int a, int b, int c){ return a..

개발/기타 2022.06.07

고급 매핑

주요 어노테이션 @Inheritance(strategy=InheritanceType.xxx) JOINED: 조인 전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DTYPE") @DiscriminatorValue("xxx") 상속 관계 매핑 관계형 데이터베이스는 상속 관계가 없다 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 1. 조인 전략 ITEM, ALBUM에 PK,FK가 같아 각각의 테이블에 INSERT를 수행함 장점 테이블 정규화 외래 키 참조..

개발/JPA 2022.06.07