Stap -voor-stap Hibernate Tomcat MySQL Tutorial

Persistente data objecten zijn een fundamenteel onderdeel van de meeste programma Chad Baker / Photodisc / Getty Images

Hibernate is een open-source framework dat de persistentie van middle-tier gegevens objecten geschreven in Java ondersteunt.A middle-tier object is een eenheid van programmacode dat zich in de softwarearchitectuur laag tussen de gebruikersinterface en de gegevensopslag.Vaak gegevensopslag is een relationele database zoals MySQL, maar kan ook een geformatteerde tekst bestand.Het midden-tier gegevens objecten vormen een handige manier om een ​​hoger niveau logica schrijven te manipuleren en de toepassing informatie gebruiken.Tevens maken zij het onderliggende opslagmechanisme zonder dat aanpassingen aan de code bij hogere architectonische lagen te wijzigen.Apache Tomcat applicatie framework om Hibernate nemen configureren is een eenvoudig proces als je eenmaal de benodigde componenten zijn geïnstalleerd.

wat je

  • Geïnstalleerde Apache Tomcat applicatieserver en de afhankelijkheden, waaronder Java componenten
  • Need
    Geïnstalleerde mySQLgegevensbestand
  • Geïnstalleerde Hibernate
  • Geïnstalleerde Apache Ant
  • tekst editor

Sluit MySQL Apache

  1. Download Connector / J,de Java Database Connectivity (JDBC) Connector voor de MySQL-database.

  2. Pak de Connector / J .jar-bestand in op de "WEB-INF / lib" map waar je Tomcat en Hibernate bibliotheken bevinden.

  3. Maak een map "klassen" en een "lessen / src" map naar uw Java-tekst broncode bestanden te houden in de WEB-INF directory.Uw ant build script zal een "lessen / bin" directory naar de binaire objecten uit je bron in dezelfde map te houden.

  4. Maak een build.xml bestand voor Apache Ant om de basisfuncties die nodig zijn om te compileren en uitvoeren van een Java-programma uit te voeren.Elk genoemd commando opgegeven kunnen onafhankelijk van elkaar worden genoemd, maar ze vormen ook een hiërarchie van afhankelijkheden die een hoger doel te bereiken.De uiteindelijke einddoel is om "run" van het programma, die afhankelijk samenstellen na benodigde bestanden worden gekopieerd en oudere gecompileerde objecten worden verwijderd.

    & lt; project name = "hibernate-to-sql" default = "samenstellen" & gt;

    & amp; lt; property name = "SourceDir" value = "WEB-INF / classes / src" / & gt;

    & amp; lt; property name = "TARGETDIR" value = "WEB-INF / classes / bin" / & gt;

    & amp; lt; property name = "librarydir" value = "WEB-INF / lib" / & gt;

    & amp; lt; pad id = "bibliotheken" & gt;

    & amp; lt; bestandsset dir = "$ {librarydir}" & gt;

    & amp; lt; bevatten naam = "* pot." / & Gt;

    & amp; lt; / bestandsset & gt;

    & amp; lt; / pad & gt;

    & amp; lt; doel name = "schone" & gt;

    & amp; lt; schrappen dir = "$ {TARGETDIR}" / & gt;

    & amp; lt; mkdir dir = "$ {TARGETDIR}" / & gt;

    & amp; lt; / target & gt;

    & amp; lt; doel name = "samenstellen" hangt = "clean, copy-middelen '& gt;

    & amp; lt; javac srcdir = "$ {SourceDir}"

    DESTDIR = "$ {TARGETDIR}"

    classpathref = "bibliotheken" & gt;

    & amp; lt; compilerarg value = "- Xlint" / & gt;

    & amp; lt; / javac & gt;

    & amp; lt; / target & gt;

    & amp; lt; doel name = "copy-middelen '& gt;

    & amp; lt; kopiëren todir = "$ {TARGETDIR}" & gt;

    & amp; lt; bestandsset dir = "$ {SourceDir}" & gt;

    & amp; lt; uitsluiten name = "** / * java." / & Gt;

    & amp; lt; / bestandsset & gt;

    & amp; lt; / copy & gt;

    & amp; lt; / target & gt;

    & amp; lt; doel name = "run" hangt = "samenstellen" & gt;

    & amp; lt; java vork = "true" className = "events.EventManager" classpathref = "bibliotheken" & gt;

    & amp; lt; classpath path = "$ {TARGETDIR}" / & gt;

    & amp; lt; arg value = "$ {actie}" / & gt;

    & amp; lt; / java & gt;

    & amp; lt; / target & gt;

    & lt; / project & gt;

