Spring config
Code:
<beans + Data REF for AOP elements + RED for TX elements >
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@BADGER:BADGER:BADGER"></property>
<property name="username" value="BADGER"></property>
<property name="password" value="BADGER"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.jdbc.batch_size">0</prop>
<prop key="hibernate.jdbc.use_streams_for_binary">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
</props>
</property>
<property name="lobHandler">
<bean class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor">
<bean class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" />
</property>
</bean>
</property>
<property name="mappingResources">
<list>
<value>FileDO.hbm.xml</value>
</list>
</property>
</bean>
<bean id="fileDAO" class="springHibBlobTest.TestDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="testPrint" class="springHibBlobTest.TestPrint"></bean>
<aop:config>
<aop:pointcut expression="execution(* springHibBlobTest.TestDAO.*(..))" id="DAOOperation" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="DAOOperation" ></aop:advisor>
<aop:aspect ref="testPrint">
<aop:before method="AOPPrint" pointcut-ref="DAOOperation" ></aop:before>
</aop:aspect>
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
</beans>
Hibernate Template
Code:
<hibernate-mapping package="springHibBlobTest">
<class name="FileDO" table="BLOB_TEST">
<id column="ID" name="id">
<generator class="increment"></generator>
</id>
<property name="name" column="FILE_NAME" not-null="true"
type="string">
</property>
<property name="fileData" column="ACTUAL_FILE"
type="org.springframework.orm.hibernate3.support.BlobByteArrayType" not-null="true">
</property>
</class>
</hibernate-mapping>
My classpath contains:
Code:
<classpath>
<classpathentry kind="lib" path="lb/Spring Framework/spring-framework-2.0.8/lib/aspectj/aspectjrt.jar"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="lb/ojdbc14.jar"/>
<classpathentry kind="lib" path="lb/Hibernate/hibernate-3.2.6.ga/hibernate-3.2/hibernate3.jar"/>
<classpathentry kind="lib" path="lb/Spring Framework/spring-framework-2.0.8/dist/spring.jar"/>
<classpathentry kind="lib" path="lb/Spring Framework/spring-framework-2.0.8/lib/jakarta-commons/commons-logging.jar"/>
<classpathentry kind="lib" path="lb/Spring Framework/spring-framework-2.0.8/lib/dom4j/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="lb/Hibernate/hibernate-3.2.6.ga/hibernate-3.2/lib/jta.jar"/>
<classpathentry kind="lib" path="lb/Hibernate/hibernate-3.2.6.ga/hibernate-3.2/lib/commons-logging-1.0.4.jar"/>
<classpathentry kind="lib" path="lb/Hibernate/hibernate-3.2.6.ga/hibernate-3.2/lib/commons-collections-2.1.1.jar"/>
<classpathentry kind="lib" path="lb/Hibernate/hibernate-3.2.6.ga/hibernate-3.2/lib/asm.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/MyEclipse 6.0"/>
<classpathentry kind="lib" path="lb/Hibernate/hibernate-3.2.6.ga/hibernate-3.2/lib/cglib-2.1.3.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
It is being run from the standard run dialog in MyEclipse (where it was developed) on a java 5 compatable jre with the AspectJ weaver specified in the JRE's arguments.
Thankyou very much for all help, as said, I am new the Spring and Hibernate so am certain that I have missed a config or library somewhere, let me know if I've missed any information that you need, anything I have configured for running the applciation is in this post, so if you see something missing, it's probably missing in the code too!