[hibernate-users] Hibernate Performance against Progress Open Edge database

Joe Hansen joe.hansen.at at gmail.com
Thu Apr 23 18:45:39 EDT 2009


Hi All,

I know that I am comparing apples to oranges here. But I am surprised to
find that a simple Hibernate query ("from Photoset p") takes 4 times as much
time as JDBC. I know that there is overhead involved with the benefits that
Hibernate offers. But don't you think 4 times is just too slow? Please let
me know if there is a way to get a better performance out of Hibernate.
Thank you!

Here are the results:

# Records: 5000

# Mapped Columns: 2
Hibernate Query / Plain JDBC: 560 ms / 150 ms

# Mapped Columns: 3
Hibernate Query / Plain JDBC: 1200 ms / 270 ms

# Mapped Columns: 5
Hibernate Query / Plain JDBC: 1680 ms / 390 ms

Thanks,
Joe

/* Hibernate Code */
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

Date beginTime = new Date();

Query query = session.createQuery("from Photoset p");
List<Photoset> photosets = query.list();
System.out.println(photosets.size() + " photoset(s) found:");

Date endTime = new Date();

tx.commit();
session.close();
System.out.println("Total Time Taken: " + (endTime.getTime() -
beginTime.getTime()) + " ms");


/* Photoset.hbm.xml - Hibernate Mapping file */
<hibernate-mapping>
    <class name="Photoset" table="pub.fotoset">
        <id name="id" column="fotosetnum">
            <generator class="sequence">
                <param name="sequence">pub.nextfotosetnum</param>
            </generator>
        </id>

        <property name="title" column="fotosettitle" />
    </class>
</hibernate-mapping>


/* Photoset.java */
public class Photoset {
    private Long id;
    private String title;

    Photoset() {}

    public Photoset (String title) {
        this.title = title;
    }

    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

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

/* JDBC Code that runs 4 times faster */
Date beginTime = new Date();

PreparedStatement pstmt = con.prepareStatement("select fotosetnum,
fotosetitle from pub.fotoset");
ResultSet rs = pstmt.executeQuery();
int numFotosets = 0;
while (rs != null && rs.next()) {
    Photoset photoset = new Photoset();
    photoset.setId(rs.getLong(1));
    photoset.setTitle(rs.getString(2));
    numFotosets++;
}
rs.close();
System.out.println("# Photosets:" + numFotosets);

Date endTime = new Date();
System.out.println("Total Time Taken: " + (endTime.getTime() -
beginTime.getTime()) + " ms");
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/hibernate-users/attachments/20090423/41dd5d65/attachment.html 


More information about the hibernate-users mailing list