우주먼지
Firebase 란?
Framework/ETC 2023. 3. 25. 02:40

💡 FireBase 소개 BaaS 플랫폼으로 제공되는 포괄적인 도구 및 서비스 제품군으로, 개발자가 모바일 및 웹 어플리케이션을 모두 쉽게 생성, 실행 및 확장할 수 있게 하며, 실시간으로 데이터베이스, 인증, 스토리지, 호스팅 및 기타 기능을 모두 단일 플랫폼에서 관리할 수 있다. 위의 모든 기능을 하나의 Firebase에서 전부 지원하므로, 고품질 모바일 및 웹 어플리케이션을 구축, 배포 및 성장시키기 위한 포괄적 플랫폼을 제공한다. 즉, 개발자가 인프라 구축 & 관리할 필요 없이 다양한 도구와 서비스를 제공하는, 모바일 및 웹 어플리케이션 통합 개발 플랫폼이다. 데이터베이스 Firebase는 연결된 모든 기기에서 실시간으로 데이터를 동기화하는 실시간 데이터베이스를 제공한다. 개발자가 유연하고 확장 ..

Java와 Kotlin의 차이
Languages/Kotlin 2023. 3. 24. 17:43

💡 Kotlin 2017년 구글이 안드로이드 공식 언어로 채택한 언어이다. 안드로이드 앱, 서버측 앱등을 개발하는데 사용한다. 간결성, 생산성 코틀린은 자바보다 더 간결하고 직관적이며 읽고 쓰는 시간이 빠르다 자바에 존재하는 여러 준비코드(생성자 등)을 묵시적으로 제공한다. 기능이 다양한 표준 라이브러리를 제공하며 반복 코드를 줄일 수 있다. 코틀린에서 함수는 일급 객체이며 고차 함수로 사용이 가능하다. 타입추론 : 할당되는 값을 알아서 추론해준다. 안정성 런타임 에러보다 컴파일 타임 에러를 통해 디버깅이 용이하다. 모든 타입 + 기본형 타입도 클래스 타입이다. (Nullable을 위해) 코틀린은 Null이 될 수 없는 값을 추적한다. 실행 시점에 NPE가 발생할 수 있는 연산을 가진 코드를 금지한다. ..

article thumbnail
엔티티 개발

💡 엔티티 개발 엔티티 클래스를 작성할 때, Getter는 열어두고 Setter는 필요한 경우에만 사용한다. 변경 지점이 명확하도록 변경을 위한 비즈니스 메서드를 별도로 제공한다. 기본적으로 단방향 매핑으로 진행하되, Category Item은 학습을 위해 ManyToMany로 진행하며 실무에서 ManyToMany는 절대 사용하지 말자. 기본적으로 Global Fetch 전략은 Lazy로 설정하되 필요에 따라 Eager로 설정한다. 추후 createdAt, modifiedAt 같은 엔티티 공통 컬럼에 대한 Auditor를 만들 예정 임베디드 값 타입인 Address에 대한 설명을 하자면, 값 타입은 기본적으로 Immutable 해야 하기 때문에 Setter 대신 생성자를 통해서 원본 값 변경이..

article thumbnail
도메인 분석 설계

💡 요구사항 분석 강의에서는 기본적으로 엔티티들이 양방향 연관관계를 갖지만, 개인적으로 전부 단방향 연관관계로 진행한다. Global Fetch 전략은 Lazy, OSIV옵션은 False로 설정하고 진행한다. 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 💡 도메인 모델과 테이블 설계 회원 & 주문 & 상품의 관계 회원은 여러 상품을 주문할 수 있다. 한 번 주문할 때 여러 상품을 선택할 수 있다 즉 주문 - 상품의 연관관계는 N:M 이므로 조인 테이블을 두어 1:..

프로젝트 초기 설정

💡 프로젝트 생성 https://start.spring.io/ Gradle 프로젝트 Spring Boot 버전은 3.0.0 이상으로 설정한다. (개인적으로 3.0이상 버전을 경험을 위함) JDK 17 라이브러리 : Web, Lombok, Thymeleaf, JPA, H2 Database SSR (Server Side Rendering) 방식을 Default로 한다. thymeleaf 공식 사이트: https://www.thymeleaf.org/ 스프링 공식 튜토리얼: https://spring.io/guides/gs/serving-web-content/ 스프링부트 메뉴얼: https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-..

JPQL 벌크 연산 & 다형성 쿼리 & Named 쿼리
Database/JPQL 2023. 3. 22. 18:42

💡 벌크 연산 PK를 특정한 엔티티의 Update, Delete를 제외한 모든 Update, Delete 쿼리이다. 쿼리 한 번으로 여러 테이블의 Row를 변경한다. (Entity) executeUpdate()의 결과는 영향을 받은 Entity의 수를 반환한다. Insert 문을 Hibernate에서 지원한다. (insert into .. select) // 재고가 10개 미만인 Product의 Price를 쿼리 한 번으로 10% 인상 String qlString = "update Product p " + "set p.price = p.price * 1.1 " + "where p.stockAmount < :stockAmount"; int resultCount = em.createQuery(qlString..

Case
Database/SQL 2023. 3. 20. 13:00

💡 Case Case When 형식으로 When과 같이 자주 쓰이며 프로그래밍의 if - else 문과 비슷하다. When의 평가식은 '필드 = 값' 처럼 조건을 지정하는 식을 말한다. 처리 순서는 처음에 있는 When의 평가식부터 평가되고, 조건이 맞으면 Then 에 지정된 식이 리턴되며 Case식 전체가 종료된다. 만약 조건이 맞지 않으면 다음 When 으로 이동해 같은 처리를 반복한다. 기본 형식 CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END; 예시 OrderDetails 테이블의 OrderId와 Quantity를 돌면서 조건에 만족하면 End As 에 ..

검색 태그