Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Hibernate e Postgres

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    12

    Hibernate e Postgres

    Ciao a tutti,

    In Eclipse sto muovendo i primissimi passi con Hibernate e PosgreSQL 8.4.
    Ho scaricato il driver postgresql-8.4-702.jdbc4.jar che ho inserito in una cartella "lib" insieme a tutti gli altri JAR di Hibernate a cui faccio riferimento.
    Ho creato poi una classe "Libro", semplicissima:

    public class Libro {

    private String titolo, autore;
    private Long id;

    public Libro() {
    }

    public Long getId() {
    return id;
    }

    private void setId(Long id) {
    this.id = id;
    }

    public String getTitolo() {
    return titolo;
    }

    public void setTitolo(String titolo) {
    this.titolo = titolo;
    }


    public String getAutore() {
    return autore;
    }

    public void setAutore(String autore) {
    this.autore = autore;
    }
    }


    a cui corrisponde una tabella Postgres chiamata "libri" all'interno del database "mydb" e così definita:

    CREATE TABLE libri
    (
    id serial NOT NULL,
    titolo text,
    autore text,
    CONSTRAINT pkey1 PRIMARY KEY (id)
    )
    WITH (
    OIDS=FALSE
    );
    ALTER TABLE libri OWNER TO marco;

    Ho poi creato il file Libro.hbm.xml:

    <?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    <class name="Libro" table="libri">
    <id name="id" column="id">
    <generator class="native"/>
    </id>
    <property name="titolo"/>
    <property name="autore"/>
    </class>
    </hibernate-mapping>

    ed il file Hibernate.cfg.xml:

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>
    <session-factory>

    <property name="connection.driver_class">org.postgresql.Driv er</property>
    <property name="connection.url">jdbcostgresql://localhost/mydb</property>
    <property name="connection.username">marco</property>
    <property name="connection.password">miapassword</property>

    <property name="connection.pool_size">1</property>

    <property name="current_session_context_class">thread</property>

    <property name="dialect">org.hibernate.dialect.PostgreSQLDia lect</property>

    <property name="show_sql">true</property>

    <property name="hbm2ddl.auto">create</property>
    <mapping resource="Libro.hbm.xml"/>
    </session-factory>
    </hibernate-configuration>

    infine ho scritto la classe per testare il salvataggio in tabella di un nuovo libro:

    import org.hibernate.*;
    import org.hibernate.cfg.*;

    public class HibernateExample {

    public HibernateExample() {
    }

    public static void main(String a[]) {
    Session session = null;
    try{
    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
    session = sessionFactory.openSession();
    session.beginTransaction();
    Libro libro = new Libro();
    libro.setTitolo("Bel titolo");
    libro.setAutore("Marco");
    session.persist(libro);
    }catch(Exception e){
    System.out.println(e.getMessage());
    }finally{
    session.getTransaction().commit();
    session.close();

    }
    }
    }

    Ora succede che questo codice non si limita a creare un nuovo libro in tabella, ma cancella tutti quelli eventualmente già presenti.
    Inoltre andando a rivedere la definizione della tabella, la trovo alterata:

    CREATE TABLE libri
    (
    id bigint NOT NULL,
    titolo character varying(255),
    autore character varying(255),
    CONSTRAINT libri_pkey PRIMARY KEY (id)
    )
    WITH (
    OIDS=FALSE
    );
    ALTER TABLE libri OWNER TO marco;

    l'id che avevo definito come 'serial' è diventato un bigint. Titolo e autore erano di tipo 'text' e ora sono character varying(255).
    Trovo anche una sequenza nuova, evidentamente creata da Hibernate, così definita:

    CREATE SEQUENCE hibernate_sequence
    INCREMENT 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1
    CACHE 1;
    ALTER TABLE hibernate_sequence OWNER TO marco;


    Mi aiutate a capire cosa sto sbagliando?

    Grazie,

    Marco

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    12

    Credo di aver risolto...

    Ho commentato questa linea di codice:



    nel file di configurazione hibernate.cfg.xml, ed ora pare stia lavorando bene (incrociando le dita).

    Marco

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.