Как я могу изменить свою Java-программу на использование базы данных вместо массива? - PullRequest
1 голос
/ 20 января 2011

В моей Java-программе у меня был класс книги и класс библиотеки.Библиотека сохраняет объект книги в списке массивов, а затем я отображаю его на экране.

Я могу добавить книгу и удалить книги, используя функции.

Я также использую AbstractJtableModel для добавления иудаление книг.

Но теперь я хочу использовать базу данных MySQL вместо списка массивов.

Как мне изменить мою программу?

Ответы [ 5 ]

2 голосов
/ 20 января 2011

ну нужно написать целое приложение :) вам нужно создать базу данных, по крайней мере с одной таблицей, вам нужно добавить библиотеку mysql jdbc в classpath и с помощью jdbc вы можете вставить / выбрать / обновить / удалить данные из БД.

В качестве альтернативы вам необходимо добавить jdbc и использовать среду ORM, например Hibernate , но в зависимости от ваших знаний Java этот способ может быть сложнее (но его легче поддерживать в будущем, если вы создаете большое приложение). Здесь вы можете загрузить простое приложение гибернации, которое выполняет операции CRUD с Honey :), вы можете извлечь интерфейс, аналогичный предложенному Джавидом Джаме из класса TestExample, и обменять класс Honey с Book в соответствии с вашими потребностями

1 голос
/ 20 января 2011

Вы можете рассмотреть возможность использования шаблона объекта доступа к данным (DAO).Просто выполните поиск в Google, и вы найдете множество статей по этой теме.По сути, вы создадите интерфейс LibraryDao с такими методами, как:

public interface LibraryDao {
    public void storeLibrary(Library library)
    public Library loadLibrary(long id)
    public List<Library> searchByTitle(String title)
    //...
}

Вы можете реализовать этот интерфейс с помощью прямого SQL или использовать инструмент Object Relational Mapping (ORM) для его реализации.Я настоятельно рекомендую ознакомиться с Hibernate и спецификацией JPA.

1 голос
/ 20 января 2011

Абстрагируйте поиск и хранение книг в классе - вы не хотите, чтобы эта логика постоянства смешивалась с вашей бизнес-логикой. Я бы предложил создать интерфейс, который называется что-то вроде «BookStorageDAO», и тогда вы можете иметь различные реализации этого интерфейса. Одной из реализаций может быть хранение книг в ArrayList, а другой - хранение книг в базе данных.

Таким образом, вы можете использовать интерфейс в своей бизнес-логике и поменять реализацию в любое время.

0 голосов
/ 20 января 2011

Вам не нужен DAO как таковой, но эти ответы не являются неправильными.

Разделение концерна

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

Data Access Layer (read/write data)
Service Layer (isolated business logic)
Controller (Link between view and model)
Presentation (UI)

и т. Д., Но это только частично решит вашу проблему.

Программа для интерфейса

Вы также (как уже упоминали другие) должны абстрагировать свой код, что позволит вам использовать внедрение зависимостей . Это очень легко осуществить. Все, что вам нужно сделать, это запрограммировать интерфейс :

public interface PersonService {
   public List<Person> getAllPersons();
   public Person getById(String uuid);
}

Итак, ваше приложение будет выглядеть так:

public class PersonApp {
    private final PersonService personService;
    public PersonApp(PersonService personService) {
        this.personService = personService;
    }
}

Почему это лучше?

Вы определили контракт для взаимодействия с моделью Person в интерфейсе, и ваше приложение придерживается этого контракта без какого-либо воздействия на детали реализации. Это означает, что вы можете реализовать PersonService с помощью Hibernate, а затем решить, что хотите использовать JPA, или, возможно, вы используете прямой JDBC, или Spring, и т. Д. И т. Д., И даже если вам придется рефакторировать код реализации, код вашего приложения остается тот же самый. Все, что вам нужно сделать, это поместить новую реализацию в classpath и найти ее (совет: шаблон Service Locator будет хорошо работать для этого).

0 голосов
/ 20 января 2011

Вы по-прежнему будете использовать ArrayList в вашем графическом интерфейсе для сохранения и отображения данных. Разница в том, что вам нужна логика для сохранения и загрузки этого ArrayList из базы данных, чтобы данные сохранялись даже после завершения программы.

Примечание: расширяется DefaultTableModel вместо AbstractJtabelModel. Он завершает некоторые из методов для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...