Last active
August 29, 2015 14:06
-
-
Save diegolirio/c74bf848c4fa33396252 to your computer and use it in GitHub Desktop.
Blog
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Integração do Spring com JPA | |
1. Criar a model e anotar como @Entity, e o atibuto ID como @Id @GeneretedValue | |
* Criar arquivo persistense.xml dentro do diretorio src\main\resources\META-INF e configurando a tag persistence-unit. | |
link >>> https://raw.githubusercontent.com/diegolirio/vote-no-livro/master/src/main/resources/META-INF/persistence.xml | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE xml> | |
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"> | |
<persistence-unit name="meuNomePersistence-unit"> | |
<provider>org.hibernate.ejb.HibernatePersistence</provider> | |
<class>com.testinject.testinject.model.Pessoa</class> | |
<properties> | |
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" /> | |
<property name="hibernate.hbm2ddl.auto" value="update"/> | |
<property name="hibernate.show_sql" value="true"/> | |
<property name="hibernate.format_sql" value="true"/> | |
</properties> | |
</persistence-unit> | |
</persistence> | |
* Criar um AbstractGenericDao<T> com atributo private EntityManager e anota-lo como@PersistenceContext(unitName="meuNomePersistence-unit"). | |
link >>> https://raw.githubusercontent.com/diegolirio/vote-no-livro/master/src/main/java/com/diegolirio/votenolivro/dao/AbstractGenericDao.java | |
* Agora é só Injetar o EntityManagerFactory e EntityManager no xml Spring (servlet-context.xml). | |
* Configurando meu DataSource que será criado através do Spring. | |
<beans:bean id="dataSourceJPA" class="org.apache.commons.dbcp.BasicDataSource"> | |
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> | |
<beans:property name="url" | |
value="jdbc:oracle:thin:@192.9.200.15:1521/tdp" /> | |
<beans:property name="username" value="tdvadm" /> | |
<beans:property name="password" value="aged12" /> | |
</beans:bean> | |
* Configurando o EntityManagerFactory passando o dataSource criado acima. | |
<beans:bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> | |
<beans:property name="dataSource" ref="dataSourceJPA" /> | |
<beans:property name="jpaVendorAdapter"> | |
<beans:bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> | |
</beans:property> | |
</beans:bean> | |
* Configurando o controle de transação para o Spring ser responsavel pelo mesmo, assim você não deverá se preocupar com os commit ou rollback da transação. Somente anotar seu método como @Transaction | |
* Ainda no servlet-context.xml configure como abaixo: | |
<beans:bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> | |
<beans:property name="entityManagerFactory" ref="entityManagerFactory"/> | |
</beans:bean> | |
<tx:annotation-driven /> | |
* Anotando @Transaction na GenericDao. | |
@Transactional | |
public void save(T object) { | |
this.manager.persist(object); | |
} | |
* Injetando o estado Dao na Controller, basta criar um atributo como private e anota-lo como @Autowired | |
* Para o Spring poder injetar a dao na controller add no atributo base-package da tag context:component-scan no arquivo servlet-context.xml, como no exemplo abaixo: | |
<context:component-scan base-package="com.autom.autom.controller com.autom.autom.service com.autom.autom.dao" /> | |
* Dependencias (pom.xml) | |
<!-- Drive ODBC Oracle --> | |
<dependency> | |
<groupId>com.oracle</groupId> | |
<artifactId>ojdbc6</artifactId> | |
<version>11.1.0</version> | |
</dependency> | |
<!-- Hibernate --> | |
<dependency> | |
<groupId>org.hibernate</groupId> | |
<artifactId>hibernate-entitymanager</artifactId> | |
<version>4.3.1.Final</version> | |
</dependency> | |
<!-- Spring Orm --> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-orm</artifactId> | |
<version>${org.springframework-version}</version> | |
</dependency> | |
<!-- spring-jdbc --> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-jdbc</artifactId> | |
<version>${org.springframework-version}</version> | |
</dependency> | |
<!-- commons-dbcp --> | |
<dependency> | |
<groupId>commons-dbcp</groupId> | |
<artifactId>commons-dbcp</artifactId> | |
<version>1.2.2</version> | |
</dependency> | |
<!-- AOP --> | |
<dependency> | |
<groupId>cglib</groupId> | |
<artifactId>cglib</artifactId> | |
<version>2.2</version> | |
</dependency> | |
------------------------------------------------------------------------------------------------------ | |
h1. Java 8 | |
* Default Methods | |
- Default methods são metodos concretos de uma interface, ou seja um metodo com corpo. Até a versão 7 do Java métodos de uma interface só poderia ter métodos sem corpo. Por exemplo a interface List<T> tem alguns novos metodos em Java 8, como sort e foreach. | |
* Lambda | |
* Metodos de Referencia | |
* Stream e Collections |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment