Hibernate 映射

前言

前面的我们使用的是一个表的操作,但我们实际的开发中不可能只使用一个表的…因此,本博文主要讲解关联映射

集合映射

需求分析:当用户购买商品,用户可能有多个地址。

数据库表

我们一般如下图一样设计数据库表,一般我们不会在User表设计多个列来保存地址的。因为每个用户的地址个数都不一的,会造成数据冗余

阅读更多

Hibernate inverse 与 cascade

Inverse属性

Inverse属性:表示控制权是否转移..

  • true:控制权已转移【当前一方没有控制权】
  • false:控制权没有转移【当前一方有控制权】

Inverse属性,是在维护关联关系的时候起作用的。只能在“一”的一方中使用该属性!Inverse属性的默认值为fasle,也就是当前一方是有控制权的

阅读更多

Hibernate 概述

前言

本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门,相信你们看了就会使用Hibernate了!

什么是Hibernate框架?

Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象

阅读更多

Linux 安装并配置最新的MongoDB

一、前言

目前的稳定版本 是4.2.X,截止至20年4月初的最新是4.2.5,也推荐安装此版本,也可以尝鲜,安装4.3.Xunstable版本。目前最新的是4.3.5

本文主要讲解 CentOS 8 如何安装配置 MongoDB 4.2.5。

二、下载方式

阅读更多

MyBatis mybatis 整合 ehcache

分布缓存

我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式)

分布缓存

不使用分布缓存,缓存的数据在各各服务单独存储,不方便系统开发。所以要使用分布式缓存对缓存数据进行集中管理。

mybatis无法实现分布式缓存,需要和其它分布式缓存框架进行整合。

整合方法(掌握)

mybatis提供了一个cache接口,如果要实现自己的缓存逻辑,实现cache接口开发即可。

阅读更多

MyBatis 查询缓存之二级缓存

本文主要讲mybatis的二级缓存,二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

二级缓存原理

二级缓存原理

阅读更多

MyBatis 查询缓存之一级缓存

查询缓存

mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。

mybaits提供一级缓存,和二级缓存。

查询缓存

一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。

阅读更多

MyBatis 多对多查询

示例

查询主表是:用户表

关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders、orderdetail、items

  • sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT 
orders.*,
user.username,
user.sex,
user.address,
orderdetail.id orderdetail_id,
orderdetail.items_id,
orderdetail.items_num,
orderdetail.orders_id,
items.name items_name,
items.detail items_detail,
items.price items_price
FROM
orders,
user,
orderdetail,
items
WHERE orders.user_id = user.id AND orderdetail.orders_id=orders.id AND orderdetail.items_id = items.id
阅读更多

MyBatis 延迟加载

resultMap可以实现高级映射(使用associationcollection实现一对一及一对多映射),associationcollection具备延迟加载功能。

延迟加载:先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。

需求:

如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。

使用association实现延迟加载

阅读更多