configureren Hibernate

  1. Maak een MySQL database met een gebruikersnaam en wachtwoord die root-toegang heeft.Dit voorbeeld wordt ervan uitgegaan dat de naam van de database is "overwinteren" met de gebruikersnaam "uname" en wachtwoord "MijnWachtwoord."

  2. Maak een tekstbestand hibernate.cfg.xml genoemd in uw src directory.Begin met het creëren van de basis XML shell waarin u uw specifieke configuraties te schrijven:!

    & lt; DOCTYPE hibernate-configuratie PUBLIC

    - // Hibernate / Hibernate Configuration DTD // EN

    http://hibernate.sourceforge.net/hibernate-configuratie-3.0.dtd & gt;

    & lt; hibernate-configuratie & gt;

    & amp; lt; sessie-fabriek & gt;

    & amp; lt; / sessie-fabriek & gt;

    & lt; / hibernate-configuratie & gt;

  3. Voeg de volgende regels toe aan sessie-fabriek element toe aan de MySQL database te configureren, het verstrekken van de juiste naam van de database, gebruikersnaam en wachtwoord:

    & lt; sessie-fabriek & gt;

    & amp; lt;! - Configureren MySQL - & gt;

    & amp; lt; property name = "connection.URL" & gt; jdbc: mysql: // localhost / hibernate & amp; lt; / woning & gt;

    & amp; lt; property name = "connection.username" & gt; uname & amp; lt; / woning & gt;

    & amp; lt; property name = "connection.password" & gt; MijnWachtwoord & amp; lt; / woning & gt;

    & amp; lt; property name = "connection.driver_class" & gt; com.mysql.jdbc.Driver & amp; lt; / woning & gt;

    & amp; lt; property name = "dialect" & gt; org.hibernate.dialect.MySQLDialect & amp; lt; / woning & gt;

    & lt; / sessie-fabriek & gt;

  4. configuratie voor dit C3P0 verbinding zwembad pakket dat wordt gedistribueerd met Hibernate door toevoeging van de volgende regels om de sessie-fabriek element:

    & lt; - C3P0 Connection Pool - & gt;!

    & lt; property name = "c3p0.min_size" & gt; 3 & lt; / woning & gt;

    & lt; property name = "c3p0.max_size" & gt; 5 & lt; / woning & gt;

    & lt; property name = "c3p0.timeout" & gt; 1800 & lt; / woning & gt;

    & lt; property name = "current_session_context_class" & gt; draad & lt; / woning & gt;

  5. Disable Hibernate tweede niveau cache om mogelijke synchronisatie problemen te voorkomen bij het gebruik met Tomcat:

    & lt; - Schakel het tweede niveau cache.- & gt;

    & lt; property name = "cache.provider_class" & gt; org.hibernate.cache.NoCacheProvider & lt; / woning & gt;

    & lt; property name = "cache.use_query_cache" & gt; valse & lt; / woning & gt;

    & lt; property name = "cache.use_minimal_puts" & gt; valse & lt; / woning & gt;

    & lt; property name = "max_fetch_depth" & gt; 3 & lt; / woning & gt;

  6. Stel de volgende eigenschappen zodat u uw configuratie te testen:

    & lt; - Print SQL naar standaarduitvoer en recreëren bij het gebouw - & gt;

    & lt; property name = "show_sql" & gt; true & lt; / woning & gt;

    & lt; property name = "format_sql" & gt; true & lt; / woning & gt;

    & lt; property name = "hbm2ddl.auto" & gt; creëren & lt; / woning & gt;

