Java >> Java tutorial >  >> Tag >> Jdbc

JDBC-forbindelse og dialektkonfiguration i Hibernate

For at forbinde dit persistenslag til din database skal du konfigurere en datakilde eller angive JDBC-forbindelsesdriveren, URL-adressen og loginoplysningerne til Hibernate direkte. Derudover skal Hibernate kende den databasespecifikke dialekt, den skal bruge til at generere SQL-sætningerne. Hibernate kan detektere dialekten baseret på den konfigurerede JDBC-forbindelse, eller du kan angive den som en konfigurationsparameter.

Du kan indstille alle disse oplysninger i persistence.xml eller, hvis du bruger Spring Data JPA, i filen application.properties. I de følgende afsnit vil jeg kort forklare de forskellige konfigurationsparametre, før jeg giver dig eksempler på konfigurationer til de mest almindeligt anvendte RDBMS.

Konfigurationsparametre

Datakilde

Hvis du bruger en forbindelsespulje, kan du henvise til dens JNDI-navn som en JTA-datakilde, hvis den er kompatibel med Java Transaction API, eller som en ikke-JTA-datakilde.

<persistence>
    <! – Define persistence unit – >
    <persistence-unit name="my-persistence-unit">
        <jta-data-source>java:app/jdbc/MyDataSource</jta-data-source>
    </persistence-unit>
</persistence>

Forbindelsen til databasen er allerede konfigureret i forbindelsespuljen. Derfor behøver du ikke indstille JDBC-driveren, URL-adressen og brugeroplysningerne i din Hibernate-konfiguration. Men du vil måske konfigurere dialekten.

JDBC-forbindelse

Du kan bruge følgende konfigurationsparametre til at konfigurere JDBC-forbindelsen i Hibernate:

  • javax.persistence.jdbc.driver – Det fuldt kvalificerede klassenavn på din JDBC-driver
  • javax.persistence.jdbc.url – Forbindelses-URL'en til din database
  • javax.persistence.jdbc.user – Brugernavnet til at logge på din database
  • javax.persistence.jdbc.password – Adgangskoden til at logge på din database

I det følgende konfigurationsstykke bruger jeg disse parametre til at oprette forbindelse til PostgreSQL-databasen jpaForBeginners på localhost ved hjælp af postgres som brugernavn og adgangskode.

<persistence>
    <persistence-unit name="my-persistence-unit">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/jpaForBeginners" />
            <property name="javax.persistence.jdbc.user" value="postgres" />
            <property name="javax.persistence.jdbc.password" value="postgres" />
        </properties>
    </persistence-unit>
</persistence>

Dvaledialekt

Hibernate bruger dialekter til at tilpasse sig funktionssæt og syntaktiske forskelle i de forskellige understøttede RDBMS. For eksempel definerer en dialekt, hvilke funktioner der understøttes, hvordan datatyper skal kortlægges, og hvis Hibernate som standard skal bruge en sekvens eller en automatisk inkrementeret databasekolonne til at generere primærnøgleværdier.

Hibernate giver et stort sæt dialektimplementeringer til at understøtte forskellige versioner af populære RDBMS. Du kan finde dem i pakken org.hibernate.dialect . Du kan angive den dialekt, du vil bruge, ved at indstille det fuldt kvalificerede klassenavn for dens implementering som org.hibernate.dialect.Dialect konfigurationsegenskab.

Hvis du kun skal understøtte 1 RDBMS, anbefaler jeg at indstille denne konfigurationsparameter, selvom Hibernate automatisk kan registrere dialekten baseret på den konfigurerede JDBC-forbindelse.

Konfigurationsværdier for almindeligt anvendte databaser

Her er en liste over eksempler på konfigurationer for de mest almindeligt anvendte databaser i alfabetisk rækkefølge. Alle disse konfigurationer forbinder til jpaForBeginners database, der kører på standardporten på localhost. Ud over den medfølgende konfiguration skal du også indstille brugernavnet og adgangskoden.

