diff --git a/src/main/resources/db/db_readme.txt b/src/main/resources/db/db_readme.txt index 80deff0ea6aa7d4b38a723b801bf0141a6ec1899..55fbb6264f6314d6fa46aa030ec5a49b972c0d6c 100644 --- a/src/main/resources/db/db_readme.txt +++ b/src/main/resources/db/db_readme.txt @@ -7,9 +7,7 @@ -------------------------------------------------------------------------------- In its default configuration, Petclinic uses an in-memory database (HSQLDB) which -gets populated at startup with data. Since there is no persistent support, once -the application is destroyed, so is the database. -If a persistent database configuration is chosen, make sure to change the datasource -inside the relevant application-*.xml so that the schema and the data do not get -inserted each time the application is started. Additionally, update the jdbc.properties -file to reflect your change. \ No newline at end of file +gets populated at startup with data. A similar setup is provided for Mysql in case +a persistent database configuration is needed. +Note that whenever the database type is changed, the jdbc.properties file needs to +be updated. \ No newline at end of file diff --git a/src/main/resources/db/mysql/createDB.txt b/src/main/resources/db/mysql/createDB.txt deleted file mode 100644 index 5b4b3859e9aedc6bc4fac16fc3e82297eccb7da0..0000000000000000000000000000000000000000 --- a/src/main/resources/db/mysql/createDB.txt +++ /dev/null @@ -1,3 +0,0 @@ -CREATE DATABASE petclinic; - -GRANT ALL PRIVILEGES ON petclinic.* TO pc@localhost IDENTIFIED BY 'pc'; \ No newline at end of file diff --git a/src/main/resources/db/mysql/dropDB.txt b/src/main/resources/db/mysql/dropDB.txt deleted file mode 100644 index e1209da0e5eb48f7aaef810f0a2bb7b8a9fc12fc..0000000000000000000000000000000000000000 --- a/src/main/resources/db/mysql/dropDB.txt +++ /dev/null @@ -1 +0,0 @@ -DROP DATABASE petclinic; diff --git a/src/main/resources/db/mysql/initDB.txt b/src/main/resources/db/mysql/initDB.txt index 0007ee3a3396b50887b9bd4a202c45857cb85e29..b90d1843a1334496677ff5e28e1fe28683360c70 100644 --- a/src/main/resources/db/mysql/initDB.txt +++ b/src/main/resources/db/mysql/initDB.txt @@ -1,32 +1,36 @@ +CREATE DATABASE IF NOT EXISTS petclinic; +GRANT ALL PRIVILEGES ON petclinic.* TO pc@localhost IDENTIFIED BY 'pc'; + USE petclinic; -CREATE TABLE vets ( +CREATE TABLE IF NOT EXISTS vets ( id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(30), last_name VARCHAR(30), INDEX(last_name) ) engine=InnoDB; -CREATE TABLE specialties ( +CREATE TABLE IF NOT EXISTS specialties ( id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(80), INDEX(name) ) engine=InnoDB; -CREATE TABLE vet_specialties ( +CREATE TABLE IF NOT EXISTS vet_specialties ( vet_id INT(4) UNSIGNED NOT NULL, - specialty_id INT(4) UNSIGNED NOT NULL + specialty_id INT(4) UNSIGNED NOT NULL, + FOREIGN KEY (vet_id) REFERENCES vets(id), + FOREIGN KEY (specialty_id) REFERENCES specialties(id), + UNIQUE (vet_id,specialty_id) ) engine=InnoDB; -ALTER TABLE vet_specialties ADD CONSTRAINT fk_vet_specialties_vets FOREIGN KEY (vet_id) REFERENCES vets(id); -ALTER TABLE vet_specialties ADD CONSTRAINT fk_vet_specialties_specialties FOREIGN KEY (specialty_id) REFERENCES specialties(id); -CREATE TABLE types ( +CREATE TABLE IF NOT EXISTS types ( id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(80), INDEX(name) ) engine=InnoDB; -CREATE TABLE owners ( +CREATE TABLE IF NOT EXISTS owners ( id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(30), last_name VARCHAR(30), @@ -36,23 +40,21 @@ CREATE TABLE owners ( INDEX(last_name) ) engine=InnoDB; -CREATE TABLE pets ( +CREATE TABLE IF NOT EXISTS pets ( id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), birth_date DATE, type_id INT(4) UNSIGNED NOT NULL, owner_id INT(4) UNSIGNED NOT NULL, - INDEX(name) + INDEX(name), + FOREIGN KEY (owner_id) REFERENCES owners(id), + FOREIGN KEY (type_id) REFERENCES types(id) ) engine=InnoDB; -ALTER TABLE pets ADD CONSTRAINT fk_pets_owners FOREIGN KEY (owner_id) REFERENCES owners(id); -ALTER TABLE pets ADD CONSTRAINT fk_pets_types FOREIGN KEY (type_id) REFERENCES types(id); -CREATE INDEX pets_name ON pets(name); -CREATE TABLE visits ( +CREATE TABLE IF NOT EXISTS visits ( id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, pet_id INT(4) UNSIGNED NOT NULL, visit_date DATE, description VARCHAR(255), - INDEX(pet_id) -) engine=InnoDB; -ALTER TABLE visits ADD CONSTRAINT fk_visits_pets FOREIGN KEY (pet_id) REFERENCES pets(id); + FOREIGN KEY (pet_id) REFERENCES pets(id) +) engine=InnoDB; \ No newline at end of file diff --git a/src/main/resources/db/mysql/populateDB.txt b/src/main/resources/db/mysql/populateDB.txt new file mode 100644 index 0000000000000000000000000000000000000000..0a1cc9c29d083161f7315f7774c1d54ec656ba08 --- /dev/null +++ b/src/main/resources/db/mysql/populateDB.txt @@ -0,0 +1,53 @@ +INSERT IGNORE INTO vets VALUES (1, 'James', 'Carter'); +INSERT IGNORE INTO vets VALUES (2, 'Helen', 'Leary'); +INSERT IGNORE INTO vets VALUES (3, 'Linda', 'Douglas'); +INSERT IGNORE INTO vets VALUES (4, 'Rafael', 'Ortega'); +INSERT IGNORE INTO vets VALUES (5, 'Henry', 'Stevens'); +INSERT IGNORE INTO vets VALUES (6, 'Sharon', 'Jenkins'); + +INSERT IGNORE INTO specialties VALUES (1, 'radiology'); +INSERT IGNORE INTO specialties VALUES (2, 'surgery'); +INSERT IGNORE INTO specialties VALUES (3, 'dentistry'); + +INSERT IGNORE INTO vet_specialties VALUES (2, 1); +INSERT IGNORE INTO vet_specialties VALUES (3, 2); +INSERT IGNORE INTO vet_specialties VALUES (3, 3); +INSERT IGNORE INTO vet_specialties VALUES (4, 2); +INSERT IGNORE INTO vet_specialties VALUES (5, 1); + +INSERT IGNORE INTO types VALUES (1, 'cat'); +INSERT IGNORE INTO types VALUES (2, 'dog'); +INSERT IGNORE INTO types VALUES (3, 'lizard'); +INSERT IGNORE INTO types VALUES (4, 'snake'); +INSERT IGNORE INTO types VALUES (5, 'bird'); +INSERT IGNORE INTO types VALUES (6, 'hamster'); + +INSERT IGNORE INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023'); +INSERT IGNORE INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749'); +INSERT IGNORE INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763'); +INSERT IGNORE INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198'); +INSERT IGNORE INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765'); +INSERT IGNORE INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654'); +INSERT IGNORE INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387'); +INSERT IGNORE INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683'); +INSERT IGNORE INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435'); +INSERT IGNORE INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487'); + +INSERT IGNORE INTO pets VALUES (1, 'Leo', '2000-09-07', 1, 1); +INSERT IGNORE INTO pets VALUES (2, 'Basil', '2002-08-06', 6, 2); +INSERT IGNORE INTO pets VALUES (3, 'Rosy', '2001-04-17', 2, 3); +INSERT IGNORE INTO pets VALUES (4, 'Jewel', '2000-03-07', 2, 3); +INSERT IGNORE INTO pets VALUES (5, 'Iggy', '2000-11-30', 3, 4); +INSERT IGNORE INTO pets VALUES (6, 'George', '2000-01-20', 4, 5); +INSERT IGNORE INTO pets VALUES (7, 'Samantha', '1995-09-04', 1, 6); +INSERT IGNORE INTO pets VALUES (8, 'Max', '1995-09-04', 1, 6); +INSERT IGNORE INTO pets VALUES (9, 'Lucky', '1999-08-06', 5, 7); +INSERT IGNORE INTO pets VALUES (10, 'Mulligan', '1997-02-24', 2, 8); +INSERT IGNORE INTO pets VALUES (11, 'Freddy', '2000-03-09', 5, 9); +INSERT IGNORE INTO pets VALUES (12, 'Lucky', '2000-06-24', 2, 10); +INSERT IGNORE INTO pets VALUES (13, 'Sly', '2002-06-08', 1, 10); + +INSERT IGNORE INTO visits VALUES (1, 7, '1996-03-04', 'rabies shot'); +INSERT IGNORE INTO visits VALUES (2, 8, '1996-03-04', 'rabies shot'); +INSERT IGNORE INTO visits VALUES (3, 8, '1996-06-04', 'neutered'); +INSERT IGNORE INTO visits VALUES (4, 7, '1996-09-04', 'spayed'); diff --git a/src/main/resources/jdbc.properties b/src/main/resources/jdbc.properties index 802ff63213bd829f72d38896f9deac945c05978f..82cd2ead22f73830408e057c888554cdf621568c 100644 --- a/src/main/resources/jdbc.properties +++ b/src/main/resources/jdbc.properties @@ -45,7 +45,7 @@ jpa.database=HSQL #jdbc.password= # Properties that control the population of schema and data for a new data source -#jdbc.schemaLocation=classpath:db/mysql/initDB.txt +#jdbc.initLocation=classpath:db/mysql/initDB.txt #jdbc.dataLocation=classpath:db/mysql/populateDB.txt # Property that determines which Hibernate dialect to use