私は休止状態を学習しています。私は、休止状態を使用して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を返します。なぜそうなのか分からないのですか?
ご連絡ありがとうございます。
本当ですか?トランザクションはnullで始まりました。あなたは踏み越えましたか? – greyfairer