Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Simpler JPA with Spring Data-JPA

DZone's Guide to

Simpler JPA with Spring Data-JPA

· Java Zone ·
Free Resource

Get the Edge with a Professional Java IDE. 30-day free trial.

How to configure your Spring application with Simple CRUD configuration with Spring Data-JPA.

1. Add Spring Data-JPA to project configuration. In your Maven pom.xml file

<dependency>
   <groupId>org.springframework.data</groupId>
   <artifactId>spring-data-jpa</artifactId>
   <version>1.0.0.RELEASE</version>
</dependency>

2. Configure JPA Entity

...
 
@Entity
public class Product {
 
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "id")
  private Long id;
 
  @NotNull
  @Column(unique = true)
  private String productId;
 
  @NotNull
  private Integer quantity;
 
  ...
}

3. Configure Typed Repository Interface

Spring Data JPA will create the beans for us.

package com.gordondickens.myapp.repository;
 
import org.springframework.data.repository.CrudRepository;
import com.gordondickens.myapp.entity.Product;
 
public interface ProductRepository
   extends CrudRepository<Product, Long> {}

4. Configure the application context

Note: this example uses Hibernate and HSQL

<!-- Directory to scan for repository classes -->
<jpa:repositories
   base-package="com.gordondickens.myapp.repository" />
 
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
  id="transactionManager">
  <property name="entityManagerFactory"
      ref="entityManagerFactory" />
  <property name="jpaDialect">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
  </property>
</bean>
 
<bean id="entityManagerFactory"
  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
      <property name="generateDdl" value="true" />
      <property name="database" value="HSQL" />
    </bean>
  </property>
</bean>

5. Inject the Repository

In our service class & tests we use the repository to execute our crud methods. Repository Methods: count(), exists(), delete(), deleteAll(), findOne(), findAll(), save().

public class ProductServiceImpl extends ProductService {
 
   @Autowired
   ProductRepository productRepository;
 
  ...
}

Summary

The Spring Data project abstracts away basic data management concepts. In addition to support for traditional relational methodologies, Spring Data provides support for NoSQL Graph, Key-Value and Map-Reduce types. As we saw in the above example configuring CRUD style applications is fairly trivial and Spring provides a convenient configuration for the typical cookie cutter code.

Click here to see my other blog which lists the annotations in “Spring Data-Commons” and “Spring Data-JPA”.

 

From http://gordondickens.com/wordpress/2011/08/01/simpler-jpa-with-spring-data-jpa/

Get the Java IDE that understands code & makes developing enjoyable. Level up your code with IntelliJ IDEA. Download the free trial.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}