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集群配置
hazelcast集群配置_使用HazelCast进行Hibernate缓存:基本配置相关推荐
- arm集群服务器_什么样的ARM处理器及内存配置适合用来开发ARM集群服务器?
什么样的ARM处理器适合用来开发ARM集群服务器? 这个问题,不能一概而论,而应该根据应用领域来区分对待. 如果是把ARM集群服务器用做群控,如社交软件加粉.养号.导流,或一些电商软件的多开操作,那么 ...
- Hazelcast集群服务(2)——Hazelcast基本配置
为什么80%的码农都做不了架构师?>>> 在入门及使用案例一文介绍了什么是Hazelcast,并展示了一个简单的使用例子.原理大家都懂了,后面的篇章会给兄弟们更多干货. 本篇博 ...
- Hazelcast集群服务(2)
为什么80%的码农都做不了架构师?>>> XML基本配置 如果用户没有指定或提供任何配置文件,Hazelcast默认会使用jar包中自带的配置文件--"hazelca ...
- Hazelcast 集群
最近在总结hazelcast的资料,顺便把集群的也总结下. Hazelcast自称"分布式数据网格",那他最基本.最重要的功能就是时时刻刻都在多台服务器之间工作,这样必须有网络环境 ...
- Hazelcast集群服务(4)——分布式Map
在第一篇介绍Hazelcast的文章已经提到,Hazelcast为Java中绝大部分数据结构提供了分布式实现.我们常用的Map.List.Queue等数据结构可以用Hazelcast的实现类在多个集群 ...
- RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03
服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...
- RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02
服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...
- 学习笔记Hadoop(八)—— Hadoop集群的安装与部署(5)—— Hadoop配置参数介绍、Hadoop集群启动与监控
五.Hadoop配置参数介绍 Hadoop集群配置文件主要有: 它们的默认参数配置可以看: core-default.xml :https://hadoop.apache.org/docs/stabl ...
- hadoop集群搭建 修改配置文件(三台主机都要配置)
hadoop集群搭建 修改配置文件(三台主机都要配置) master 主机配置 1)hadoop-env.sh vim hadoop-env.sh 2)core-site.xml vim c ...
最新文章
- 数据结构——四大查找算法(工作必备)
- 【Ubuntu】解决ubuntu系统root用户下Chrome无法启动问题
- python 图像处理模块pillow
- php 详解spl_autoload_register()函数
- 【转】PYTHON open/文件操作
- 《统计学习方法》代码更新了-(github的star数5300+)
- 排球积分程序(三)——模型类的设计
- mysql profiling 应用
- Java-NIO(三):直接缓冲区与非直接缓冲区
- oracle10 ins tcx,安装Oracle10g遭遇ins_ctx.mk问题-Oracle
- 租用境外服务器开设网站,租用境外服务器对网站SEO有影响么?影响在那里?
- 尴尬!三星Galaxy S10系列面部识别疑似翻车:连兄妹都分不清
- document.referer的使用
- [洛谷P5367]【模板】康托展开
- JavaScript引用类型之Array数组的concat()和push()方法的区别
- android 原理 组合控件_Android自定义控件之组合控件
- JS双引号替换单引号
- 辞职的新方式:一言不合就消失!
- u深度重装系统详细教程_u深度一键还原精灵电脑重装系统使用教程
- 2016 最好的Bootstrap 管理模板
热门文章
- 第46届ICPC亚洲区域赛(沈阳)L-Perfect Matchings【dp,组合数学】
- YbtOJ#20064-[NOIP2020模拟赛B组Day4]预算缩减【树形dp】
- P5887-Ringed Genesis【GCD】
- 欢乐纪中A组赛【2019.8.20】
- jzoj3338-[NOI2013模拟]法法塔的奖励【权值线段树,线段树合并】
- nssl1320,jzoj(初中)2108-买装备【dfs,水题】
- P1137-旅行计划【拓扑排序,DAGdp】
- USACO2.1【bfs,排序,贪心,dfs,位运算】
- 洛谷P2296-寻找道路【日常图论,最短路,SPFA】
- AtCoder Beginner Contest 177总结