0 votes
asked in RapidClipse Framework by (210 points)

Hallo,

wenn ich ein Projekt mit einer MySQL-Datenbank (z. B: mit dem Namen "MeineDB") erstellt habe, so würde ich gerne mit unterschiedlichen Datenbeständen arbeiten. 

Dazu habe ich in PhpMyAdmin die Datenbank kopiert und einen anderen Namen vergeben. Hier füge/lösche ich dann Daten in den Tabellen. Die Struktur der Datenbank (Tabellen etc.) ist komplett identisch, so dass ein Austausch der Datenbank für Rapidclipse möglich sein sollte.

Wenn ich nun im Rapidclipse-Projekt in der persistence.xml den Parameter

<property name="javax.persistence.jdbc.url"

value="jdbc:mysql://localhost:3306/MeineDB  />

auf z. B.

<property name="javax.persistence.jdbc.url"

value="jdbc:mysql://localhost:3306/MeineDBNEU   />

ändere, so lädt die Webseite immer noch die alte Datenbank mit diesen Daten, also "MeineDB".

Was mache ich falsch, wo muss ich die DB-Verbindungsparameter ändern?

Danke für die Rückmeldung!

2 Answers

0 votes
answered by (540 points)
Hallo,

ich kann nur mal vermuten, dass es ein caching problem ist.
Ev. Browser cache löschen..
0 votes
answered by (1.1k points)
Hm, normalerweise sollte das funktionieren. Ich habe es mal bei mir schnell getestet und wenn ich da eine andere URL angebe, dann wird diese auch benutzt. Wurde sonst noch irgendwas bei der persistence.xml geändert? Es könne deshalb die URL von irgendwo anders gelesen werden. Wenn möglich wäre es gut mehr von der persistence.xml hier zu sehen :)
commented by (210 points)
Danke für die Rückmeldung!

Die Idee kam aus dem Wunsch ein Projekt zu kopieren und in eine andere "Richtung" zu entwickeln.
Bisher kopiere ich über einen Rechtsklick das Projekt und füge es wieder ein. Dann mache ich ein Maven-Update und passe zwei Dateien an, so dass das Projekt unter einer anderen URL läuft.
Damit diese beiden Projekte auch jeweils ihre eigene DB nutzen können, habe ich die Datenbank kopiert. Zur Nutzung der neuen DB ist nach meiner Ansicht dann eine Änderung in der persistence.xml nötig.

Meine aktuelle Lösung ist nun, dass man erneut eine Datenquelle mit dem Assistenten in das Projekt installiert. Dabei gehen aber Abfragen in den DAO-Klassen verloren. Diese müssen dann per Hand wieder von Ursprungsprojekt kopiert werden.

Bei der xml-Datei habe ich nur Änderungen an der url, dem user und dem password gemacht.
Anbei die xml-Datei:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="project2test">
        <provider>
            org.hibernate.jpa.HibernatePersistenceProvider
        </provider>
        <class>de...</class>
        <class>de... </class>
        <class>de... </class>
        <class>de...</class>
        <class>de...</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="none" />
            <property name="javax.persistence.sharedCache.mode"
                value="ENABLE_SELECTIVE" />
            <property name="hibernate.c3p0.max_size" value="100" />
            <property name="hibernate.c3p0.idle_test_period"
                value="300" />
            <property name="hibernate.c3p0.max_statements" value="50" />
            <property name="hibernate.dialect"
                value="org.hibernate.dialect.MySQL57InnoDBDialect" />
            <property name="hibernate.cache.use_query_cache"
                value="true" />
            <property name="hibernate.c3p0.min_size" value="1" />
            <property name="rap.queryCache.mode"
                value="ENABLE_SELECTIVE" />
            <property name="hibernate.archive.autodetection" value="" />
            <property name="hibernate.cache.use_second_level_cache"
                value="true" />
            <property name="hibernate.c3p0.timeout" value="3000" />
            <property name="hibernate.transaction.auto_close_session"
                value="false" />
            <property name="javax.persistence.jdbc.url"
                value="jdbc:mysql://localhost:3306/MeineDB" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="hibernate.javax.cache.uri"
                value="classpath:ehcache.xml" />
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.cache.region.factory_class"
                value="org.hibernate.cache.jcache.JCacheRegionFactory" />
            <property name="javax.persistence.jdbc.driver"
                value="com.mysql.cj.jdbc.Driver" />
            <property name="javax.persistence.jdbc.password" value="" />
            <property name="hibernate.generate_statistics"
                value="false" />
            <property name="hibernate.auto_quote_keyword" value="true" />
        </properties>
    </persistence-unit>
</persistence>
Welcome to Rapidclipse Q&A, where you can ask questions and receive answers from other members of the community.
Powered by Question2Answer
...