Skip to content

mate-academy/jv-jdbc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HW 02

Project description

The aim of current and following lessons is to create a basic taxi service project. Its' functionality should include:

  • create new car/manufacturer
  • display all drivers/cars/cars by driver/manufacturers
  • add a driver to car

First, you will create software representation of driver, car, manufacturer and relations between them. To make this data long-term accessible DB is a must-have. And of course, we will add a User Interface layer to our app so you can easily manipulate the data.
But let's take one step at a time: in the current course, you will take care of the data storing part by implementing a layer in the application, here is your first task:

  • Establish connection to your Database.
  • Create init_db.sql file in src/main/resources folder.
  • Create Manufacturer model.
  • Create DAO layer for Manufacturer model. Below you can see the list of required methods.
  • You're already given an injector and @Dao annotation. Do not forget to use it for Dao implementations.
  • Return Optional when you can return null in DAO. For example: public Optional<Manufacturer> get(Long id);
  • In the main method call CRUD methods. It may look like:
public class Main {
    private static final Injector injector = Injector.getInstance("YOUR_PACKAGE");

    public static void main(String[] args) {
        ManufacturerDao manufacturerDao = (ManufacturerDao) injector.getInstance(ManufacturerDao.class);
        Manufacturer manufacturer = new Manufacturer();
        // initialize field values using setters or constructor
        manufacturerDao.create(manufacturer);
        // test other methods from ManufacturerDao
    }
}

WARNING!!! Path to your project must contain only english letters. Also, it mustn't contain spaces. In other case Injector won't work correctly.

  • Your table should be named manufacturers and contain these columns: id, name, country, and is_deleted.

Java classes structure:

  • Manufacturer
public class Manufacturer {
    private Long id;
    private String name;
    private String country;
}

ManufacturerDao methods:

- Manufacturer create(Manufacturer manufacturer);
- Optional<Manufacturer> get(Long id);
- List<Manufacturer> getAll();
- Manufacturer update(Manufacturer manufacturer);
- boolean delete(Long id);

Create custom exception

e.printStackTrace() - is a bad practice! Let's create custom exception DataProcessingException and constructor with two parameters: String message and Throwable ex.
It should be extended from RuntimeException. You should rethrow this exception in catch block on dao layer.

DB connection error:

If you can't connect to your db because of this error:
The server time zone value ‘EEST’ is unrecognized or represents more than one time zone.
Try to set timezone explicitly in your connection URL.
Example:
...localhost:3306/your_schema?serverTimezone=UTC
Or you can set a timezone in MySql directly by running command: SET GLOBAL time_zone = '+3:00';

You can check yourself using this checklist

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages