Hi All,<br><br>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!<br>
<br>Here are the results: <br><br># Records: 5000<br>
<br>
# Mapped Columns: 2<br>
Hibernate Query / Plain JDBC: 560 ms / 150 ms<br><br>
# Mapped Columns: 3<br>
Hibernate Query / Plain JDBC: 1200 ms / 270 ms<br>
<br>
# Mapped Columns: 5<br>
Hibernate Query / Plain JDBC: 1680 ms / 390 ms<br>
<br>
Thanks,<br>Joe<br><br>/* Hibernate Code */<br>Session session = sessionFactory.openSession();<br>Transaction tx = session.beginTransaction();<br><br>Date beginTime = new Date();<br><br>Query query = session.createQuery("from Photoset p");<br>
List<Photoset> photosets = query.list();<br>System.out.println(photosets.size() + " photoset(s) found:");<br><br>Date endTime = new Date();<br><br>tx.commit();<br>session.close();<br>System.out.println("Total Time Taken: " + (endTime.getTime() - beginTime.getTime()) + " ms");<br>
<br><br>/* Photoset.hbm.xml - Hibernate Mapping file */<br><hibernate-mapping><br> <class name="Photoset" table="pub.fotoset"><br> <id name="id" column="fotosetnum"><br>
<generator class="sequence"><br> <param name="sequence">pub.nextfotosetnum</param><br> </generator><br> </id><br> <br> <property name="title" column="fotosettitle" /><br>
</class><br></hibernate-mapping><br><br><br>/* Photoset.java */<br>public class Photoset {<br> private Long id;<br> private String title;<br> <br> Photoset() {} <br> <br> public Photoset (String title) {<br>
this.title = title;<br> }<br> <br> public Long getId() {<br> return id;<br> }<br> public void setId(Long id) {<br> <a href="http://this.id">this.id</a> = id;<br> }<br> <br> public String getTitle() {<br>
return title;<br> }<br> public void setTitle(String title) {<br> this.title = title;<br> }<br>}<br><br>/* JDBC Code that runs 4 times faster */<br>Date beginTime = new Date();<br><br>PreparedStatement pstmt = con.prepareStatement("select fotosetnum, fotosetitle from pub.fotoset");<br>
ResultSet rs = pstmt.executeQuery();<br>int numFotosets = 0;<br>while (rs != null && rs.next()) {<br> Photoset photoset = new Photoset();<br> photoset.setId(rs.getLong(1));<br> photoset.setTitle(rs.getString(2));<br>
numFotosets++;<br>}<br>rs.close();<br>System.out.println("# Photosets:" + numFotosets);<br><br>Date endTime = new Date();<br>System.out.println("Total Time Taken: " + (endTime.getTime() - beginTime.getTime()) + " ms");<br>
<br><br>