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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业软件 —— 硬件评测

1. 硬盘评测 crystaldiskinfo&#xff1a;CrystalDiskInfo – Crystal Dew Worldcrystaldiskmark&#xff1a;硬盘跑分&#xff0c;CrystalDiskMark – Crystal Dew World2. CPU 与 GPU CPU-ZGPU-Z转载于:https://www.cnblogs.com/mtcnn/p/9421010.html

桌面记事本软件测试工资,记事本的一个BUG

我们常用的小工具&#xff0c;系统中附件里的“记事本”工具&#xff0c;有个比较有意思的BUG&#xff0c;让我们按以下步骤来看看。1. 在开始菜单的附件里打开记事本2. 复制引号中的内容&#xff0c;粘贴到记事本里“AAAA BBB CCC DDDDD”3. 把它保存到桌面上&#xff0c;文件…

深度学习目标检测算法综述(论文和代码)

RCNN-→SPP Net-→ Fast RCNN-→ Faster RCNN-→ YOLO-→ SSD 思路是&#xff1a;a,生成候选框 b&#xff0c;CNN提取特征 c,分类网络 d,回归&#xff0c;位置精修(refine) RCNN: 论文: https://arxiv.org/pdf/1311.2524.pdf 源码: https://github.com/rbgirshick/rcnn 一些解读…

在计算机中描述景物结构形状与外貌,在计算机中通过描述景物的结构、形状与外貌,然后将它绘制成图在屏幕上显示出来,此类图像称为_____。...

并实打印现共享文件和机等共享功能&#xff0c;计中通屏完全地相信平等互通&#xff0c;网工需的则所作模局域式是&#xff0c;网络的各没有台计一个内部主次之分若要算机。算机述景包括条件主要区域规划发展。过描的咨项目询包括(准备建设阶段。结构包括咨询主要工程任务师的。…

JBoss Fuse:使用JEXL的动态蓝图文件

在本文中&#xff0c;我将展示如何在Apache Aries Blueprint xml文件中添加一些内联脚本。 我不一定会称其为最佳实践&#xff0c;但我一直认为这种功能可能有用。 可能当我被迫使用xml来模拟命令式编程结构&#xff08;例如使用Apache Ant时&#xff09;时&#xff0c;我开始…

设置序列

//Oracle 中给主键设置自增长&#xff0c;先设序列&#xff0c;在设置触发器Create table BigCustemer1( ID number(10), cus_name varchar2(20),contacts varchar2(20),phone varchar2(20) ,email varchar2(30),address varchar2(50),notes varchar2(70)); create sequence bi…

材料成形计算机辅助设计,材料成型及计算机辅助设计(综述)

CAE介绍&#xff23;&#xff21;&#xff25;的现状及其软件综述&#xff23;&#xff21;&#xff25;的现状及其软件综述主要内容&#xff1a;1、CAE的现状&#xff1b;2、CAE软件综述。摘要计算机辅助工程(CAE)是一种迅速发展的信息技术&#xff0c;是实现重大工程和工业产…

background-size属性100% cover contain

backgroun-size: 数字&#xff1a;100px 80px 百分比&#xff1a;100% 100% 相对于父元素的&#xff0c;能占满全屏&#xff0c;但是比例可能会失真 cover&#xff1a;占满全屏&#xff0c;可能一部分显示不出来 contain&#xff1a;有一个占满方向占满&#xff0c;背景图不失真…

服务器是计算机的一种 是指,pc服务器是指什么意思

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。pc服务器是指电脑服务器&#xff0c;pc即为personal computer个人电脑。电脑服务器是一种高性能计算机&#xff0c;作为网络的节点&#xff0c;存储、处理网络上80%的数据、信息&…

小程序richtext_用于基于SWT的应用程序的RichText编辑器组件

小程序richtext本文将完成使用SWT实现我们自己的RichText编辑器组件的任务。 在为我的一位客户开发基于桌面的应用程序时&#xff0c;我遇到了这样的可视化组件的需求&#xff0c;并希望添加一项功能&#xff0c;以允许用户使用粗体&#xff0c;斜体&#xff0c;删除线等功能来…

