Hibernate nie działa w Android Studio?

0

Cześć
Mam problem z hibernate w Android Studio. Konkretnie jak to samo co w android studio robie w intelij to wszysko gra (tylko tam robię w maven), a tu mi się aplikacja wysypuje i nie mam pojęcia dlaczego. Czy ktoś może podpowiedzieć jak to ogarnęć.

Mam MainActivity

package com.bazadanychtest;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SessionFactory sf = new Configuration().addAnnotatedClass(Book.class).buildSessionFactory(); //powinno mi w bazie dodać pustę tabelę na podstawie klasy Book ale tego nie robi tylko wywala aplikację
    }
}

oraz klasę Book

package com.bazadanychtest;


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Book {

    @Id
    @GeneratedValue
    @Column
    private int isbn;

    @Column
    private String title;

    @Column
    private String autor;



    public void setIsbn(int isbn) {
        this.isbn = isbn;
    }

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

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public int getIsbn() {
        return isbn;
    }

    public String getTitle() {
        return title;
    }

    public String getAutor() {
        return autor;
    }
}

I zaimportowałem Hibernate i sterownik sql

plugins {
    id 'com.android.application'
}

android {
    compileSdk 33

    defaultConfig {
        applicationId "com.bazadanychtest"
        minSdk 26
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    packagingOptions {
        exclude 'META-INF/README'
        exclude 'META-INF/INDEX.LIST'
    }
}



dependencies {

    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'org.hibernate:hibernate-core:5.6.11.Final'
    implementation 'mysql:mysql-connector-java:8.0.28'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}

następnie dodałem plik hibernate.propertis (oczywiście gwiazdki są prawidłowo wypełnione :P)

hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://********
hibernate.connection.username = *********
hibernate.connection.password = *********
1

Nie, nie, nie

Hibernate z miliona powodów nie jest predystynowane do pracy w Androidzie i nie ma powodów, aby działało.

Z pewnego spektrum prób / rozwiązań "jak zrobić relacyjną bazę w Adroidzie" wyłoniłl się Room (pod maską ma SqlLite)
https://developer.android.com/jetpack/androidx/releases/room

0

Bardzo dziękuję za odpowiedź :D Myślałem że po prostu ja nie ogarniam :P

0

A to jeszcze zapytam z jakich wy baz danych najczęściej korzystacie w aplikacjach mobilnych?

2

Lokalnie SQLite.

Jak zdalna baza to zawsze przez jakieś REST API.

0
Ktos napisał(a):

Lokalnie SQLite.

+1. Nie za bardzo są inne możliwości.

Jak zdalna baza to zawsze przez jakieś REST API.

Już nie "baza" a zdalny akces bardziej - Apache Thrift

0

Konkretnie to mam wykupiony hosting i planowałem tam umieścić relacyjną bazę danych mySQL (w tym celu nawet specjalnie uczyłem się hibernata :/) gdzie przechowywał bym informacje o:
-Użytkownikach
-Planowanych meczach
-Stworzonych przez użytkowników turnieju
-Dodanie wyniku do turnieju
-Przeliczanie na bieżąco rankingu po dodaniu wyniku meczu

Co polecacie w takim celu? Rozumiem że pomysł z bazą MySQL w tym przypadku to niewypał? Czy po prostu muszę użyć jakiegoś API który to obsłuży? A jeśli tak to jaki by tu się sprawdził?

0

A co ma do tego android?
Chcesz z poziomu telefonu pobierać te dane z hostingu?

To napisz normalną apkę backendową wystawiającą REST API - Java/Kotlin + SpringBoot + Baza, a następnie w apce androidowej komunikuj się z tym REST API.

0

@Andzelm:

Dostęp zdalny prosto na bazę SQL to kiepskie (z wielu powodów), wyłącznie przez API (choć jeszcze 15 lat temu niektórzy to akceptowali)

Do stałej pracy smartofonów z centralną baza CHYBA jest FireBase (zasłyszane, nie miałem w rękach)

1 użytkowników online, w tym zalogowanych: 0, gości: 1