Подключение базы данных MySql к Java приложению. Простой сайт на Java часть 3

Мы продолжаем писать простой сайт на языке Java и сегодня настало время подключить базу данных к нашему веб приложению. Подключать мы будем MySql базу данных, но схема будет работать для любой другой реляционной базы. Мы будем использовать jdbc драйвер для подключения. Он очень прост и понятен в обращении.

Хотя реальное приложение Вы скорее всего не будете подключать к базе данных через jdbc драйвер — этот пример даст Вам понимание как работать с базой данных.

Для начала откроем наше приложение в том виде, в котором мы его оставили с предыдущей статьи. Напомню, что мы подключили статические ресурсы и добавили внешний вид. Хочу сразу уточнить, что так приложение писать не нужно. Я имею ввиду такую последовательность. База данных — это основа всего приложения. С ее проектирования и нужно начинать. Я начал именно с ней, но выложил статьи в разной последовательности. О внешнем виде нужно думать в последнюю очередь.

Тематикой нашего сайта будет простой блог. Как я уже сказал выше, у меня уже есть готовая схема базы данных.

схема базы данных для блога

Она очень примитивна и проста. Ее цель показать, как работать с такими вещами.

К стати говоря, создал эту схему я в MySql Workbench — это бесплатное приложение, в котором можно проектировать базу данных, а потом експортировать все это в код. В конце статьи есть подробное видео, где все это проделывается. Поэтому на это мы не будем тратить время.

В нашей базе есть четыре таблицы. Теперь наша задача создать в нашей программе четыре java класса, которые будут отвечать за отображение этих таблиц. Мы по сути дела создаем сущности, которые представляют собой объектное представление данных из базы данных.

Я намерено опускаю такие термины как EJB, JPA, Entity POJO, хотя мы используем или будем из использовать. Например классы-сущности, которые мы создадим для представления БД — это Entity. Дело в том, что на просторах Интернета есть очень много ресурсов, где все это четко излагается, но очень мало ресурсов, которые действительно показывают: как создать веб приложение с нуля и до запуска в сети Интернет. Я лично, когда начинал изучать веб для джава находил только отдельный статьи, в которых показывались отдельные части веб приложений. В нашей теме, если Вы будете идти от начало и до конца, то сможете написать самое простое, но полноценное приложение на Java, а уже когда начнете изучать все далее, эта практика поможет Вам изучать технологии и фреймворки легче.

Теперь к практике. Создайте в своем приложении новый пакет entity. Должна получиться такая структура:

структура

Теперь в новом пакете нужно создать четыре класса: Article, Category, Role, Users имплементировать интерфейс Serializable для успешной передачи по сети. В видео ниже я использую Netbeans и его стандартные инструменты для генерации этих классов из базы данных. Но все же, я советую для начинающих сделать это вручную, чтобы Вы понимали где откуда берется. В каждом созданном классе нужно создать приватные поля, которые соответствуют названиям из базы данных. Для доступа к полям нужно создать геттеры и сеттеры. Для сравнения объекта нужно создать методы equals hashCode их можно с генерировать в еклипсе. Не плохо было бы добавить метод toString. Приведу пример на Article.

Вот, как выглядит наша таблица article в базе данных. Как видим у нее есть идентификатор id, поля title, body, которые будут хранить соответственно заголовок статьи и текст статьи. Есть поля category_id, users_id, которые будут хранить информацию о категории и пользователи соответственно. Эти поля — идентификаторы из таблиц category и users. Так нам и нужно построить класс Article:

Код   
public class Article implements Serializable {

    private static final long serialVersionUID = 1L;
    private String title;

    private String body;

    private Category category;

    private Users users;

    public Article() {
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public Category getCategory() {
        return category;
    }

    public void setCategory(Category category) {
        this.category = category;
    }

    public Users getUsers() {
        return users;
    }

    public void setUsers(Users users) {
        this.users = users;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((body == null) ? 0 : body.hashCode());
        result = prime * result + ((category == null) ? 0 : category.hashCode());
        result = prime * result + ((title == null) ? 0 : title.hashCode());
        result = prime * result + ((users == null) ? 0 : users.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Article other = (Article) obj;
        if (body == null) {
            if (other.body != null)
                return false;
        } else if (!body.equals(other.body))
            return false;
        if (category == null) {
            if (other.category != null)
                return false;
        } else if (!category.equals(other.category))
            return false;
        if (title == null) {
            if (other.title != null)
                return false;
        } else if (!title.equals(other.title))
            return false;
        if (users == null) {
            if (other.users != null)
                return false;
        } else if (!users.equals(other.users))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "Article [title=" + title + ", body=" + body + ", category=" + category + ", users=" + users + "]";
    }




   
}

Как видите, ничего сложного. Обычный объект Java.

Поначалу, это может показаться сложной задачей. Не стесняйтесь подглянуть в код или видео. Все ссылки в конце статьи.

Далее нужно подключиться к базе данных. Для этого мы будем использовать mysql-connector-java. Нужно добавить его в pom.xml, а если Вы не используете мавен, но можно скачать jar файл и подключить его к своему проекту. Мы же используем maven и нам нужно только добавить зависимость в pom.xml. Вот, как он теперь выглядит:

Код   
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.javamaster</groupId>
  <artifactId>simplewebapp</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>simplewebapp Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.34</version>
        </dependency>

       
  </dependencies>
  <build>
    <finalName>simplewebapp</finalName>
  </build>
</project>

Далее в проекте создайте пакет dao и в нем создайте класс ArticleDaoImpl. Код подключения к базе данных мы создадим в этом классе, но это временное решение. В следующей части мы вынесем его отдельно, а дао классы будут отвечать только за работу с базой.

Строка подключения имеет вид:  DriverManager.getConnection(«jdbc:mysql://хост:порт/имяБазы«, «имяПользователя«, «пароль«);

Полный код метода подключения: 

Код   
private Connection getConnection(){
        Connection con = null;
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/simpleapp", "root", "root");
        System.out.println("Got our connection");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

Наша база данных подключена к приложению. Теперь осталось реализовать методы, которые нам пригодятся в процессе работы приложения. Эту часть мы оставим для следующей статьи. В видео ниже я для примера реализовал один метод наполнения базы. Если есть желание, можете посмотреть. Если желания нет, в следующей статье все будет подробно описано.

Код на гитхаб: https://github.com/caligula95/simplewebapp-part3

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: