hazelcast集群配置_使用HazelCast进行Hibernate缓存:基本配置

hazelcast集群配置

之前,我们对JPA缓存,机制以及hibernate提供的内容进行了介绍 。

接下来是一个使用Hazelcast作为二级缓存的Hibernate项目。

为此,我们将在JPA中使用一个基本的spring boot项目。 Spring Boot使用Hibernate作为默认的JPA提供程序。
我们的设置将非常接近上一篇文章 。
我们将PostgreSQL与PostgreSQL一起用于我们的sql数据库。

group 'com.gkatzioura'
version '1.0-SNAPSHOT'buildscript {repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.1.RELEASE")}
}apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'repositories {mavenCentral()
}dependencies {compile("org.springframework.boot:spring-boot-starter-web")compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'compile group: 'org.postgresql', name:'postgresql', version:'9.4-1206-jdbc42'compile group: 'org.springframework', name: 'spring-jdbc'compile group: 'com.zaxxer', name: 'HikariCP', version: '2.6.0'compile group: 'com.hazelcast', name: 'hazelcast-hibernate5', version: '1.2'compile group: 'com.hazelcast', name: 'hazelcast', version: '3.7.5'testCompile group: 'junit', name: 'junit', version: '4.11'
}

通过仔细检查依赖关系,我们可以看到hikari池,postgresql驱动程序,spring数据jpa,当然还有hazelcast。

无需手动创建数据库,我们将利用Spring Boot的数据库初始化功能将其自动化。

我们将在resources文件夹下创建一个名为schema.sql的文件。

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 ('Test','Me','test@me.com',18,3000.23);

为了简单起见,避免进行任何其他配置,我们将把数据源,jpa和缓存的配置放在application.yml文件中。

spring:datasource:continue-on-error: truetype: com.zaxxer.hikari.HikariDataSourceurl: jdbc:postgresql://172.17.0.2:5432/postgresdriver-class-name: org.postgresql.Driverusername: postgrespassword: postgreshikari:idle-timeout: 10000jpa:properties:hibernate:cache:use_second_level_cache: trueuse_query_cache: trueregion:factory_class: com.hazelcast.hibernate.HazelcastCacheRegionFactoryshow-sql: true

配置spring.datasource.continue-on-error至关重要,因为一旦应用程序重新启动,就应该再次尝试创建数据库,因此崩溃是不可避免的。

任何Hibernate特定的属性都驻留在spring.jpa.properties路径中。 我们启用了二级缓存和查询缓存。

另外,我们将show-sql设置为true。 这意味着一旦查询命中数据库,就应通过控制台进行记录。

然后创建我们的员工实体。

package com.gkatzioura.hibernate.enitites;import javax.persistence.*;/*** Created by gkatzioura on 2/6/17.*/
@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;}
}

一切都已设置。 Spring Boot将检测到该实体并自行创建EntityManagerFactory。 接下来是员工的存储库类。

package com.gkatzioura.hibernate.repository;import com.gkatzioura.hibernate.enitites.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;/*** Created by gkatzioura on 2/11/17.*/
public interface EmployeeRepository extends JpaRepository<Employee,Long> {
}

最后一个是控制器

package com.gkatzioura.hibernate.controller;import com.gkatzioura.hibernate.enitites.Employee;
import com.gkatzioura.hibernate.repository.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** Created by gkatzioura on 2/6/17.*/
@RestController
public class EmployeeController {@Autowiredprivate EmployeeRepository employeeRepository;@RequestMapping("/employee")public List<Employee> testIt() {return employeeRepository.findAll();}@RequestMapping("/employee/{employeeId}")public Employee getEmployee(@PathVariable Long employeeId) {return employeeRepository.findOne(employeeId);}}

一旦我们在http:// localhost:8080 / employee / 1发出请求

控制台将显示在数据库中发出的查询

Hibernate: select employee0_.id as id1_0_0_, employee0_.age as age2_0_0_, employee0_.email as email3_0_0_, employee0_.firstname as firstnam4_0_0_, employee0_.lastname as lastname5_0_0_, employee0_.salary as salary6_0_0_ from spring_data_jpa_example.employee employee0_ where employee0_.id=?

