Spring Data JPA, part of the larger Spring Data family, makes it easy to easily implement JPA based repositories. This module deals with enhanced support for JPA based data access layers. It makes it easier to build Spring-powered applications that use data access technologies. See more about SpringData JPA
In this example we will use SpringData JPA api to save a simple Customer object in to MySQL database.
1. Create a Maven Project
Create a Maven project with below dependencies.
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>3.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>3.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.4.1.RELEASE</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.2.7.Final</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><!-- --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.27</version></dependency>
2. Create a Pojo class (Customer.java)
package com.pretech;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class Customer {@Id@GeneratedValue(strategy = GenerationType.AUTO)private long id;public String name;public String address;public Customer(String name, String address) {super();this.name = name;this.address = address;}public Customer() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "Customer [name=" + name + ", address=" + address + "]";}}
3. Create a Bean configuration class (BeanConfiguration.java)
package com.pretech;import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSource;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.jpa.repository.config.EnableJpaRepositories;import org.springframework.orm.jpa.JpaTransactionManager;import org.springframework.orm.jpa.JpaVendorAdapter;import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;import org.springframework.orm.jpa.vendor.Database;import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;import org.springframework.transaction.PlatformTransactionManager;@Configuration@EnableJpaRepositoriespublic class BeanConfiguration {@Beanpublic DataSource dataSource() {BasicDataSource ds = new org.apache.commons.dbcp.BasicDataSource();ds.setDriverClassName("com.mysql.jdbc.Driver");ds.setUrl("jdbc:mysql://localhost:3306/hibernateschema");ds.setUsername("root");ds.setPassword("root");return ds;}@Beanpublic LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();lef.setDataSource(dataSource);lef.setJpaVendorAdapter(jpaVendorAdapter);lef.setPackagesToScan("com.pretech");return lef;}@Beanpublic JpaVendorAdapter jpaVendorAdapter() {HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();hibernateJpaVendorAdapter.setShowSql(false);hibernateJpaVendorAdapter.setGenerateDdl(true);hibernateJpaVendorAdapter.setDatabase(Database.MYSQL);return hibernateJpaVendorAdapter;}@Beanpublic PlatformTransactionManager transactionManager() {return new JpaTransactionManager();}}
4. Create CustomerRepository interface (CustomerRepository.java)
This interface should extend CrudRepository to get basic crud operation interface.
package com.pretech;import org.springframework.data.repository.CrudRepository;public interface CustomerRepository extends CrudRepository<Customer, Long>{}
5. Create a Main class (CustomerMaster.java)
package com.pretech;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.support.AbstractApplicationContext;import org.springframework.data.repository.CrudRepository;public class CustomerMaster {public static void main(String[] args) {AbstractApplicationContext context = new AnnotationConfigApplicationContext(BeanConfiguration.class);CustomerRepository repository = context.getBean(CustomerRepository.class);repository.save(new Customer("Rajesh", "Bangalore"));repository.save(new Customer("Krishna", "Kannur"));System.out.println("CUSTOMER DETAILS");Iterable<Customer> customers = repository.findAll();for (Object customer : customers) {System.out.println(customer);}((AbstractApplicationContext) context).close();}}
6. Run it
We will get below output in the console and Customer table.
No comments:
Post a Comment