Spring Boot에서 JPA를 사용하면 다양한 데이터베이스를 연결할 수 있습니다. 평소 개발할 때는 H2로 연결해서 개발할 수도 있고 실제 배포에는 오라클이나 MySQL을 이용할 수도 있습니다. MySQL 커뮤니티 버전이 아닌 MariaDB 오픈소스도 MySQL과 사용법은 비슷하지만 JPA 연결 시 드라이버(driver) 설정이 다릅니다. 오늘은 각각 많이 사용하는 MySQL과 MariaDB의 연결 설정에 대해서 알아보겠습니다. MVN Repository 사용시 이미 만들어진 프로젝트에 드라이버와 JPA를 설치하려면 MVN 레파지토리 사이트에서 검색한 후에 그래들 파일에 추가하는 것이 편리합니다. ▼ 우선 https://mvnrepository.com 사이트에서 필요한 드라이버를 검색해보겠습니다. 검..
Lombok lombok은 Java의 라이브러리 중 하나로 반복되는 메서드를 자동으로 만들어주는 라이브 러리입니다. 엔티티나 DTO 같은 모델에서 Getter, Setter, 생성자를 만들 때 발생되는 귀찮은 작업을 모두 처리해줍니다. 하지만 테스트 환경에서는 Lombok을 사용할 수 없습니다. 그래서 그래들에 다음 코드를 추가한 뒤에 그래들을 다시 빌드합니다. ▼ 그래들에 해당 코드를 추가해줍니다. ▼ 아이콘을 눌러서 다시 빌드합니다.
인텔리제이를 사용해 스프링 프로젝트 작업을 할 때 Jar 파일을 만든 법은 아주 간단합니다. 별도로 java -jar 명령을 통해 실행시킬 수 있으며 인텔리제이에서 보던 로그도 동일하게 출력되는 것을 확인할 수 있습니다. 물론 브라우저에서도 동일하게 애플리케이션을 실행할 수 있습니다. 단지 실행에 문제가 있다면 프로젝트 개발에 사용되었던 JDK와 컴퓨터 실행환경의 JDK 버전이 달라서일 수 있습니다. 그럼 간단하게 JAR 파일을 만드는 법을 알아보겠습니다. ▼ 우측 상단에 그래들(Gradle) 탭을 열어줍니다. 그리고 bootJar라는 그래들 명령을 더블클릭해서 실행해줍니다. ▼ 빌드가 되는 것을 확인할 수 있습니다. Run 화면에서 Successful 이 뜨면 build 폴더를 확인합니다. ▼ 프로젝트..
기존에 오라클을 통해서 맥에 MySQL을 설치하는 방법을 알아봤습니다. 하지만 Homebrew를 통해서 설치하는 방법도 있어서 기록합니다. 설치가 더 간단하고 설정이 편하다는 장점이 있습니다. 맥을 사용하는 사람들은 아마 Homebrew에 대해서 들어보신 적이 있을 텐데요. Homebrew는 맥의 패키지 관리 툴입니다. 홈브루 확인 및 설치 ▼ Homebrew가 설치되어 있는지 확인합니다. ▼ 만약 homebrew가 설치되어 있지 않다면 아래 명령을 입력해서 Homebrew를 설치합니다. ▼ MySQL을 설치하기 전에 업데이트 명령을 해줍니다. MySQL 설치 ▼ brew search mysql 명령으로 mysql 관련된 레포지토리를 확인합니다. ▼ search 명령으로 검색해서 설치하거나 다음과 같이 ..
DDL (데이터 조작어, Data Manipulation Language) CREATE : 데이터베이스 생성 ALTER : 데이터베이스 변경 DROP : 데이터베이스 삭제 RENAME : 데이터베이스 이름 변경 COMMENT : 데이터베이스 주석 추가 TRUNCATE : 데이터베이스 데이터 전체 삭제 DML (데이터 정의어, Data Definition Language) INSERT : 데이터 추가 UPDATE : 데이터 수정 DELETE : 데이터 삭제 SELECT : 데이터 검색 MERGE : 데이터 추가 + 데이터 수정 CALL : PL/SQL 또는 JAVA 서브 프로그램 호출 EXPLAIN PLAN : 데이터 접근 경로 해석 LOCK TABLE : 동시성 제어 DCL (데이터 제어어, Data C..
데이터베이스 시스템은 DBMS와 데이터베이스가 핵심이 됩니다. 데이터베이스의 장단점을 잘 알고 장점을 잘 활용해서 시스템을 구성하고 설계를 할 필요가 있습니다. 또한 단점을 잘 이해하고 그로 인한 대비책을 마련하는게 좋습니다. 장점 데이터 종속성이 최소화된다. 데이터 중복성이 감소한다. 데이터 동시 공유가 가능하다. (동시성 제어 concurrency control) 데이터 일관성 유지가 쉽다. 데이터 무결성 유지가 쉽다. 데이터 보안이 향상된다. 표준화된 데이터 접근이 가능하다. 데이터 가용성이 향상된다. 응용 프로그램의 개발 비용이 감소한다. 단점 시스템 운영비용이 증가한다. 시스템 관리 부담이 높아진다. 시스템 취약성이 증가한다. 파일 정보 시스템에 비해서 여러가지 장점을 갖게됩니다. 단지 파일 시..
MySQL 커뮤니티 버전 MySQL은 세계에서 가장 많이 사용하는 오픈소스 RDBMS입니다. 1995년에 최초 개발되었으며 코드가 공개되어 있어 누구나 다운로드하여 사용할 수 있는 데이터베이스 관리 툴입니다. 무료에도 불구하고 처리 속도가 빠르고 설치가 쉽습니다. 대용랑 데이터 처리까지 가능하며 보통 소규모 조직에서 저비용으로 시스템을 구축할 때 적합한 DBMS입니다. 전세계적으로 1천만대 이상의 서버가 운영되고 있으며 오라클과 함께 가장 많이 사용되는 DB 중에 하나입니다. 다만 2010년에 오라클에 인수되었지만 현재도 오픈소스 정책은 유지되고 있으며 리눅스나 맥, 윈도우에서 모두 사용할 수 있고 다양한 프로그래밍 언어에서도 적용이 가능한 범용 데이터베이스입니다. MySQL 제품 분류 구분 제품명 특징..
JAVA 설치하기 자바 JDK를 설치하려면 오라클 계정이 있어야 합니다. 다음 URL은 오라클 웹사이트 JAVA 버전별 설치 경로입니다. 페이지는 하나이지만 화면상 어디 있는지 모를 수도 있어서 링크를 걸어놨습니다. 저는 Java 8을 다운로드해서 설치하겠습니다. Java 18 Download Java 17 Download Java 8 Download Java 11 Download 윈도우즈의 경우에는 다음과 같이 Windows 탭을 선택해서 해당 OS 버전에 맞는 설치 프로그램을 다운로드 받습니다. 리눅스나 맥 OS 의경우 압축파일로 제공하며 윈도우는 설치파일이 있어서 설치하기 편리합니다. 설치는 매우 간단하며 기본 위치인 C:\Program Files\Java\jdk1.8.0_321 에 설치됩니다. 버..
안드로이드나 iOS 개발은 사실 UI의 비중이 큽니다. 웹 프론트엔드 개발 보다 다양한 기술을 포함하긴 하지만 일단 화면을 잘 그릴 수 있어야 합니다. 때문에 안드로이드 앱 개발의 핵심 요소는 인터페이스 디자인과 생성이라고도 할 수 있습니다. 안드로이드의 화면 구성은 뷰와 뷰 그룹 그리고 레이아웃으로 이루어집니다. 뷰와 뷰 그룹 안드로이드 화면 인터페이스의 모든 컴포넌트는 View(android.view.View) 클래스의 서브 클래스입니다. 안드로이드는 TextView, Button, CheckBox 와 같은 여러가지 View의 서브 클래스를 제공합니다. 이런 뷰들을 위젯(Widget) 또는 컴포넌트(Component)라고 합니다. 또한 뷰를 서브클래싱 해서 새로운 위젯을 만들 수도 있으며 기존의 컴포..
안드로이드 앱 프로세스 안드로이드 앱은 프로세스로 실행되며 액티비티나 서비스 및 브로드캐스트 수신자 형태의 여러 컴포넌트로 구성됩니다. 모바일이라는 제한적인 환경에서 리소스를 효율적으로 관리하기 위해서는 특히 앱이 실행되는 프로새스와 앱을 구성하는 모든 컴포넌트의 생명주기를 잘 알고 관리해야 하며 앱과 액티비티 생명주기를 반드시 이해해야만 효율적인 앱을 만들 수 있고 앱이 실행하는 동안 다양한 상태와 이벤트에 맞춰서 프로그래밍할 수 있습니다. 안드로이드 우선순위 안드로이드 앱은 안드로이드 운영체제의 별개의 프로세스에서 독립적으로 실행됩니다. 때문에 만약 독립적인 안드로이드 앱이 메모리 한계에 다다를 경우 안드로이드 시스템은 메모리 확보를 위해서 해당 프로세스를 강제로 종료하는 방법을 취합니다. 메모리 확..
안드로이드 뷰 바인딩 이전 버전의 안드로이드 스튜디오에서는 코드에서 레이아웃 뷰를 사용하기 위해 findViewById() 함수 또는 코틀린 확장 플러그인을 사용했었습니다. 하지만 더 이상 추천하는 방법이 아니고 이제는 뷰 바인딩을 사용해서 레이아웃을 관리하는 형태로 변경되었습니다. 한 번 바인딩하게 되면 편리하고 다양하게 사용이 가능하니 뷰 바인딩을 사용하는 법과 findViewById 와 비교해서 무엇이 달라졌는지 확인해보겠습니다. ▼ 안드로이드 뷰 바인딩은 Android Studio 3.6 Canary 11 이상에서 동작합니다. 안드로이드 스튜디오 3.5 이전에는 뷰 바인딩을 사용할 수 없었고 아래와 같이 findViewById를 통해 컴포넌트들을 로드해서 사용했습니다. 뷰 바인딩 추가하기 ▼ 뷰 ..
안드로이드 앱은 다양한 요소가 결합되어 만들어집니다. 그중에 UI에 관련된 액티비티, 프래그먼트 등이 있고 인텐트와 액티비티를 이용해 독립적으로 실행 가능한 모듈을 생성해 재사용성을 높일 수 있다. 또한 콘텐츠 제공자를 구현해 앱 간 데이터 공유도 가능하다. 서비스와 브로드캐스트 수신자를 통해서 백그라운드 작업을 할 수 있으며 매니페스트 파일을 통해서 앱 구성을 정의할 수 있고 앱 리소스와 매니페스트 설정을 통해서 앱 컨텍스트를 만들어 낼 수 있다. 안드로이드 액티비티 안드로이드 앱은 액티비티라는 컴포넌트가 하나 이상 반드시 결합되어 생성됩니다. 액티비티란 안드로이드 앱을 구성하는 기본 단위이며 앱의 기능을 갖는 단일의 독립 실행 모듈입니다. 액티비티는 안드로이드 Activity 클래스의 서브 클래스로 ..