본문 바로가기

전체 글

(129)
Hello JPA!! 애플리케이션 개발하기 들어가며 이 포스팅의 내용은 «자바 ORM 표준 JPA 프로그래밍»을 참고하고 정리한 것입니다. 권장 환경은 다음과 같습니다. 자바 8 이상 Maven 사용 H2 데이터베이스 사용 인텔리제이 사용 Hello JPA 애플리케이션을 통해 간단히 CRUD 할 수 있는 서버 애플리케이션을 만들어보겠습니다. 라이브러리 추가 - pom.xml 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.199 JPA 설정하기 - persistence.xml JPA 설정 파일 {프로젝트 디렉토리}/src/main/resources/META-INF/persistence.xml 위치함 p..
JPA 소개 및 JPA의 기본 동작 과정 들어오며 이 포스팅의 내용은 «자바 ORM 표준 JPA 프로그래밍»을 참고하고 정리한 것입니다. ORM(Object-relational mapping) 이란 Object-relational mapping (객체 관계 매핑) 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다. ORM 프레임워크가 중간에서 매핑해준다. 대중적인 언어에는 대부분 ORM 기술이 존재한다. ORM은 객체와 RDB 두 기둥 위에 있는 기술 이다. JPA(Java Persistence API) 란 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다. 즉, 실제로 동작하는 것이 아니다. JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate라고 할 수 있다. JPA 2.1 표준 명세를 ..
SQL 중심적인 개발의 배경과 문제점 들어가며 이 포스팅의 내용은 «자바 ORM 표준 JPA 프로그래밍»을 참고하고 정리한 것입니다. SQL 중심적인 개발의 배경 JPA와 모던 자바 데이터 저장 기술 애플리케이션 객체 지향 언어 (Java, Scala 등) + 관계형 DB (Oracle, MySQL 등) 객체를 영구 보관하는 다양한 저장소 (RDB, NoSQL, File, OODB 등)가 존재하지만 현실적인 대안은 관계형 DB다. 즉, 객체를 관계형 DB에 저장해서 관리하는 것이 중요하다. 관계형 DB를 사용하려면 SQL을 짤 수 밖에 없다. 관계형 DB를 쓰는 상황에서는 SQL에 의존적인 개발을 피하기 어렵다. 하지만! SQL 중심적인 개발에는 여러 문제점이 있다. SQL 중심적인 개발의 문제점 지루한 코드의 무한 반복 CRUD의 반복 자..
SharedPreference로 데이터 저장하기 SharedPreference는 앱의 데이터를 영속적으로 저장하기 위한 클래스입니다. 데이터를 간단하게 키-값(key-value) 성격으로 저장합니다. SharedPreference로 저장하는 데이터는 결국 파일(XML)로 저장되지만, 개발자가 직접 파일을 읽고 쓰는 코드를 작성하지 않고 SharedPreference 객체를 이용해서 데이터를 저장할 수 있습니다. SharedPreference 객체를 획득하는 방법 SharedPreference 객체를 획득하는 방법은 두 가지가 있습니다. getPreferences(int mode) getSharedPreferences(String name, int mode) getPreferences은 별도의 파일명을 지정하지 않아 액티비티 이름의 파일 내에 저장됩니다..
안드로이드 데이터 및 파일 저장소 개요 및 내부 저장소 사용하기 Android는 다른 플랫폼의 디스크 기반 파일 시스템과 유사한 파일 시스템을 사용합니다. 시스템은 앱 데이터를 저장할 수 있는 몇 가지 옵션을 제공합니다. 데이터 및 파일 저장소 개요 앱별 저장소(App-specific storage) : 내부 저장소 또는 외부 저장소 안의 특정 디렉토리에 자신의 앱만이 전용으로 사용할 수 있는 파일을 저장합니다. 공유 스토리지 : 앱이 미디어, 문서 및 기타 파일을 포함하여 다른 앱과 공유하려는 파일을 저장합니다. Preferences : 키-값 쌍에 개인용 기본 데이터를 저장합니다. 데이터 베이스 : Room 지속성 라이브러리를 사용하여 구조화 된 데이터를 비공개 데이터베이스에 저장합니다. 이러한 옵션의 특성은 다음 표에 요약되어 있습니다. 콘텐츠 유형 접근 방법 ..
안드로이드 퍼미션 개념 정리 퍼미션은 AndroidManifest.xml에 들어가는 설정입니다. 안드로이드는 컴포넌트를 이용한 앱과 앱 사이의 연동이 빈번합니다. 이러한 연동에서 어떤 앱이 을 부여했다면 그 앱을 이용하는 다른 앱은 을 선언해야 합니다. permission 태그 이용 은 자신의 앱을 외부에서 이용할 때 권한을 부여하여 해당 권한을 가지고 들어올 때만 실행되게 하는 설정입니다. 으로 선언된 앱을 이용하는 앱이 을 선언하지 않으면 에러가 발생합니다. name: 퍼미션의 이름 label, description: 퍼미션에 대한 설명(사용자에게 보이는 문자열) protectionLevel: 보호 수준 normal: 낮은 수준의 보호. 사용자에게 권한 부여 요청이 필요 없는 경우 dangerous: 높은 수준의 보호. 사용자에..
Realm를 사용해서 안드로이드 앱에 데이터 저장하기 Realm이란? Realm은 https://realm.io에서 오픈소스로 만들어지고 있는 로컬 데이터베이스이다. Realm은 자바 객체를 해석해 그 객체의 데이터를 그대로 데이터베이스에 저장, 획득한다. Realm이 ORM을 제공한다는 것이 SQLite와 비교했을 때 가장 큰 차이이다. Realm은 안드로이드뿐만 아니라 다양한 곳에서 데이터베이스로 사용된다. 표준 라이브러리가 아니므로 플러그인 방식으로 이용해야 함 Realm를 사용해서 안드로이드 앱에서 데이터를 저장하기, 가져오기, 삭제하기에 대해 다뤄보겠습니다. Realm 플러그인 설치를 위한 의존성 설정 build.gradle(project) 5.6.0 버전으로 빌드하고 앱 실행 시 에러가 발생했습니다. 하위 버전과 관련된 이슈가 있습니다. buil..
Android SQLite를 사용하여 데이터를 저장하기 SQLite는 오픈소스로 만들어진 관계형 데이터 베이스입니다. (https://www.sqlite.org/) SQLite를 이용한 데이터는 파일에 저장되며 다음과 같은 경로에 저장됩니다. data/data/[package_name]/databases Android에서 데이터베이스를 사용할 때 필요한 API는 android.database.sqlite 패키지로 제공됩니다. SQLiteOpenHelper 클래스를 사용하여 데이터베이스 생성하기 SQLiteOpenHelper 클래스에는 데이터베이스 관리를 위한 유용한 API 세트가 포함되어 있습니다. 이 클래스를 사용하여 데이터베이스의 참조를 가져오면 시스템은 앱이 시작되고 있는 동안이 아닌 필요한 때에만 데이터베이스 생성 및 업데이트와 같이 장시간 실행될 수..