.DAOImpl session 得不到的问题
来源:互联网 发布:java 线程共享变量 编辑:程序博客网 时间:2024/05/16 15:57
- 一。代码分析。
- package org.hxwl.tm.DAOImpl;
import java.util.List;
import org.hibernate.Query;
import org.hxwl.tm.IDAO.ITeacherDAO;
import org.hxwl.tm.vo.Teacher;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class TeacherDAOImpl extends HibernateDaoSupport implements ITeacherDAO {
@Override
public void delete(String name) throws Exception {
String hsql = "delete from Teacher as t where t.name = ?";
Query q = super.getSession().createQuery(hsql);
q.setString(0, name);
q.executeUpdate();
}
@Override
public List findAll() throws Exception {
String hsql = "from Teacher";
Query q = super.getSession().createQuery(hsql);
List list = q.list();
return list;
}
@Override
public Teacher findByName(String name) throws Exception {
String hsql = "from Teacher as t where t.name = ?";
Query q = super.getSession().createQuery(hsql);
q.setString(0, name);
Teacher teacher = (Teacher)q.list().get(0);
return teacher;
}
@Override
public void save(Teacher teacher) throws Exception {
System.out.println("测试insert DAOImpl");
System.out.println(teacher.getName());
System.out.println(teacher.getBirth());
super.getSessionFactory().openSession().save(teacher);
// super.getSession().save(teacher);
}
@Override
public boolean isExists(String name) throws Exception {
String hsql = "from Teacher as t where t.name = ?";
Query q = super.getSession().createQuery(hsql);
q.setString(0, name);
List list = q.list();
if(list.size()>0)
return true;
else
return false;
}
@Override
public boolean login(Teacher teacher) throws Exception {
boolean flag = false;
String hsql = "from Teacher as t where t.name=? and t.password=?";
Query q = super.getSession().createQuery(hsql);
q.setString(0, teacher.getName());
q.setString(1, teacher.getPassword());
List all = q.list();
if (all.size() > 0) {
flag = true;
}
return flag;
}
@Override
public void update(Teacher teacher) throws Exception {
super.getSession().update(teacher);
}
}
@Override
public void save(Teacher teacher) throws Exception {
System.out.println("测试insert DAOImpl");
System.out.println(teacher.getName());
System.out.println(teacher.getBirth());
[color=#FF0000]super.getSessionFactory().openSession().save(teacher);[/color]
// super.getSession().save(teacher);
}
super.getSessionFactory().openSession().save(teacher);
这一句是我在后来做的时候改的,原来是:
super.getSession().save(teacher); - 二、Spring的applicationContext.xml配置:
- Java code
- <?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="dataSourse" class="org.springframework.jndi.JndiObjectFactoryBean" destroy-method="close"> <property name="jndiName" value="java:comp/env/jdbc/tm"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSourse" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect </prop> <!-- 表示允许自动提交 --> <prop key="hibernate.connection.autocommit">true</prop> <!-- 显示sql语句 --> <prop key="hibernate.show_sql">false</prop> </props> </property> <property name="mappingResources"> <list> <value>org/hxwl/tm/vo/Admin.hbm.xml</value> <value>org/hxwl/tm/vo/Ad.hbm.xml</value> <value>org/hxwl/tm/vo/Teacher.hbm.xml</value> <value>org/hxwl/tm/vo/Stipend.hbm.xml</value> <value>org/hxwl/tm/vo/ResearchCase.hbm.xml</value> <value>org/hxwl/tm/vo/TeachResearchCase.hbm.xml</value> <value>org/hxwl/tm/vo/AuditionCase.hbm.xml</value> <value>org/hxwl/tm/vo/CheckWork.hbm.xml</value> <value>org/hxwl/tm/vo/EduCase.hbm.xml</value> <value>org/hxwl/tm/vo/Evection.hbm.xml</value> <value>org/hxwl/tm/vo/OperationCase.hbm.xml</value> <value>org/hxwl/tm/vo/RewardsAndPunishment.hbm.xml</value> <value>org/hxwl/tm/vo/TeacherValueByStudent.hbm.xml</value> <value>org/hxwl/tm/vo/TrainCase.hbm.xml</value></list> </property> </bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" abstract="false" lazy-init="default" autowire="default" dependency-check="default"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!-- interface --> <bean id="iAdminDAO" class="org.hxwl.tm.IDAO.IAdminDAO" abstract="true"></bean> <bean id="iAdDAO" class="org.hxwl.tm.IDAO.IAdDAO" abstract="true"></bean> <bean id="iTeacherDAO" class="org.hxwl.tm.IDAO.ITeacherDAO" abstract="true"></bean><!-- daoImpl --> <bean id="iAdminDAOImpl" class="org.hxwl.tm.DAOImpl.AdminDAOImpl" parent="iAdminDAO"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate" /> </property> </bean> <bean id="iAdDAOImpl" class="org.hxwl.tm.DAOImpl.AdDAOImpl" parent="iAdDAO"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate" /> </property> </bean> <bean id="iTeacherDAOImpl" class="org.hxwl.tm.DAOImpl.TeacherDAOImpl" parent="iTeacherDAO"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate" /> </property> </bean><!-- struts action --><!-- others --> <bean name="/index" class="org.hxwl.tm.struts.action.IndexAction"> <property name="adDAOImpl"> <ref bean="iAdDAOImpl" /> </property> </bean> <!-- admin --> <bean name="/adminLogin" class="org.hxwl.tm.struts.action.AdminAction"> <property name="admindao"> <ref bean="iAdminDAOImpl" /> </property> </bean> <bean name="/jsp/admin/admin" class="org.hxwl.tm.struts.action.AdminAction"> <property name="admindao"> <ref bean="iAdminDAOImpl" /> </property> </bean> <!-- showAd --> <bean name="/showAd" class="org.hxwl.tm.struts.action.ShowAdAction"> <property name="adDAOImpl"> <ref bean="iAdDAOImpl"/> </property> </bean> <!-- ad --> <bean name="/jsp/admin/ad" class="org.hxwl.tm.struts.action.AdAction"> <property name="adDAOImpl"> <ref bean="iAdDAOImpl"/> </property> </bean> <bean name="/jsp/admin/listAd_manage" class="org.hxwl.tm.struts.action.ListAd_manageAction"> <property name="adDAOImpl"> <ref bean="iAdDAOImpl"/> </property> </bean> <bean name="/jsp/admin/updateAd" class="org.hxwl.tm.struts.action.UpdateAdAction"> <property name="adDAOImpl"> <ref bean="iAdDAOImpl"/> </property> </bean> <!-- teacher --> <bean name="/jsp/admin/teacher" class="org.hxwl.tm.struts.action.TeacherAction"> <property name="teacherDAOImpl"> <ref bean="iTeacherDAOImpl"/> </property> </bean> </beans>
- 三、HibernateDaoSupport来整合ssh,getHibernateTemplate()就相当于hibernate中的session,如果你一定要取到session,应该使用spring提供的HibernateCallback来获得session;
例如:
一个简单的分页查询: - Java code
- public List findByPage(final String hql, final int offset, final int pageSize){ List list = getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session arg0) //得到回调中的session throws HibernateException, SQLException { // TODO Auto-generated method stub List result = session.createQuery(hql) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list;}需要复杂的查询时,使用SqlQuery类时,有时需要当前的session:这是一个查年统计的查询:public XXXX findByNameAndMonth(String name, Date date) throws DataException { XXXX year = null; String sql ="select * from t_uday_" + (date.getMonth()+1) +"where login_name=? and logout_date=?"; SQLQuery query = null; try { query = this.getHibernateTemplate() .getSessionFactory() .getCurrentSession() //取到当前Session .createSQLQuery(sql); query.addEntity(XXXX.class); query.setString(0, name); query.setDate(1, date); year = (XXXX) query.uniqueResult(); } catch (HibernateException e) { e.printStackTrace(); throw new DataException(e.getMessage()); } return year;}
<bean id="dataSourse"
class="org.springframework.jndi.JndiObjectFactoryBean"
destroy-method="close">
<property name="jndiName" value="java:comp/env/jdbc/tm"> </property>
</bean>
appication中这么写取不到数据源的楼主,如果你是weblogic的话也得需要一个对象模版才行啊
建议你junit的时候
这么写
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver </value>
</property>
<property name="url">
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=bugtrack </value>
</property>
<property name="username">
<value>sa </value>
</property>
<property name="password">
<value>sa </value>
</property>
</bean>
class="org.springframework.jndi.JndiObjectFactoryBean"
destroy-method="close">
<property name="jndiName" value="java:comp/env/jdbc/tm"> </property>
</bean>
appication中这么写取不到数据源的楼主,如果你是weblogic的话也得需要一个对象模版才行啊
建议你junit的时候
这么写
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver </value>
</property>
<property name="url">
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=bugtrack </value>
</property>
<property name="username">
<value>sa </value>
</property>
<property name="password">
<value>sa </value>
</property>
</bean>
四、环境:weblogic8 ,oracle9i
框架:struts1.2.4 + Spring1.2 + Hibernate2.1,使用weblogic的连接池的DataSourse管理数据库链接。
struts与spring的结合方式采用在struts-config.xml中添加 (有错的)
框架:struts1.2.4 + Spring1.2 + Hibernate2.1,使用weblogic的连接池的DataSourse管理数据库链接。
struts与spring的结合方式采用在struts-config.xml中添加 (有错的)
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" destroy-method="close">
- .DAOImpl session 得不到的问题
- DaoImpl
- Android得不到对话框里的值问题
- 得不到的
- 编写DAOImpl的JUnit测试
- asp.net c# 数字除以数字得不到小数的问题
- Android得不到对话框中EditView值的问题
- Spring中使用PropertyPlaceholderConfigurer占位符得不到替换的问题
- addChildViewController时viewDidAppear方法得不到调用的问题
- 在onResume()中调用getIntent()得不到Extra的问题
- Jquery使用Ajax构建方法得不到返回值的问题
- 低耦合的spring的daoImpl
- servlet cookie得不到值问题
- 队列得不到资源分配问题
- 得不到的,才是最好的?
- 得不到爱的女人--周止若
- 真的得不到你吗?
- Autohotkey得不到PID的原因
- WSDL 文档结构
- 取不同用户的最新数据
- ArcObjects培训概要
- 重载操作符的运用
- DAO与Factory模式的结合——持久层的设计模式分析(深入浅出Hibernate笔记)
- .DAOImpl session 得不到的问题
- 简析产品开发过程管理之——软件测试
- 如何让新版的top显示多个cpu信息?
- 《asp.net 3.5核心编程》读书笔记1
- tomcat不能热部署
- 当翻译服务器宕机之后。。。。
- Android学习(1)
- Windows2008 “下载文件夹”丢失后重建
- Solve the issue: ORA-29701 :unable to connect to Cluster Manager