Configurando classpath com Ireport:
-> Ferramentas
-> Opções
-> Classpath
-> addFolder [ coloquei todos os diretórios (pacotes) da aplicação ]
Configurando conexão com Ireport:
-> Connections / Datasources
-> New
-> Spring loaded Hibernate connection
-> Next
->Name: conexao
->Spring configuration: applicationContext.xml,Banco.hbm.xml
->Session Factory Bean ID: sessionFactory
Mensagem de Erro quando clico no botão test:
IOException parsing XML document from class path resource[Banco.hbm.xml];nested exception is java.net.UnknownHostException:hibernate.sourceforge.net
package aop;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class OperacaoAdvice implements MethodInterceptor {
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
System.out.println("AOP -> Método chamado: " + methodInvocation.getMethod().getName());
Object object = null;
try {
object = methodInvocation.proceed();
System.out.println(object);
return object;
}catch (Exception e) {
// TODO: handle exception
}
return object;
}
}
package aop;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class RecuperacaoListasAdvice implements
AfterReturningAdvice {
public void afterReturning(Object returnValue, Method metodo,
Object[] arg2, Object target) throws Throwable {
Object lista = returnValue;
System.out.println("AOP -> A lista retornou " + lista + " objetos.");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="banco">
<class name="Banco" table="TB_BANCO" lazy="false">
<id name="id" type="java.lang.Long" column="ID">
<generator class="native" />
</id>
<property name="nome" column="NOME" type="java.lang.String"
length="50" unique="true" />
</class>
</hibernate-mapping>
package banco;
import java.io.Serializable;
@SuppressWarnings("serial")
public class Banco implements Serializable {
private Long id;
private String nome;
public Banco() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String toString() {
return id + " - " + nome;
}
}
package banco;
public interface BancoDao {
public void salvarBanco(Banco banco);
}
package banco;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BancoImp extends HibernateDaoSupport implements BancoDao {
@Override
public void salvarBanco(Banco banco) {
getHibernateTemplate().saveOrUpdate(banco);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- ***************************************************************************************************
Configuração AOP: spring framework
**************************************************************************************************** -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"> <value>org.hsqldb.jdbcDriver</value>
</property> <property name="url"> <value>jdbc:hsqldb:database/tutorial/db_sistema</value>
</property> <property name="username"> <value>sa</value> </property> <property
name="password"> <value></value> </property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>banco/Banco.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.max_fetch_depth">2</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
<prop key="hibernate.c3p0.minPoolSize">5</prop>
<prop key="hibernate.c3p0.maxPoolSize">20</prop>
<prop key="hibernate.c3p0.timeout">600</prop>
<prop key="hibernate.c3p0.max_statement">50</prop>
<prop key="hibernate.c3p0.testConnectionOnCheckout">false</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- ***************************************************************************************************
Configuração AOP: spring framework
**************************************************************************************************** -->
<bean id="operacaoAdvice" class="aop.OperacaoAdvice"></bean>
<bean id="recuperacaoListasAdvice" class="aop.RecuperacaoListasAdvice"></bean>
<bean id="operacaoPointcutAdvisor"
class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="mappedNames">
<list>
<value>save*</value>
<value>remove*</value>
</list>
</property>
<property name="advice">
<ref bean="operacaoAdvice" />
</property>
</bean>
<bean id="recuperacaoListasPointcutAdvisor"
class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="mappedName">
<value>pegar*</value>
</property>
<property name="advice">
<ref bean="recuperacaoListasAdvice" />
</property>
</bean>
<!-- ***************************************************************************************************
Configuração AOP: banco
**************************************************************************************************** -->
<bean id="bancoImpFachadaTarget" class="banco.BancoImp">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="bancoFachadaService" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref bean="bancoImpFachadaTarget" />
</property>
</bean>
</beans>
package principal;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import banco.Banco;
import banco.BancoDao;
import banco.BancoImp;
public class Sistema {
private BancoDao bancoDao;
private Banco banco;
private static ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"classpath:principal/applicationContext.xml");
public Sistema() {
banco = new Banco();
banco.setNome("Bradesco");
bancoDao = (BancoImp) applicationContext
.getBean("bancoFachadaService");
bancoDao.salvarBanco(banco);
System.out.println(banco);
}
public static void main(String[] args) {
Sistema sistema = new Sistema();
}
}




