Как мне локально реализовать БД в моем Java-приложении

Я пытаюсь создать простое Java-приложение для своего школьного проекта и хочу иметь возможность использовать простую БД, чтобы вставлять, обновлять, удалять и задавать запросы в моей БД.

Мне нужно, чтобы мое приложение запускалось везде при установке, поэтому я хочу использовать локальную БД, которая поставляется с моим приложением и будет доступна внутри проекта без различных зависимостей БД.

как лучше всего реализовать локальную БД?

Я подумал об использовании JDBC для файлов .csv, что требует много работы (?) или использовать HSQLDB и создать встроенную БД?

как бы вы это реализовали?

Обновлено:

ок, отлично, я немного почитал и нашел этот Учебник по SQLite,

public class Main {

    public static void main(String[] args) {
        try{
            Connection conn = DriverManager.getConnection("jdbc:sqlite: (how to set this path?)");
            Statement statement = conn.createStatement();
            statement.execute("CREATE TABLE CUSTOMERS (name TEXT,phone INTEGER,email TEXT)");


        } catch(SQLException el){
            System.out.println("somting went wrong" + el.getMessage());
        }
    }

}

теперь я хочу установить относительный путь к пользовательской папке и установить соединение на пользовательском компьютере. Я заметил, что написано:

o connect to an in-memory database, you use the following connection string:
jdbc:sqLite::memory

Итак, после установки первого соединения с моей стороны будет инициализирована БД, а затем я должен использовать путь памяти при развертывании проекта?

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

TheWhiteRabbit 21.05.2019 14:24

Использовать встроенную базу данных: dzone.com/articles/3-java-встраиваемые базы данных

duffymo 21.05.2019 14:27

--пожалуйста, смотрите отредактированную версию

NyaSol 21.05.2019 15:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
1 608
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы готовы принять JDBC в качестве своего API, используйте настоящую встроенную базу данных: hsqldb или h2 (или derby). Это будет намного проще, чем оборачивать файлы csv.

Я бы использовал H2, так как он может работать в гибридном встроенном/серверном режиме, что позволит вам запускать ваше приложение во встроенном режиме, в то же время используя какой-то внешний инструмент (eclipse/intellij/netbeans/что-то еще) для проверки ваша база данных.

Если вы можете жить с дополнительным обучением, используйте h2 + JPA (например, eclipselink), это — наряду с автоматической генерацией схемы — упростит развертывание (вам не нужно будет писать/обслуживать/запускать DDL).

Ответ принят как подходящий

JDBC — это простой интерфейс, позволяющий подключаться к встроенной базе данных Java. С HSQLDB у вас есть возможность использовать файлы CSV для хранения данных, а также файл сценария в формате SQL или файл двоичных данных.

HSQLDB может работать в гибридном встроенном/серверном режиме, чтобы вы могли получить доступ к базе данных с помощью внешних инструментов.

Другие вопросы по теме