Lekce 2 - Návrh MySQL databáze v IntelliJ IDE
V minulém dílu, Úvod do databází v Javě, jsme si vysvětlili proč je dobrý nápad pro práci s daty používat zrovna databázi. Říkali jsme si také, že v Javě jsou pro práci s databází 2 hlavní přístupy: JDBC a JPA.
V dnešním tutoriálu si vytvoříme novou databázi, na které se v dalších dílech budeme učit. Používat budeme databázi MySQL. Pokud chcete v Javě pracovat s jinou databází, můžete si klidně přečíst tento seriál, jelikož SQL dotazy u různých databází jsou velmi podobné a základní dotazy dokonce úplně stejné.
Instalace databáze
Jako první samozřejmě musíme mít databázi nainstalovanou. Pokud jsme s MySQL ještě nikdy nepracovali, měli bychom si nejprve přečíst seriál MySQL databáze krok za krokem, kde se dozvíme vše potřebné. MySQL databázi můžeme nainstalovat buď samostatně z webu http://dev.mysql.com/downloads/ nebo např. v balíku XAMPP, kde je obsažen i jazyk PHP a databázový admin.
Instalace Database navigator
Database navigator je plug-in pro IntelliJ, který umožňuje prohlížet databáze přímo z IntelliJ IDE. Umožňuje také spouštět SQL skripty, prohlížet a upravovat jednotlivé databáze.
Aktuální verze pluginu Database Navigator však postrádá schopnost vytvářet a mazat databáze nebo tabulky přímo v pluginu.
Pro instalaci otevřeme v IntelliJ okénko plugins v hlavním menu a
do vyhledávače napíšeme Database navigator
"
Práce s databází v IntelliJ IDE
Jakmile máme MySQL databázi nainstalovanou a spuštěnou, můžeme se k ní připojit. Veškerou administraci budeme dělat přes IDE.
Připojení k MySQL databázi
Než spustíme Database navigator, je zapotřebí vytvořit novou databázi. Otevřeme příkazovou řádku nebo integrovaný terminál IntelliJ IDE nebo jiný administrační nástroj pro MySQL. Nejdříve se připojíme do samotného MySQL serveru, způsob připojení a přihlašovací údaje se mohou lišit podle databáze a konfigurace. Připojíte se pomocí příkazu:
mysql -u root // Pro připojení jako root bez hesla mysql -u root -p // Pro připojení jako root s heslem mysql -u <přihlašovací jméno> -p // Pro připojení vámi zvolenými přihlašovacími údaji
Po připojení vytvoříme novou databázi příkazem:
CREATE DATABASE slovnicek_db;
Po vytvoření databáze se k ní můžeme připojit pomocí IntelliJ IDE. Po instalaci Database navigator se mám v postranní lište objeví položka DB Browser. Kliknutím na ní se přepneme do nového okénka pro správu databází. Klikněme na zelené + v horní liště a otevře se nám panel předdefinovaných připojení databází. Vybereme MySQL a otevře se nám přihlašovací okno.
Port ponecháme nastavený na hodnotu 3306
. U položky
Host necháme volbu localhost
, což znamená, že nám
databáze běží na tom samém počítači, jako aplikace. Uživatelské jméno
bychom měli mít nastavené na root
, pokud jsme ho neměnili. Do
hesla zadáme svoje heslo nebo ho ponecháme prázdné v případě, že jsme ho
nezadávali.
Dále je zapotřebí nastavit MySQL driver. Nastavíme Driver source
na External library
a položku Driver library na
.jar
soubor, který jsme dříve stáhli a uložili ve svém
systému nebo do adresáře lib/
v Java projektu.
Nyní se k databázi připojíme tlačítkem Apply. Připojení můžeme otestovat tlačítkem Test Connection, abychom se ujistili, že jsme zadali správné údaje:
Po úspěšném připojení se nám zobrazí všechny databáze a tabulky uložené na MySQL serveru:
Vytvoření tabulky
O tabulkách jsme si již říkali minule. Jelikož budeme chtít ukládat slovíčka, vytvoříme si tabulku právě pro ně. Definujeme jí sloupce - to jsou vlastnosti, které slovíčko má. Nezapomeneme na unikátní identifikátor. Pro vytvoření tabulky se nejdříve musíme přepnout do naší databáze, otevřít příkazovou řádku a vložit příkaz:
USE slovnicek_db;
Následně vytvoříme novou tabulku. Tabulku pojmenujeme slovo. Přidáme
jí tři sloupce. Jako první id
typu INT
.
id
nastavíme jako PRIMARY KEY
, čímž určíme tento
sloupec jako jednoznačný identifikátor slovíčka v tabulce. Přidáme mu
také hodnotu AUTO_INCREMENT
, čímž se nastaví, aby se jeho
hodnota automaticky inkrementovala. Dále přidáme sloupce cesky
a
anglicky
. Budou typu VARCHAR
. To je krátký text, u
kterého musíme specifikovat maximální velikost. Nastavíme mu délku
maximálně 50 znaků.
Do příkazové řádky vložíme příkaz pro vytvoření nové tabulky:
CREATE TABLE slovo ( id INT PRIMARY KEY AUTO_INCREMENT, cesky VARCHAR(50) NULL, anglicky VARCHAR(50) NULL );
Nakonec se vratíme do IntelliJ IDE a pravým kliknutím myši na naši databázi otevřeme novou nabídku, kde vybereme položku Refresh. Tímto se databáze znovu načte a zobrazí se nám vytvořená tabulka. Tabulku máme hotovou.
Pokud vám tabulka připomíná javovskou třídu, máte úplnou pravdu. Tabulkou definujeme společné vlastnosti nějakých entit, zde slovíček. Jednotlivé sloupce jsou poté atributy slovíček. U třídy bychom měli slovíčka jako instance, v databázové tabulce máme slovíčka jako jednotlivé řádky. Minule jsme si také říkali, že tabulky je dokonce možné mapovat přímo na třídy pomocí JPA (Hibernate). Nepředbíhejme však.
Testovací data
Nyní do tabulky vložíme data. V DB Browseru rozklikneme naše nové
připojení a v okně Schemas najdeme naši databázi
slovnicek_db
. Klikneme na Tables a na tabulku s názvem
slovo
. Objeví se nové okénko, které nám umožňuje zobrazit
data v tabulce podle námi určených filtrů. Zvolíme no filter a
zobrazí se nám nové prázdné okno:
Jakmile programujeme nějakou databázovou aplikaci, je dobrým zvykem připravit si testovací data, na kterých aplikaci odladíme. Pomocí tlačítka Insert Records (zelené + v lište nad tabulkou) do tabulky vložíme několik testovacích záznamů.
Přidáme několik nových řádků, u kterých vyplníme sloupce
cesky
a anglicky
. Id se vyplní automaticky. Nakonec
musíme data nahrát do databáze na MySQL server. Pro nahrání a uložení dat
stiskneme tlačítko Commit v horním panelu nad tabulkou:
Databázi máme připravenou, pokračovat budeme příště.
Příště, Databáze v Java JDBC - Výpis dat a parametry, se na ni z Javy připojíme, necháme si vypsat slovíčka z databáze do konzole a naprogramujeme slovníček, který bude překládat slovo, které uživatel zadá.