第二次发出请求时,由于启用了第二个缓存,因此不会在数据库上发出查询。 取而代之的是,应从第二级缓存中获取实体。

您可以从github下载该项目。

翻译自: https://www.javacodegeeks.com/2017/02/hibernate-caching-hazelcast-basic-configuration.html

hazelcast集群配置

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

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

相关文章

c语言编译后找不到exe,在VS 2015命令提示符中找不到c – rc.exe

我刚刚安装了Windows 10 Creators Update(版本10.0.15063).我安装了多个版本的Visual Studio(2012年,2013年,2015年和2017年).我几周前才安装了VS 2017.问题在“VS2015 x64本机命令提示符”中运行时,CMake(版本3.8.1)不再找到C/C编译器(在VS 2017命令提示符下运行时它可以正常工…

tomcat如何通过配置的方式部署web工程

Workspaces 下有很多工程文件&#xff0c;这个 Workspaces 是 Myeclipse 自动生成的&#xff0c;我们通过 Myeclipse 写的工程都在这个 Workspaces 文件夹下。 我们部署工程到服务器上&#xff0c;就是要每个 WEB 工程里面的 context 文件夹&#xff0c;这个文件夹可以放在 t…

python爬虫源码_Python—爬虫:王者荣耀全套皮肤【附源码】

怎么获取全套皮肤&#xff1f;用钱买&#xff0c;或者用爬虫爬取下来~虽然后者不能穿。这个案例稍微复杂一点&#xff0c;但是一个非常值得学习的项目。具体实现思路&#xff1a;分析网页源代码结构找到合适的入口穷举访问并解析爬取所有英雄所有皮肤图片代码思路/程序流程&…

java ee规范_测试Java EE 8规范

java ee规范Java EE 8平台肯定在过去的几个月中一直在发展。 规范已经发布了早期的草案评审&#xff0c;里程碑甚至最终版本。 实际上&#xff0c;随着JSF 2.3的发布&#xff0c;JSR-372才刚刚进入最终版本。 有关更多信息&#xff0c;请参见 Arjan的帖子 。 它有幸成为JSR-37…

c语言中Gretchen函数的功能,听过很多的歌的音乐达人给我推荐一下

『 挚爱篇 』1 Bloated -- 挚爱篇2 Joy Is WIthin Reach -- Adrienne3 First Love -- 挚爱篇4 First Time -- 挚爱篇5 Get Funky -- 挚爱篇6 Walking on Air -- 挚爱篇7 Por qu te vas -- 挚爱篇8 爵士慢摇曲 -- Milky9 I Just Cant Get You Out of My Head (Club Mix) -- 挚爱…

JavaScript(JS)常用正则表达式汇总

文章目录自定义字符串校验函数常用正则表达式自定义字符串校验函数 校验字符串是否全由数字组成&#xff0c;是则返回true&#xff0c;否则返回false&#xff1a; function isDigit(str) {var regExp /^[0-9]{1,20}$/;// exec方法如果找到符合正则表达式的字符串&#xff0c…

警惕成教自考_不,保持警惕不会伤害Java。 关于Java许可的评论。

警惕成教自考所以。 Oracle希望通过Java赚钱。 然后&#xff0c;The Register发表了一篇非常对立的文章&#xff0c;上面有一个超级吸引人的标题。 根据他们的消息来源&#xff0c;“ Oracle正在大力加强对声称违反其许可证的Java客户的审计”。 当Twitter诗句对人们批评Oracle…

android colorstatelist_Android 样式系统 | 主题背景属性

在 Android 样式系统系列的前几篇文章中&#xff0c;我们介绍了主题背景与样式的区别&#xff0c;以及为什么说通过主题背景和公共主题背景属性来分解您要实现的内容是一个不错的主意&#xff0c;请点击链接回顾:Android 样式系统 | 主题背景和样式Android 样式系统 | 常见的主…

浙江科技学院c语言考试试卷,浙江科技学院c语言C试卷A.doc

浙江科技学院c语言C试卷A浙江科技学院2012 - 2013学年第学期考试试卷A卷信息、经管、 学院 20 年级 理工科专业得分一、判断题(本大题共12小题&#xff0c;每题小1分&#xff0c;共12分)得分二、单选题(本大题共20小题&#xff0c;每题1分&#xff0c;共20分)A.循环控制表达式的…

MyEclipse的Debug功能最基本的操作

使用 Debug 功能最基本的操作&#xff1a; 1.首先在一个 Java 文件中设断点&#xff0c;然后 Debug as --> Open Debug Dialog&#xff0c;然后在对话框中选类后&#xff0c;再点击 Run 运行程序&#xff0c;当程序走到断点处就会自动转到 Debug 视图 2.F5 键与F6 键均为单…

python二级考试可以用pycharm吗_学Python,Pycharm不能不知道怎么用

栏目介绍必会的Pycharm。我决定把去年写的Python文章整理一个专栏&#xff0c;垃圾的就直接删除&#xff0c;将多篇博文整理成一篇。 工欲善其事必先利其器&#xff0c;Pycharm 是最受欢迎的Python开发工具&#xff0c;它提供的功能非常强大&#xff0c;我尽量把自己用的都写写…

C语言写出生命游戏什么水平,我也来汇报~~~生命游戏。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼int main(void){FILE *wen1,*wen2;system("color f0");char a[1000]{0};int i0;xx ch{0,0};wen1fopen("shuru.txt","r");if (wen1!NULL){while(!feof(wen1)){fread(&a[i],1,1,wen1);}chchinesec…

hazelcast 使用_使用HazelCast进行Hibernate缓存:JPA缓存基础知识

hazelcast 使用HazelCast的最大功能之一就是对Hibernate第二级缓存的支持 。 JPA具有两个级别的缓存。 一级缓存在事务期间缓存对象的状态。 通过两次查询相同的对象&#xff0c;您必须获得第一次获取的对象。 但是&#xff0c;在包含您检索并访问数据库的复杂查询的情况下&…

判断输入的字符串总字节数是否超出限制

function checkByteLength(str) { var bytes 0; for(var i 0;i<str.length;i){ var c str.charAt(i); if(c<256){ bytes 1; }else{ bytes 2; } } if(bytes >6){ alert(“您输入的字数超过限制&#xff01;”); } }

android页面统计代码,android流量统计(示例代码)

android.net.TrafficStats类中&#xff0c;提供了多种静态方法&#xff0c;可以直接调用获取&#xff0c;返回类型均为long型&#xff0c;如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计。static long getMobileRxBytes() //获取通过Mobile连接收到的字节总数&#xff0…

python二维数组排序_Python实现二维数组按照某行或列排序的方法【numpy lexsort】...

本文实例讲述了Python实现二维数组按照某行或列排序的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; lexsort支持对数组按指定行或列的顺序排序&#xff1b;是间接排序&#xff0c;lexsort不修改原数组&#xff0c;返回索引。 &#xff08;对应lexsort 一维数组…

apache camel_Apache Camel Intellij IDEA插件的工作已开始

apache camel仅仅因为圣诞节并不意味着骆驼静止不动。 在23日晚上&#xff0c;我花了一些时间进行研究&#xff0c;并开始研究IDEA的Apache Camel插件的小原型。 它已经存在了我很长时间。 原因是Apache Camel为目录提供了有关工具的大量有用信息。 该目录包含有关每个Camel组…

Final Cut Pro X剪辑影片基本步骤

文章目录一、资源库、事件、项目之间的区别二、制作一个视频的步骤&#xff08;一&#xff09;创建资源库&#xff08;二&#xff09;创建事件(非必需)&#xff08;三&#xff09;导入资源&#xff08;四&#xff09;创建项目&#xff08;五&#xff09;进行剪辑&#xff08;六…

python储存_python数据储存

python数据储存 csv文件的操作 安装csv包 打开cmd 执行 pip install csv 引入的模块名为csv 读取文件 with open("xx.csv","r") as f: read_datacsv.reader(f) for i in read_data: print(i)//打印表的全部元素 print(i[0])//打印表的第一列元素 1 2 3 4 5…

android+udp传输大小,Android UDP数据包如何接收可变大小的数据包

我有一个Android应用程序&#xff0c;它监视UDP数据包并调用一个方法来处理收到的消息。我有一个问题&#xff0c;如果传入的消息更长&#xff0c;它将调用方法来处理消息。但是如果传入的消息较短&#xff0c;则不会调用该方法&#xff0c;但如果我发送短消息两次&#xff0c;…