728x90

자바 25

배열 선언 및 초기화(initialization)

배열(Array) 이란? 배열(Array)이란 선형 자료구조(Data Structure)중 하나로, 동일한 타입의 연관된 데이터를 메모리에 연속적으로 저장하여 하나의 변수에 묶어서 관리하기 위한 자료 구조입니다. 가장 기본적인 자료구조인 만큼 C,Java,Python등 거의 모든 언어에 구현되어 있습니다. 배열의 길이는 최초 선언한 값으로 고정되며 위와 같이 인덱스(Index)를 통해 데이터에 접근 할 수 있습니다. 배열(Array) 선언 및 초기화 배열을 선언할때 참조변수만 먼저 선언하여 크기 및 값을 이후에 초기화 하는 것도 가능하고 최초 선언시 부터 배열의 크기 및 값을 할당해 주는 것도 가능합니다. 아래는 여러가지 방법으로 배열을 선언하고 초기화 하는 예제입니다. //크기 할당 & 초기화 없이 배..

JAVA 2023.09.24

(코틀린 버전) 안드로이드 푸시알림 spring boot 서버 개발

파이어베이스는 2011년 파이어베이스사가 개발하고 2014년 구글에 인수된 모바일 및 웹 애플리케이션 개발 플랫폼 구글 드라이브와 애널리틱스를 적용해서 어떤 기기에서나 개발할 수 있는 환경을 만들어 주고, 사용자들의 이용횟수, 광고 효과, 문제 발생 빈도 등을 알려줘서 개발자들이 쉽게 활용할 수 있도록 지원 파이어 베이스의 인증 기능을 이용한 SSO(통합 인증)을 지원하는 서비스를 통해 사용자는 로그인을 활동을 쉽게 할 수 있음 파이어베이스는 NoSql 클라우드 데이터베이스에 JSON 형태로 데이터를 저장하고 클라이언트에 실시간으로 동기화 파이어베이스는 HTML , CSS, 자바스크립트 등과 같은 정적 콘텐츠를 빠르고 안전하게 호스팅해줍니다. 또한 SSL을 제공하기 때문에 안전하게 컨텐츠를 전송 컨트롤러..

Entity Manager Factory와 persist, flush, commit

Entity Manager Factory와 persist, flush, commit 연관 관계 학교에서 한 명의 학생이 하나의 반에 속해있는 상황을 가정해보자. class Student { int studentId; String name; Class clazz; } class Class { int classId; String className; Teacher teacher; } OOP 에서는 학생에 대한 객체가 반에 대한 객체를 포함한다. 정확히는 참조를 가지고 있다. 반면, RDB 에서는 참조를 가지는 것이 아니라 반에 대한 참조를 FK 로 대체하고, 반에 대한 데이터를 분리하여 따로 저장해야한다. 즉, 데이터 저장 시에 데이터를 분리하여 2개의 쿼리를 사용해야 하며, 다시 읽을 때는 조인을 통한 재조..

JPA 2023.03.06

@Controller와 @RestController의 차이점

@Controller와 @RestController의 차이 1. @Controller 이해 Controller로 View 반환하기 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾는다. HandlerMapping을 통해 요청을 Controller로 위임한다. Controller는 요청을 처리한 후에 ViewName을 반환한다. DispatcherServlet은 ViewResolver를 통해 View..

Spring 2023.03.05

(스프링 고급편) 스프링 AOP

스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때..

Spring 2023.03.02

AOP - 관점 지향 프로그래밍

스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때..

Spring 2022.09.13

(스프링부트 Rest API) 다건 삭제 관련

Bulk delete 일반적으로 HTTP 메소드를 사용할 때 데이터 위치는 아래와 같습니다. GET, DELETE => header에 데이터 포함 POST, PUT => body에 데이터 포함 방법 1 첫 번째 방법은 구분자를 사용해서 path로 데이터를 넘기는 방법입니다. DELETE /resources/1;2;3;4 DELETE /resources/1+2+3+4 DELETE /resources/1,2,3,4 방법 2 두 번째 방법은 QueryString을 사용하는 방법입니다. DELETE /resources?id=1&id=2&id=3&id=4 방법 3 세 번째 방법은 POST나 PUT을 사용하는 방법입니다. 첫 번째, 두 번째 방법의 문제점은 길이의 제약이 있다는 점입니다. 브라우저마다 URL의 Ma..

Rest API 2022.08.30

@Transactional(rollbackFor = Exception.class) 에 대해

1. 서론 초반 @Transactional 어노테이션에 대해 자세히 알아보지 않고, 막연히 롤백때 사용한다고 하여 SQL C,U,D 를 할 때마다 메소드 위에 붙여서 사용하곤 하였다. 하지만, 내 코드를 보신 선임께서 단지 @Transactional 만 붙이면 롤백이 안되고, @Transactional(rollbackFor = Exception.class) 을 붙여야 된다고 알려주셨다. 여기에서 뭐 때문인지에 대해 호기심에 트랜잭션에 대해 찾아보다가 내가 생각했던 것 보다 더 많은 기능들이 존재한다는 것을 알고 정리해보려 한다. 2. 트랜잭션이 뭐지? 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다. begin, commit 을 자동으로 수행해준다. 예외 발생 시 rol..

JPA 2022.08.26

HashMap 사용 방법 및 예제

HashMap은 Map의 일종으로 key와 value의 쌍으로 이루어진 데이터를 보관합니다. HashMap은 다음과 같은 특징이 있습니다. null key와 null value를 모두 허용합니다. 내부적으로 데이터에 접근할 때 동기화를 보장하지 않습니다. 데이터의 순서를 보장하지 않습니다. 중복된 key값을 허용하진 않지만, 중복된 값은 갖을 수 있습니다. HashMap은 다음과 같은 API들을 제공합니다. 예제를 통해 어떻게 사용하는지 알아보겠습니다. put() putAll() get() remove() clear() isEmpty() keySet() values() containsKey() containsValue() replace() put() put()은 인자로 key와 value를 받습니다. 전..

JAVA 2022.08.16

ArrayList 중복 값 개수 세기(부제: Map 자료구조)

반복문을 이용하여 HashMap 객체에 key(원소), value(중복 횟수) 형식으로 저장하고 출력하는 방법입니다. 예제 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; public class ArrayListDupCheck { public static void main(String[] args) { // ArrayList 준비 ArrayList list = new ArrayList(Arrays.asList("A", "B", "C", ..

JAVA 2022.07.11
728x90