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缓存:基本配置相关推荐

  1. arm集群服务器_什么样的ARM处理器及内存配置适合用来开发ARM集群服务器?

    什么样的ARM处理器适合用来开发ARM集群服务器? 这个问题,不能一概而论,而应该根据应用领域来区分对待. 如果是把ARM集群服务器用做群控,如社交软件加粉.养号.导流,或一些电商软件的多开操作,那么 ...

  2. Hazelcast集群服务(2)——Hazelcast基本配置

    为什么80%的码农都做不了架构师?>>>    在入门及使用案例一文介绍了什么是Hazelcast,并展示了一个简单的使用例子.原理大家都懂了,后面的篇章会给兄弟们更多干货. 本篇博 ...

  3. Hazelcast集群服务(2)

    为什么80%的码农都做不了架构师?>>>    XML基本配置 如果用户没有指定或提供任何配置文件,Hazelcast默认会使用jar包中自带的配置文件--"hazelca ...

  4. Hazelcast 集群

    最近在总结hazelcast的资料,顺便把集群的也总结下. Hazelcast自称"分布式数据网格",那他最基本.最重要的功能就是时时刻刻都在多台服务器之间工作,这样必须有网络环境 ...

  5. Hazelcast集群服务(4)——分布式Map

    在第一篇介绍Hazelcast的文章已经提到,Hazelcast为Java中绝大部分数据结构提供了分布式实现.我们常用的Map.List.Queue等数据结构可以用Hazelcast的实现类在多个集群 ...

  6. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  7. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  8. 学习笔记Hadoop(八)—— Hadoop集群的安装与部署(5)—— Hadoop配置参数介绍、Hadoop集群启动与监控

    五.Hadoop配置参数介绍 Hadoop集群配置文件主要有: 它们的默认参数配置可以看: core-default.xml :https://hadoop.apache.org/docs/stabl ...

  9. hadoop集群搭建 修改配置文件(三台主机都要配置)

    hadoop集群搭建      修改配置文件(三台主机都要配置) master 主机配置 1)hadoop-env.sh vim hadoop-env.sh 2)core-site.xml vim c ...

最新文章

  1. 数据结构——四大查找算法(工作必备)
  2. 【Ubuntu】解决ubuntu系统root用户下Chrome无法启动问题
  3. python 图像处理模块pillow
  4. php 详解spl_autoload_register()函数
  5. 【转】PYTHON open/文件操作
  6. 《统计学习方法》代码更新了-(github的star数5300+)
  7. 排球积分程序(三)——模型类的设计
  8. mysql profiling 应用
  9. Java-NIO(三):直接缓冲区与非直接缓冲区
  10. oracle10 ins tcx,安装Oracle10g遭遇ins_ctx.mk问题-Oracle
  11. 租用境外服务器开设网站,租用境外服务器对网站SEO有影响么?影响在那里?
  12. 尴尬!三星Galaxy S10系列面部识别疑似翻车:连兄妹都分不清
  13. document.referer的使用
  14. [洛谷P5367]【模板】康托展开
  15. JavaScript引用类型之Array数组的concat()和push()方法的区别
  16. android 原理 组合控件_Android自定义控件之组合控件
  17. JS双引号替换单引号
  18. 辞职的新方式:一言不合就消失!
  19. u深度重装系统详细教程_u深度一键还原精灵电脑重装系统使用教程
  20. 2016 最好的Bootstrap 管理模板

热门文章

  1. 第46届ICPC亚洲区域赛(沈阳)L-Perfect Matchings【dp,组合数学】
  2. YbtOJ#20064-[NOIP2020模拟赛B组Day4]预算缩减【树形dp】
  3. P5887-Ringed Genesis【GCD】
  4. 欢乐纪中A组赛【2019.8.20】
  5. jzoj3338-[NOI2013模拟]法法塔的奖励【权值线段树,线段树合并】
  6. nssl1320,jzoj(初中)2108-买装备【dfs,水题】
  7. P1137-旅行计划【拓扑排序,DAGdp】
  8. USACO2.1【bfs,排序,贪心,dfs,位运算】
  9. 洛谷P2296-寻找道路【日常图论,最短路,SPFA】
  10. AtCoder Beginner Contest 177总结