關於HibernateDaoSupport使用的問題,高手指點
實現的是一個使用者輸入使用者名稱、密碼,到資料庫中驗證有無該使用者的功能。程式報錯:
java.lang.IllegalArgumentException: No SessionFactory specified:
…
org.snailheart.dao.BaseDAO.openSession(這句出錯)
…
簡單說一下程式:
1.建立了一個BaseDAO.java,繼承了HibernateDaoSupport,程式碼如下:
package test.dao;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import org.springframework.orm.hibernate.SessionFactoryUtils;
import net.sf.hibernate.Session;
import net.sf.hibernate.Query;
import net.sf.hibernate.HibernateException;
public class BaseDAO extends HibernateDaoSupport {
public Session openSession() {
return SessionFactoryUtils.getSession(getSessionFactory(), false);
}
public Query getQuery(String query) throws HibernateException{
Session session = this.openSession();
return session.createQuery(query);
}
}
2.建立UserDAOHBImpl.java,繼承BaseDAO。在其中實現了訪問DB的具體
操作,程式碼如下,為了便於檢視,只保留了一個方法:
package test.dao.hibernate;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import net.sf.hibernate.Session;
import net.sf.hibernate.Query;
import net.sf.hibernate.HibernateException;
import test.dao.BaseDAO;
import test.dao.UserDAO;
import test.domain.User;
import test.dto.UserDTO;
public class UserDAOHBImpl extends BaseDAO implements UserDAO {
public User getUser(UserDTO userDTO) {
String userName = userDTO.getUserName();
String pwd = userDTO.getPassword();
String queryStr = "select user from User where User.userName
=:name and User.passwd =:pwd";
Query query = this.getQuery(queryStr);
query.setString("name", userName);
query.setString("pwd", pwd);
List userList = query.list();
if(userList != null) {
user = (User)userList.get(0);
}else {
user = null;
}
}
}
3.在applicationContext.xml中,做相應地配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="oracleDS"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:oradb</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>test</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="oracleDS"/>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/org/snailheart/domain/hbm</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
net.sf.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="userDAO"
class="org.snailheart.dao.hibernate30.UserDAOHBImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
</beans>
4.在struts的action類中,呼叫UserDAOHBImpl的方法
getUser(UserDTO userDTO),查詢是否存在當前使用者,程式報錯:
java.lang.IllegalArgumentException: No SessionFactory specified:
…
org.snailheart.dao.BaseDAO.openSession
…
java.lang.IllegalArgumentException: No SessionFactory specified:
…
org.snailheart.dao.BaseDAO.openSession(這句出錯)
…
簡單說一下程式:
1.建立了一個BaseDAO.java,繼承了HibernateDaoSupport,程式碼如下:
package test.dao;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import org.springframework.orm.hibernate.SessionFactoryUtils;
import net.sf.hibernate.Session;
import net.sf.hibernate.Query;
import net.sf.hibernate.HibernateException;
public class BaseDAO extends HibernateDaoSupport {
public Session openSession() {
return SessionFactoryUtils.getSession(getSessionFactory(), false);
}
public Query getQuery(String query) throws HibernateException{
Session session = this.openSession();
return session.createQuery(query);
}
}
2.建立UserDAOHBImpl.java,繼承BaseDAO。在其中實現了訪問DB的具體
操作,程式碼如下,為了便於檢視,只保留了一個方法:
package test.dao.hibernate;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import net.sf.hibernate.Session;
import net.sf.hibernate.Query;
import net.sf.hibernate.HibernateException;
import test.dao.BaseDAO;
import test.dao.UserDAO;
import test.domain.User;
import test.dto.UserDTO;
public class UserDAOHBImpl extends BaseDAO implements UserDAO {
public User getUser(UserDTO userDTO) {
String userName = userDTO.getUserName();
String pwd = userDTO.getPassword();
String queryStr = "select user from User where User.userName
=:name and User.passwd =:pwd";
Query query = this.getQuery(queryStr);
query.setString("name", userName);
query.setString("pwd", pwd);
List userList = query.list();
if(userList != null) {
user = (User)userList.get(0);
}else {
user = null;
}
}
}
3.在applicationContext.xml中,做相應地配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="oracleDS"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:oradb</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>test</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="oracleDS"/>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/org/snailheart/domain/hbm</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
net.sf.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="userDAO"
class="org.snailheart.dao.hibernate30.UserDAOHBImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
</beans>
4.在struts的action類中,呼叫UserDAOHBImpl的方法
getUser(UserDTO userDTO),查詢是否存在當前使用者,程式報錯:
java.lang.IllegalArgumentException: No SessionFactory specified:
…
org.snailheart.dao.BaseDAO.openSession
…
相關文章
- 關於執行緒的問題,清高手指點執行緒
- 關於單點登入的若干問題,請高手指教
- 關於jive的幾個小問題,請高手指點,多謝先。
- 關於資料庫中儲存中文的問題,請高手指點資料庫
- 關於ofbiz工作流的問題(希望高手指點:Quake_wang)
- 關於php的try catch 使用的疑惑,希望高手指點PHP
- HibernateDaoSupport 記憶體洩漏的問題!記憶體
- 有關於css中行高的問題CSS
- jbuilder整合mysql的問題,哭求高手指點UIMySql
- 求助:Apache的問題請高手指點(轉)Apache
- 一個困擾我三天的問題,請高手指點!(關於SUN實現CachedRowSet 的用法)
- MySql 漢字問題? 請高手指點!MySql
- 新手求助,junit問題,請高手指點
- 關於excelize庫的使用問題Excelize
- 關於網路的一點問題(轉)
- 請高手指教,關於Web應用程式的資源保護問題^_^Web
- jbuilder9.0+jdk1.5的問題,請高手指點UIJDK
- 關於MQTT 使用遇到問題MQQT
- 關於學習效率問題,一點點心得
- 關於repaint()問題,大家請指點AI
- 關於工作流動態許可權和流程跳轉問題,請高手指點,我很迷茫……
- 關於使用擴充套件包的問題。套件
- 工作流問題,請高手指點一下!
- 關於實體Bean的啟用和鈍化,請高手指點!Bean
- 關於SQLServerDriver的問題SQLServer
- 關於 JavaMail 的問題JavaAI
- 關於session的問題Session
- 關於JVM 記憶體的 N 個高頻面試問題!JVM記憶體面試
- 關於echarts使用的常見問題總結Echarts
- 高手指教,關於iPlanet
- C++基礎::關於區間端點的問題C++
- 關於時間轉換 SimpleDateFormat 的使用的問題ORM
- 一個關於Struts Action的小框架, 請高手指點一下框架
- 關於javascript的this指向問題JavaScript
- 關於跨域的問題跨域
- 關於bit code的問題
- 關於序列同步的問題
- 關於IP地址的問題