當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Boot和Spring数据JPA集成
生活随笔
收集整理的這篇文章主要介紹了
Spring Boot和Spring数据JPA集成
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如今,借助于Spring Boot和spring Data,spring和JPA集成已變得輕而易舉。
我要設置一個PostgreSQL服務器
docker pull postgres #run the container docker run --name postgreslocal -e POSTGRES_PASSWORD=postgres -d postgres #get the ip docker inspect --format '{{ .NetworkSettings.IPAddress }}' postgreslocal #get the port docker inspect --format '{{ .NetworkSettings.Ports }}' postgreslocal創建員工表
create schema spring_data_jpa_example;create table spring_data_jpa_example.employee(id SERIAL PRIMARY KEY,firstname TEXT NOT NULL,lastname TEXT NOT NULL, email TEXT not null,age INT NOT NULL,salary real,unique(email) );insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ('Emmanouil','Gkatziouras','gkatzioura@gmail.com',18,3000.23);讓我們從gradle文件開始
group 'com.gkatzioura' version '1.0-SNAPSHOT'apply plugin: 'java'sourceCompatibility = 1.8buildscript {repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE")} }apply plugin: 'idea' apply plugin: 'spring-boot'repositories {mavenCentral() }dependencies {compile("org.springframework.boot:spring-boot-starter-web") {exclude module: "spring-boot-starter-tomcat"}compile("org.postgresql:postgresql:9.4-1206-jdbc42")compile("org.springframework.boot:spring-boot-starter-jetty")compile("org.springframework.boot:spring-boot-starter-data-jpa:1.3.3.RELEASE")compile("com.mchange:c3p0:0.9.5.2")testCompile("junit:junit:4.11"); }如您所見,我們添加了c3p0連接池,用于休眠的spring-boot-starter-data-jpa和postgres驅動程序。 這就是我們所需要的。
應用類
package com.gkatzioura.springdata.jpa;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext;/*** Created by gkatzioura on 6/2/16.*/ @SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication springApplication = new SpringApplication();ApplicationContext ctx = springApplication.run(Application.class, args);} }數據源配置
package com.gkatzioura.springdata.jpa.config;import com.mchange.v2.c3p0.ComboPooledDataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/*** Created by gkatzioura on 6/2/16.*/ @Configuration public class DataSourceConfig {@Beanpublic DataSource createDataSource() throws Exception {ComboPooledDataSource ds = new ComboPooledDataSource();ds.setJdbcUrl("jdbc:postgresql://172.17.0.3:5432/postgres?user=postgres&password=postgres");ds.setDriverClass("org.postgresql.Driver");return ds;}}Jpa配置
package com.gkatzioura.springdata.jpa.config;import org.hibernate.jpa.HibernatePersistenceProvider; import org.springframework.beans.factory.annotation.Autowired; 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.LocalContainerEntityManagerFactoryBean; import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource; import java.util.Properties;/*** Created by gkatzioura on 6/2/16.*/ @Configuration @EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory",transactionManagerRef = "transactionManager",basePackages = {"com.gkatzioura.springdata.jpa.persistence"}) @EnableTransactionManagement public class JPAConfig {@Autowiredprivate DataSource dataSource;@Beanpublic LocalContainerEntityManagerFactoryBean entityManagerFactory() {LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();entityManagerFactoryBean.setDataSource(dataSource);entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);entityManagerFactoryBean.setJpaProperties(hibernateProperties());entityManagerFactoryBean.setPackagesToScan(new String[] {"com.gkatzioura.springdata.jpa.persistence"});return entityManagerFactoryBean;}@Beanpublic JpaTransactionManager transactionManager() {JpaTransactionManager transactionManager = new JpaTransactionManager();transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());return transactionManager;}private Properties hibernateProperties() {Properties properties = new Properties();properties.put("hibernate.dialect","org.hibernate.dialect.PostgreSQL9Dialect");properties.put("hibernate.globally_quoted_identifiers","true");return properties;}}表員工的實體
package com.gkatzioura.springdata.jpa.persistence.entity;import javax.persistence.*;/*** Created by gkatzioura on 6/2/16.*/ @Entity @Table(name = "employee", schema="spring_data_jpa_example") public class Employee {@Id@Column(name = "id")@GeneratedValue(strategy = GenerationType.SEQUENCE)private Long id;@Column(name = "firstname")private String firstName;@Column(name = "lastname")private String lastname;@Column(name = "email")private String email;@Column(name = "age")private Integer age;@Column(name = "salary")private Integer salary;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastname() {return lastname;}public void setLastname(String lastname) {this.lastname = lastname;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getSalary() {return salary;}public void setSalary(Integer salary) {this.salary = salary;} }可以幫助我們訪問所有用戶的存儲庫
package com.gkatzioura.springdata.jpa.persistence.repository;import com.gkatzioura.springdata.jpa.persistence.entity.Employee; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository;/*** Created by gkatzioura on 6/2/16.*/ @Repository public interface EmployeeRepository extends JpaRepository<Employee,Long>{ }還有一個控制器將獲取所有數據
package com.gkatzioura.springdata.jpa.controller;import com.gkatzioura.springdata.jpa.persistence.entity.Employee; import com.gkatzioura.springdata.jpa.persistence.repository.EmployeeRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** Created by gkatzioura on 6/2/16.*/ @RestController public class TestController {@Autowiredprivate EmployeeRepository employeeRepository;@RequestMapping("/employee")public List<Employee> getTest() {return employeeRepository.findAll();} }考慮到過去的依賴關系和xml配置開銷,這非常方便。
您可以在github上找到源代碼。
翻譯自: https://www.javacodegeeks.com/2016/06/spring-boot-spring-data-jpa-integration.html
總結
以上是生活随笔為你收集整理的Spring Boot和Spring数据JPA集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux删除命令(linux 文件夹删
- 下一篇: JBoss Fuse:使用JEXL的动态