《重构-改善既有代码的设计》学习笔记(一)

其实看了重构之后&#xff0c;发现重构和设计模式有很多很多相通的地方&#xff0c;或者有着同样的目的。你完全可以参考设计模式的原则来修改已有的代码。 1.单一职责原则 2.开放--封闭原则 3.依赖倒装原则 4.迪米特原则&#xff08;类松耦合&#xff09; 笔者也在《重构》这本…

展示Java开发人员课程包

60个小时以上的课程&#xff0c;5门所有级别的课程&#xff1a;成为Java编程专家 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的Java Developer Course Bundle 仅售39美元&#xff0c;而不是…

吃鸡服务器不接受响应,绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟!...

原标题&#xff1a;绝地求生:蓝洞优化服务器性能&#xff0c;从此告别掉帧延迟&#xff01;很多玩家们都非常了解服务器的重要性&#xff0c;服务器响应时间也可以描述为‘网络延迟’。如果服务器的响应时间减少(或者网络延迟减少) 的话&#xff0c;玩家们可以体验到更加顺畅的…

遍历List过程中同时修改

public static void Main(){List<int> list new List<int>();int[] a{0,1,2,3,4,5,6,7,8,9};list.AddRange(a);foreach (var i in list){Console.WriteLine(i);if (i 2){list.Remove(i);}}Console.Read();} 有一个需求&#xff0c;要对List边遍历边将符合条件的L…

fifa15服务器位置,《FIFA 15》全系统教程图文攻略

《FIFA 15》全系统教程图文攻略2014-09-23 11:04:14来源&#xff1a;3DM论坛编辑&#xff1a;评论(0)《FIFA 15》为EA旗下足球模拟游戏&#xff0c;游戏使用了《UFC》所使用的EA的Ignite引擎&#xff0c;球员的全身细节、动作以及物理破坏效果都相当到位&#xff0c;将给带给玩…

Java EE 8 MVC:全局异常处理

在之前的先前文章中&#xff0c;我们了解了在Java EE MVC中访问请求信息&#xff08;例如查询或路径参数 &#xff09;的各种方法。 这篇文章显示了如何将全局异常处理应用于MVC应用程序。 假设我们有一个控制器方法可能抛出IllegalArgumentException&#xff1a; Controller…

可以显示网页服务器或者文件系统,浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件...

参考答案如下浏览技术进步有哪些类型&#xff1f;它们对贸易条件有什么影响&#xff1f;OSPF 协议生成的路由分为四类&#xff0c;指可准通些种软按优先级从高到低顺序来说分别是&#xff1a;区域内路由、区域间路由、第一类外部路由、第二类外部路由。并不是所有的商品都适合于…

hdu 3016 Man Down

题意&#xff1a;给你n个板子&#xff0c;初始100生命&#xff0c;到达每个板子加血或者扣血&#xff0c;求从最上面的板子落到地面的最优解 题解&#xff1a;对于每一个木板&#xff0c;只有从左下或者从右下&#xff0c;所以从下往上来看&#xff0c;到达第n个木板的最优解为…

主机做服务器共享文件,主机做文件共享服务器

主机做文件共享服务器 内容精选换一换用户要使用CSG&#xff0c;首先要注册一个华为云帐号&#xff0c;才有访问华为云资源的权限。目前CSG服务处于公测阶段&#xff0c;需要申请公测并通过审核才能使用&#xff0c;商用后自动开通。此外为确保用户能正确快速使用CSG服务&#…

java nosql_使用NoSQL实现实体服务–第4部分:Java EE

java nosql现在&#xff0c;我已经准备好了一个框架式的合同优先型Web服务&#xff0c;并使用Ektorp和CouchDB创建了一个数据访问层 &#xff0c;是时候将它们连接到一个可以正常工作的实体服务中了 。 为此&#xff0c;我将使用Java EE和Glassfish 3.1。 值得注意的是&#xf…