我是hibernate 2.1.8 +spring+struts
数据库 sqlserver 2000
我把对hibernate的操作封装在DAO里,将来为业务层使用,
现在运行通过 ^_^public class UserHibernateDAO extends HibernateDaoSupport implements IUserDAO{
public List findUsers(){
return (this.getHibernateTemplate().find("from TUser"));
}
public void saveUser(TUser user){
this.getHibernateTemplate().saveOrUpdate(user);
}
public TUser getUser(Integer userid){
return (TUser)this.getHibernateTemplate().get(TUser.class,userid);
}
public void removeUser(Integer userid){
Object user=this.getHibernateTemplate().load(TUser.class,userid);
this.getHibernateTemplate().delete(user);
}
}
数据库 sqlserver 2000
我把对hibernate的操作封装在DAO里,将来为业务层使用,
现在运行通过 ^_^public class UserHibernateDAO extends HibernateDaoSupport implements IUserDAO{
public List findUsers(){
return (this.getHibernateTemplate().find("from TUser"));
}
public void saveUser(TUser user){
this.getHibernateTemplate().saveOrUpdate(user);
}
public TUser getUser(Integer userid){
return (TUser)this.getHibernateTemplate().get(TUser.class,userid);
}
public void removeUser(Integer userid){
Object user=this.getHibernateTemplate().load(TUser.class,userid);
this.getHibernateTemplate().delete(user);
}
}
我的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="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:microsoft:sqlserver://shyp:1433;DatabaseName=spring</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>123abc</value>
</property>
</bean> <bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>
com/lht/bo/TUser.hbm.xml
</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
net.sf.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">
true
</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate.HibernateTransactionManager" >
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userDAO" class="com.lht.bo.base.UserHibernateDAO">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="userServiceTaget" class="com.lht.bo.base.IUserServiceImpl">
<property name="userDAO">
<ref local="userDAO"/>
</property>
</bean>
<bean id="userService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userServiceTaget"/>
</property> <property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
</beans>
private HibernateTemplate hibernateTemplate;
需要通过IOC机制注入进去,没有配置文件,hibernateTemplate自然也就是null了
HibernateTemplate 中的find方法是调用Query的find方法。
不过hibernate 3.0中包结构都变了,估计与3.0一起用会有问题。
直接使用你的dao进行操作,会出现NullPointException
spring号称组件松散耦合,但对于这点就不太苟同了.
非要使用一堆的接口,一堆的service,然后getService().getDAO().create()....
那在一般的情况下,如果不依赖spring的注入,就无法使用((new dao()).create())对数据库的进行操作了实在不解