본문 바로가기

java

(25)
SQL 중심적인 개발의 배경과 문제점 들어가며 이 포스팅의 내용은 «자바 ORM 표준 JPA 프로그래밍»을 참고하고 정리한 것입니다. SQL 중심적인 개발의 배경 JPA와 모던 자바 데이터 저장 기술 애플리케이션 객체 지향 언어 (Java, Scala 등) + 관계형 DB (Oracle, MySQL 등) 객체를 영구 보관하는 다양한 저장소 (RDB, NoSQL, File, OODB 등)가 존재하지만 현실적인 대안은 관계형 DB다. 즉, 객체를 관계형 DB에 저장해서 관리하는 것이 중요하다. 관계형 DB를 사용하려면 SQL을 짤 수 밖에 없다. 관계형 DB를 쓰는 상황에서는 SQL에 의존적인 개발을 피하기 어렵다. 하지만! SQL 중심적인 개발에는 여러 문제점이 있다. SQL 중심적인 개발의 문제점 지루한 코드의 무한 반복 CRUD의 반복 자..
안드로이드 런타임 퍼미션(runtime permissions) 안드로이드 앱 개발 시 TargetSDK가 마시멜로 버전(APK 23) 이상인 경우, 디바이스의 특정 기능을 사용할 때 권한을 요구하는데 그 권한 중에 위험 권한으로 분류된 권한은 개발자가 직접 사용자에게 권한을 허가받을 수 있게 개발해야 합니다. 위험 권한(카메라, 오디오 녹음 권한) 허가를 받고 사용자가 허가하지 않은 경우 다시 권한 허가 요청을 하도록 하는 앱을 만들어 보겠습니다. 1. 먼저 manifest 파일에 필요한 앱에서 사용할 위험 권한을 선언합니다. 2. java 코드를 통해서 사용자에게 권한을 허가 받겠습니다. 앱이 실행이 됐을 때 chkPermission() 함수를 통해서 모든 위험 권한을 허가받았을 경우 토스트 메시지를 띄우도록 했습니다. @Override protected void..
모던 안드로이드 앱 만들기 (3) - Retrofit, RxJava를 이용한 네트워크 통신 Retrofit2, RxJava RxJava는 asynchronous event based communications (비동기 이벤트 기반 통신)을 위한 라이브러리입니다. 기존 Retrofit 사용 시에는 주로 Call 인터페이스의 enqueue 메서드를 통해서 비동기적으로 API와 통신을 하고 이후에 onFailure와 onResponse로 통신 결과를 전달받습니다. 이번엔 Call 인터페이스 대신 비동기 태스크 처리를 위해 RxJava, 네트워크 통신을 위해 Retrofit을 사용할 것입니다. retrofit2:adapter-rxjava2를 이용하면 기존의 RxJava를 사용하던 타입을 적용해 Retrofit을 통해서 API 호출과 결괏값을 처리할 수 있습니다. RxJava adapter를 추가하여 ..
모던 안드로이드 앱 만들기 (1) - 소개 (using Java, MVVM, RxJava) 앱 소개 및 목적 안녕하세요 이번에는 Jetpack의 다양한 라이브러리를 활용하여 리액티브 하고 확장에 유연한 안드로이드 앱 개발을 할 것입니다. 만들 앱은 나라의 정보(이름, 수도, 국가 이미지)를 보여주는 기능을 가지고 있습니다. 이 앱을 만드는 목적은 Java를 사용해 모던 안드로이드 앱을 개발하는 것이며 여러 Jetpack LIbrary의 역할을 알고 사용해보는 것입니다. (Kotlin 버전은 추후에 업데이트할 예정입니다.) Language, Libraries and tools 🛠 Java LiveData Retrofit RxJava Glide butterknife Architecture 이 앱은 MVVM [Model-View-ViewModel] 아키텍처를 사용하여 단방향 데이터 흐름(unidir..
[Android] 구글 로그인을 안드로이드 앱에 연동하기 이번에는 구글 로그인을 연동해보겠습니다. 구글 로그인도 카카오 로그인처럼 실 서비스에 적용하기 위해서는 다음 3단계를 거쳐야 합니다. 1. 앱 등록 및 설정 2. 기능 구현 3. 릴리즈 키 등록 저는 실 서비스가 아닌 구글 로그인 테스트를 위한 것이기 때문에 1, 2 단계를 통해 구글 로그인을 연동해보겠습니다. 3단계에 대한 내용은 추후에 다루겠습니다. 구글 로그인 연동하는 방법은 구글 공식 문서에 자세히 나와있기 때문에 따라서 하시면 됩니다. developers.google.com/identity/sign-in/android/start-integrating Start Integrating Google Sign-In into Your Android App Before you can start integr..
Spring Boot 프로젝트 생성하기 이번에는 spring boot의 시작인 프로젝트 생성하고 기본 페이지에 접속하는 것을 하겠습니다. -- 사전 필요사항 1. Java 11 2. IDE IntelliJ 또는 Eclipse 설치 저는 인텔리제이를 사용해서 프로젝트를 생성하겠습니다. 1. Spring Boot 프로젝트 설정 및 다운로드 스프링 부트 스타터 페이지에서 스프링 프로젝트를 생성할 것입니다. 스프링 부트 스타터 페이지는 스프링 부트 기반으로 프로젝트를 만들어주는 사이트입니다. start.spring.io/ 프로젝트 설정 Project : Gradle Language : Java Spring Boot : 2.4.1 (SNAPSHOT이 아닌 최신 버전 Dependencies 사용할 라이브러리를 다음과 같이 명시합니다. spring web..
[Android] 네이버 로그인을 안드로이드 앱에 연동하기 이번에는 안드로이드용 네아로(네이버 아이디로 로그인) 연동하는 법에 대해 알아보겠습니다. 네이버 아이디로 로그인 구현하는 방법은 네이버 개발 문서에 자세히 나와있습니다. 하지만 개발 문서에 부족한 부분이 있다고 (오픈 API 호출 부분에 url 값이 무엇인지? 등등) 생각이 들어서 보완해서 다루겠습니다. developers.naver.com/docs/login/android/ 네이버아이디로로그인 안드로이드 개발가이드 NAVER Developers - 네이버아이디로로그인 안드로이드 개발가이드 developers.naver.com 1. 애플리케이션 등록하기 open API 등록 신청을 통해 안드로이드 앱을 등록합니다. 사용 애플리케이션은 네아로만 사용할 것이므로 '선택하시오' 메뉴는 선택하지 않습니다. 가져..
서블릿 필터 (Servlet Filter) 적용하기 이전 프로젝트를 참고해주세요. 서블릿 필터 (Servlet Filter) 적용하기 서블릿마다 공통되는 설정을(인코딩, 서블릿 접근 권한 체크) 서블릿마다 하는 것을 불편합니다. 모든 서블릿에서 많이 실행되는 설정들을 서블릿 이전에 필터에서 검사할 수 있습니다. 요청 순서는 다음과 같습니다. 클라이언트 → WAS → Filter → Servlet 응답 순서도 반대로 다음과 같습니다. Servlet → Filter → WAS → 클라이언트 필터를 적용하는 데 2가지 방법이 있습니다. 방법 1 @WebFilter("") 어노테이션 사용 @WebFilter("/*")를 통해 모든 요청에 대해 해당 필터를 통과하도록 설정합니다. chain.doFilter(request, response); 를 통해서 서블릿을 실..