From Resin 3.0

Jump to: navigation, search

Hibernate and Resin

This example shows how to use Hibernate EntityManager (Hibernate's JPA implementation) with Resin IoC.

You'll need a running database in order to run this example. We use MySQL here, but any database with a JDBC driver should work.

(The following has been tested with Resin 3.1.5, Hibernate Core 3.2 )

  1. Download Resin from http://www.caucho.com/download
  2. Unzip Resin into /usr/local/share/resin
  3. Download the MySQL JDBC driver from http://www.mysql.com/products/connector/j/
  4. Copy the MySQL JDBC driver jar to /usr/local/share/resin/lib
  5. Create the Hibernate webapp directory structure:
    mkdir -p /usr/local/share/resin/webapps/hibernate/WEB-INF/lib/
    mkdir -p /usr/local/share/resin/webapps/hibernate/WEB-INF/classes/example/
    mkdir -p /usr/local/share/resin/webapps/hibernate/WEB-INF/classes/META-INF/
  6. Download Hibernate Core and EntityManager from http://www.hibernate.org/
  7. Unzip both Hibernate Core and EntityManager
  8. Copy all the jars included the Hibernate distributions to
  9. Initialize the database by executing the following SQL statements:
    CREATE DATABASE Hibernate;
    CREATE TABLE Hibernate.basic_courses (id INTEGER PRIMARY KEY auto_increment, course VARCHAR(250), teacher VARCHAR(250));
    INSERT INTO Hibernate.basic_courses VALUES('1', 'Potions', 'Severus Snape');
    INSERT INTO Hibernate.basic_courses VALUES('2', 'Transfiguration', 'Minerva McGonagall');
  10. Create the configuration file /usr/local/share/resin/webapps/hibernate/WEB-INF/resin-web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://caucho.com/ns/resin">
      <!-- Make the database accessible to Hibernate -->
        <driver type="org.gjt.mm.mysql.Driver">
      <!-- Set up the example servlet -->
      <servlet servlet-name="course-servlet" servlet-class="example.CourseServlet"/>
      <servlet-mapping url-pattern="/*" servlet-name="course-servlet"/>
  11. Create the JPA configuration file /usr/local/share/resin/webapps/hibernate/WEB-INF/classes/META-INF/persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
      <persistence-unit name="example">
           <property name="hibernate.transaction.manager_lookup_class"
  12. Create a JPA persisted data bean file /usr/local/share/resin/webapps/hibernate/WEB-INF/classes/example/CourseBean.java
    package example;
    import javax.persistence.*;
    public class CourseBean {
      private int _id;
      private String _course;
      private String _teacher;
      public int getId()
        return _id;
      public void setId(int id)
        _id = id;
      public String getCourse()
        return _course;
      public void setCourse(String course)
        _course = course;
      public String getTeacher()
        return _teacher;
      public void setTeacher(String teacher)
        _teacher = teacher;
  13. Create the example servlet /usr/local/share/resin/webapps/mule/WEB-INF/classes/example/CourseServlet.java
    package example;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.persistence.*;
    public class CourseServlet extends HttpServlet
      // Resin IoC will inject this
      private EntityManager _manager;
      public void service(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
        PrintWriter out = response.getWriter();
        out.println("EntityManager = " + _manager + "<br/>");
        CourseBean []course = new CourseBean[2];
        course[0] = _manager.find(CourseBean.class, new Integer(1));
        course[1] = _manager.find(CourseBean.class, new Integer(2));
        out.println("Course Details<br/><br/>");
        for (int i = 0; i < course.length; i++) {
          out.println("course: " + course[i].getCourse() + "<br/>");
          out.println("teacher: " + course[i].getTeacher() + "<br/>");
  14. Start Resin with java -jar /usr/local/share/resin/lib/resin.jar
  15. Look at http://localhost:8080/hibernate
    It should show
    EntityManager = org.hibernate.ejb.EntityManagerImpl@113cf49
    Course Details
    course: Potions
    teacher: Severus Snape
    course: Transfiguration
    teacher: Minerva McGonagall

Compare this example to http://www.caucho.com/resin/examples/amber-basic/index.xtp

Personal tools