The files required to run the simple Hibernate Example.
1. Index.jsp
2. Web.xml
3. HibernateUtil.java
4. Person.java
5. hibernate.cfg.xml
6. Person.hbm.xml
7. server.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <%@ page import="java.io.*"%> <%@ page import="java.util.*"%> <%@ page import="mypackage.*"%> <%@ page import="org.hibernate.*"%> <%@ page import="org.hibernate.cfg.*"%> <HTML> <HEAD> <title>Greetings!</title> </HEAD> <BODY> <% org.hibernate.Session hibernateSession = mypackage.HibernateUtil.currentSession(); Transaction tx = hibernateSession.beginTransaction();
Person person = new Person(); person.setMyName("Joe"); hibernateSession.save(person); tx.commit(); Query query = hibernateSession.createQuery("select p from Person as p where p.myName=:name"); query.setString("name", "Joe"); for (Iterator iter = query.iterate(); iter.hasNext() { person = (Person) iter.next(); } HibernateUtil.closeSession(); %> <br> <br> <br> <br> <table width="400" border="0" cellspacing="1" cellpadding="0" align="center" class="tableBox"> <tr> <td CLASS="bluebanner" align="center"> Greetings, <%=person.getMyName()%></TD> </tr> </table> </BODY> </HTML>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | The web.xml is:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<display-name>hibernate</display-name>
<description>hibernate</description>
<!-- Servlets -->
<!-- Servlet Mappings -->
<!-- Session Expires in 1 day --> <session-config> <session-timeout>1440</session-timeout> </session-config>
<!-- The Welcome File List --> <welcome-file-list> <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file> </welcome-file-list>
<!-- Data Source References -->
<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/hibernate</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
</web-app>
The Java source is in directory /WEB-INF/src:
package mypackage; import org.hibernate.*; import org.hibernate.cfg.*;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static { try { // Create the SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.out.println("Initial SessionFactory creation failed: " + ex.getMessage()); throw new ExceptionInInitializerError(ex); } }
public static final ThreadLocal hibernateSession = new ThreadLocal();
public static Session currentSession() { Session s = (Session) hibernateSession.get(); // Open a new Session, if this Thread has none yet if (s == null) { s = sessionFactory.openSession(); hibernateSession.set(s); } return s; }
public static void closeSession() { Session s = (Session) hibernateSession.get(); if (s != null) s.close(); hibernateSession.set(null); } }
package mypackage;
public class Person {
private String myName; private String id;
public String getId() { return id; }
private void setId(String id) { this.id = id; }
public String getMyName() { return myName; }
public void setMyName(String name) { this.myName = name; } }
The hibernate.cfg.xml configuration files is:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/hibernate</property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Mapping files --> <mapping resource="Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
And the Person.hbm.xml file is:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="mypackage.Person" table="Person">
<!-- A 32 hex character is our surrogate key. It's automatically generated by Hibernate with the UUID pattern. --> <id name="id" type="string" unsaved-value="null" > <column name="id" sql-type="char(32)" not-null="true"/> <generator class="uuid.hex"/> </id>
<!-- A cat has to have a name, but it shouldn' be too long. --> <property name="myName"> <column name="name" length="80" not-null="true"/> </property>
</class>
</hibernate-mapping>
The context xml for this example in Tomcat's server.xml is:
<Context path="/Hibernate" reloadable="true" docBase="C:\eclipse\workspace\Hibernate" workDir="C:\eclipse\workspace\hibernate\work"> <Resource name="jdbc/hibernate" scope="Shareable" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/hibernate"> <parameter> <name>url</name> <value>jdbc:mysql://127.0.0.1:3306/hibernate</value> </parameter>
<parameter> <name>maxIdle</name> <value>2</value> </parameter> <parameter> <name>maxActive</name> <value>2000</value> </parameter> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value></value> </parameter> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> </ResourceParams> </Context>
Good luck!
|
No comments:
Post a Comment