Возникает lazy exception. Получаю класс А, обращаюсь к полю, которое связано с классом В и получаю exception. Использую HibernateDaoSupport. На сколько я понял, то нужно настроить HibernateInterceptor, но не мойму, как... Standalone приложение.
| Код | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- DataSource --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <property name="url"><value>jdbc:mysql://localhost/megashop</value></property> <property name="username"><value>root</value></property> <property name="password"><value>root</value></property> </bean> <!--***************************************************************************** -->
<!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"><ref local="dataSource"/></property> <property name="mappingResources"> <list> <value>User.hbm.xml</value> <value>Category.hbm.xml</value> <value>Product.hbm.xml</value> <value>Order.hbm.xml</value> <value>OrderLine.hbm.xml</value> <!-- Add list of .hbm.xml files here --> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <!-- <prop key="hibernate.hbm2ddl.auto">update</prop>--> <prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop> </props> </property> </bean> <!--***************************************************************************** -->
<!-- Hibernate transaction manager ************************************* --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <!--***************************************************************************** -->
<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean>
<bean id="productManager" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="target"><ref bean="productManagerTarget"/></property> <property name="proxyInterfaces"> <value>com.vady.skeleton.service.ProductManager</value> </property> <property name="interceptorNames"> <list> <value>transactionManager</value> </list> </property> </bean>
<!-- DAO beans ************************************* --> <bean id="userDAO" class="com.vady.skeleton.dao.impl.HibernateUserDAOImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean>
<bean id="categoryDAO" class="com.vady.skeleton.dao.impl.HibernateCategoryDAOImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean>
<bean id="productDAO" class="com.vady.skeleton.dao.impl.HibernateProductDAOImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean>
<bean id="orderDAO" class="com.vady.skeleton.dao.impl.HibernateOrderDAOImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!--***************************************************************************** -->
<!-- Manager beans ************************************* --> <bean id="userManager" class="com.vady.skeleton.service.UserManagerImpl"> <property name="dao" ref="userDAO"/> </bean>
<bean id="productManagerTarget" class="com.vady.skeleton.service.ProductManagerImpl"> <property name="dao" ref="productDAO"/> </bean>
<!--***************************************************************************** -->
</beans>
|
| Код | package com.vady.skeleton.dao.impl;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.vady.skeleton.dao.ProductDAO; import com.vady.skeleton.model.Product;
import java.util.List;
public class HibernateProductDAOImpl extends HibernateDaoSupport implements ProductDAO {
public void createProduct(Product product) { getHibernateTemplate().saveOrUpdate(product); }
public Product getProduct(long id) { return (Product) getHibernateTemplate().load(Product.class, id); }
public List getProductList() { return getHibernateTemplate().find("from Product"); }
public void updateProduct(Product product) { getHibernateTemplate().update(product); }
public void deleteProduct(long id) { Product product = getProduct(id);
getHibernateTemplate().delete(product); } }
|
| Код | package com.vady.skeleton.service;
import com.vady.skeleton.model.Product; import java.util.List;
public interface ProductManager {
void createProduct(Product product);
Product getProduct(long id);
List getProductList();
void updateProduct(Product product);
void removeProduct(Product product); }
|
|