2011-12-10 13 views
0

私は休止状態を学習しています。私は、休止状態を使用してOracle 11gからデータを取得している単純なWebアプリケーションを作成しました。休止状態のoracleデータの取得

マイhibernate.cfg.xmlファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property> 
    <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
    <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:ORCL</property> 
    <property name="hibernate.connection.username">hr</property> 
    <property name="hibernate.connection.password">titu</property> 
    <property name="hibernate.connection.pool_size">1</property> 
    <mapping class="Course" package="com.vaannila.course.Course.java" resource="com/vaannila/course/Course.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

私はデータを取得したいから、私は、データベース内のテーブル「コース」のテーブルを持っています。このため私はマッピングXMLファイルとPOJOファイルを作成しました。

Course.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="com.vaannila.course.Course" table="COURSES"> 
     <meta attribute="class-description"> 
      This class contains the course details. 
     </meta> 
     <id name="courseId" column="COURSE_ID" type="integer"/> 
     <property name="courseName" column="COURSE_NAME" type="string" not-null="true"/> 
    </class> 
</hibernate-mapping> 

Course.java:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package com.vaannila.course; 

/** 
* 
* @author titu 
*/ 
import org.hibernate.*; 
public class Course { 

    int courseId ; 
    String courseName; 

    public Course() {} 

    public Course(String courseName) { 
    this.courseName = courseName; 
    } 
    public int getCourseId() { 
     return courseId; 
    } 

    public void setCourseId(int courseId) { 
     this.courseId = courseId; 
    } 

    public String getCourseName() { 
     return courseName; 
    } 

    public void setCourseName(String courseName) { 
     this.courseName = courseName; 
    } 
} 

私は次のようであるJSPページ上のデータを取得したい:

<%-- 
    Document : index 
    Created on : Dec 9, 2011, 10:07:21 PM 
    Author  : titu 
--%> 

<%@page import="com.vaannila.course.Course"%> 
<%@page import="java.util.Iterator"%> 
<%@page import="java.util.List"%> 
<%@page import="com.vaannila.common.HibernateUtil"%> 
<%@page import="org.hibernate.*"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <% 

     Session db_session = HibernateUtil.getSessionFactory().openSession(); 
     Transaction transaction= null; 
     Integer courseId= null; 

     try{ 
      if(db_session==null) 
           { 
       out.println("This is null"); 
      } 
      transaction= db_session.beginTransaction(); 
      List courses= db_session.createQuery("from Course").list(); 
      for(Iterator iterator= courses.iterator(); iterator.hasNext();) 
           { 
       Course course= (Course) iterator.next(); 
       out.println(course.getCourseName()); 
      } 
      transaction.commit(); 
     } 
     catch(HibernateException e){ 
      transaction.rollback(); 
      e.printStackTrace(); 
     } 
     finally{ 
      db_session.close(); 
     } 
     %> 
    </body> 
</html> 

Iセッションファクトリオブジェクトを作成するための "HibernateUtil"クラスを作成してください:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package com.vaannila.common; 

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

/** 
* 
* @author titu 
*/ 
public class HibernateUtil { 

    private static final SessionFactory sessionFactory; 
    static{ 
     try{ 
      sessionFactory = new Configuration().configure().buildSessionFactory(); 
      } 
     catch(Throwable ex) 
     { 
      System.err.println("Initial session factory creation failed " + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
    return sessionFactory; 
    } 
} 

私はTomcatサーバーでこのプロジェクトを実行しているとき、NULLポインタ例外を与えています。私は私のプロジェクトをデバッグするとき、私はそれを見つけた

transaction= db_session.beginTransaction(); 

この行のjspは私に与えています。意味beginTransaction()はnullを返します。なぜそうなのか分からないのですか?

ご連絡ありがとうございます。

+0

本当ですか?トランザクションはnullで始まり​​ました。あなたは踏み越えましたか? – greyfairer

答えて

0

これはトランザクションが必要ありません。あなたはテーブルから読み込み、テーブルに書き込むのではないからです。