CockroachDB

Som forklaret i en tidligere artikel tilføjede Hibernate 5.4.19 en CockroachDB-dialekt. På JDBC-niveau bruger den stadig PostgreSQL-driveren.

javax.persistence.jdbc.driver = org.postgresql.Driver
javax.persistence.jdbc.url = jdbc:postgresql://localhost:26257/jpaForBeginners?sslmode=disable
org.hibernate.dialect.Dialect = org.hibernate.dialect.CockroachDB201Dialect

Derby

javax.persistence.jdbc.driver = org.apache.derby.jdbc.EmbeddedDriver
javax.persistence.jdbc.url = jdbc:derby:target/tmp/derby/jfb;databaseName=jpaForBeginners;create=true
org.hibernate.dialect.Dialect = org.hibernate.dialect.DerbyTenSevenDialect

Db2 Express-C

javax.persistence.jdbc.driver = com.ibm.db2.jcc.DB2Driver
javax.persistence.jdbc.url = jdbc:db2://localhost/jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.DB297Dialect

Ildfugl

javax.persistence.jdbc.driver = org.firebirdsql.jdbc.FBDriver
javax.persistence.jdbc.url = jdbc:firebirdsql://localhost:3050/c:/wrk/myProject/db/jpaForBeginners.fdb
org.hibernate.dialect.Dialect = org.hibernate.dialect.FirebirdDialect

H2

javax.persistence.jdbc.driver = org.hsqldb.jdbc.JDBCDriver
javax.persistence.jdbc.url = jdbc:h2:mem:jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.H2Dialect

HSQLDB

javax.persistence.jdbc.driver = org.hsqldb.jdbc.JDBCDriver
javax.persistence.jdbc.url = jdbc:hsqldb:mem:jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.HSQLDialect

Informix

javax.persistence.jdbc.driver = com.informix.jdbc.IfxDriver
javax.persistence.jdbc.url = jdbc:informix-sqli://localhost:9088/sysuser:INFORMIXSERVER=jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.Informix10Dialect

MariaDB

javax.persistence.jdbc.driver = org.mariadb.jdbc.Driver
javax.persistence.jdbc.url = jdbc:mariadb://localhost/jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.MariaDB103Dialect

MySQL

MySQL er en populær open source-database, der tilbyder nogle interessante proprietære funktioner, men som også introducerer nogle begrænsninger. Jeg forklarer alt dette meget detaljeret i 5 ting, du behøver at vide, når du bruger Hibernate med Mysql.

javax.persistence.jdbc.driver = com.mysql.jdbc.Driver
javax.persistence.jdbc.url = jdbc:mysql://localhost/jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.MySQL8Dialect

Oracle

javax.persistence.jdbc.driver = oracle.jdbc.OracleDriver
javax.persistence.jdbc.url = jdbc:oracle:thin:@localhost:1521:jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.Oracle12cDialect

PostgreSQL

PostgreSQL er en funktionsrig, open source-database. Jeg forklarede, hvordan du får mest muligt ud af det og bruger nogle af dets mest interessante proprietære funktioner i Hibernate med PostgreSQL – 6 ting, du skal vide.

javax.persistence.jdbc.driver = org.postgresql.Driver
javax.persistence.jdbc.url = jdbc:postgresql://localhost/jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.PostgreSQL95Dialect

SAP HANA

javax.persistence.jdbc.driver = com.sap.db.jdbc.Driver
javax.persistence.jdbc.url = 		jdbc:sap://localhost/jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.HANAColumnStoreDialect

SQL-server

javax.persistence.jdbc.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
javax.persistence.jdbc.url = 	jdbc:sqlserver://localhost;instance=SQLEXPRESS;databaseName=jpaForBeginners
org.hibernate.dialect.Dialect = org.hibernate.dialect.SQLServer2012Dialect

No
Java tag