Maak een Java-klasse voor het testen

  1. Schrijf een eenvoudige Java-klasse en op te slaan in uw pakket directory directory.Voor dit voorbeeld, zal de naam van de klasse bestand MyClass.java in de src / com / ehow / yourname directory:

    pakket com.ehow.yourname;/ vervangen door uw naam en domeinnaam /

    import java.util.Date;

    public class MyClass {

    privé Lange id;/ * Een unieke identificatiecode voor uw object * /

    private String myProperty;

    openbare Long GetID () {

    return id;

    }

    public void setId (Long id) {

    this.id = id;

    }

    public String getMyProperty () {

    terugkeren this.myProperty;

    }

    public void setMyProperty (String prop) {

    this.myProperty = prop;

    }

    }

  2. Maak een MyClass.hbm.xml bestand in het pakket map waarin u de bijbehorende MyClass.java bestand opgeslagen.Maak een woning element voor al uw MyClass gegevens leden die worden opgeslagen in een database tabel met de naam MijnKlasse:?

    & lt; xml version = "1.0" encoding = "UTF-8" & gt;

    & lt; DOCTYPE hibernate-mapping PUBLIC

    "- // Hibernate / Hibernate Mapping DTD 3.0 // EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" & gt!;

    & lt; hibernate-mapping & gt;

    & amp; lt; class name = "com.ehow.yourname.MyClass" table = "MyClass" & gt;

    & amp; lt; id name = "id" kolom = "id" type = "java.lang.Long" & gt;

    & amp; lt; generator class = "increment" / & gt;

    & amp; lt; / id & gt;

    & amp; lt; property name = "myProperty" / & gt;

    & amp; lt; / class & gt;

    & lt; / hibernate-mapping & gt;

  3. Voeg een vermelding in de sessie-fabriek element van uw XML-bestand naar uw MyClass mapping configuratiebestand associëren met Hibernate:

    & lt; - Mapping Files - & gt;!

    & lt; mapping resource = "com.ehow.yourname.MyClass.hbm.xml" / & gt;

  4. Run je mier te bouwen bestand.Als er geen fouten zijn, moet u zien dat een nieuw record is toegevoegd aan uw MySQL database:

    $ mier run

    Buildfile: build.xml

Start Hibernate

  1. Bouw een helper klasse implementeren van eensessie fabriek en sla het op als HibernateUtil.java in uw directory "WEB-INF / classes".Importeer uw pakket en een belangrijke functie om de configuratie te testen:

    import org.hibernate.SessionFactory;

    import org.hibernate.Session;

    import org.hibernate.Transaction;

    import org.hibernate.cfg.Configuration;

    import com.ehow.yourname.MyPackage;/ vereist voor testfunctie alleen /

    public class HibernateUtil {

    private static final SessionFactory SessionFactory;

    statische {

    try {

    // initialiseren fabriek met behulp van de inhoud van hibernate.cfg.xml

    SessionFactory = new Configuration () configureren () buildSessionFactory ()..;

    } catch (Throwable ex) {

    System.err.println ("Eerste SessionFactory creatie mislukt." + Ex);

    werpen een nieuw ExceptionInInitializerError (ex);

    }

    }

    openbare statische SessionFactory getSessionFactory () {

    terugkeren SessionFactory;

    }

    public static void main (String [] args) {

    MijnKlasse mycls = new MyClass ();

    / * het veld id zal automatisch increment op een unieke waarde die records onderscheiden * /

    mycls.setMyProperty ("My Property");

    Sessie sessie = getSession ();

    Transactie transactie = session.beginTransaction ();

    session.save (blog);

    transaction.commit ();/ * Als deze test slaagt, krijgt u een nieuw record in de MySQL-database * /

    }

    }

  2. Bouw een luisteraar klasse die Hibernate zal starten en beheren van de persistentie van uw kaart gebrachte gegevens klassen te vinden.Sla de klasse als HibernateListener.java in uw directory "WEB-INF / classes":

    public class HibernateListener implementeert ServletContextListener {

    openbare nietige contextInitialized (ServletContextEvent event) {

    HibernateUtil.getSessionFactory ();// Creëren een fabriek

    }

    public void contextDestroyed (ServletContextEvent event) {

    HibernateUtil.getSessionFactory () close ().;// Middelen vrij

    }

    }

  3. Voeg de volgende regel toe aan het bestand web.xml in de WEB-INF directory.Dit associëren uw luisteraar klas met uw aanvraag:

    & lt; luisteraar & gt;

    & amp; lt; luisteraar-class & gt; com.ehow.yourname.HibernateListener & amp; lt; / luisteraar-class & gt;

    & lt; / luisteraar & gt;

  4. In een console venster type "ant run" op de mier script uit te voeren.

49
0
3
Php / My Sql Programming