解决的问题:100个下拉框需要100个表
数据源表:数据源标识,数据源描述
数据项表:数据源标识,数据项键,数据值
导入Ehcache依赖:
pom.xml
<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd”>
4.0.0
com.ltf
Hibernate
war
0.0.1-SNAPSHOT
Hibernate Maven Webapp
http://maven.apache.org
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<servlet.version>4.0.0</servlet.version>
<hibernate.version>5.2.12.Final</hibernate.version>
<mysql.driver.version>8.0.19</mysql.driver.version>
<ehcache.version>2.10.0</ehcache.version>
<slf4j-api.version>1.7.7</slf4j-api.version>
<log4j-api.version>2.9.1</log4j-api.version>
junit
junit
${junit.version}
test
javax.servlet
javax.servlet-api
${servlet.version}
provided
org.hibernate
hibernate-core
${hibernate.version}
mysql
mysql-connector-java
${mysql.driver.version}
net.sf.ehcache
ehcache
${ehcache.version}
org.hibernate
hibernate-ehcache
${hibernate.version}
org.slf4j
slf4j-api
${slf4j-api.version}
org.slf4j
jcl-over-slf4j
${slf4j-api.version}
runtime
org.apache.logging.log4j
log4j-slf4j-impl
${log4j-api.version}
org.apache.logging.log4j
log4j-api
${log4j-api.version}
org.apache.logging.log4j
log4j-core
${log4j-api.version}
org.apache.maven.plugins
maven-compiler-plugin
3.7.0
1.8
1.8
UTF-8
Hibernate
1,利用map集合简易实现缓存原理
①优先从缓存中获取对应数据
②如果获取到了,直接返回
③没有获取到,则直接查数据库,将数据库对应的数据放入缓存,再返回
public class EhcacheDemo1 {
static Map<String, Object> cache = new HashMap<String, Object>();
static Object getValue(String key) {
Object value = cache.get(key);
if(value == null) {
System.out.println(“hello zs”);//从数据库中读取数据
cache.put(key, new String[] {“zs”});//数据库中的数据同步到缓存
return cache.get(key);//再将数据进行返回
}
return value;
}
public static void main(String[] args) {
System.out.println(getValue(“sname”));
System.out.println(getValue(“sname”));
}
运行结果第一行为if条件句中从数据库中查询的数据,
第二行为返回值
第三行是从缓存中拿到的
注意:只要使用缓存,默认缓存中就有数据(缓存的优先级比数据库高,因为性能更好)
2,利用缓存存储数据
==========
在ehcache.xml中进行设置
<cache name=“com.ltf.one.entity.User” eternal=“false” maxElementsInMemory=“100”
overflowToDisk=“true” diskPersistent=“true” timeToIdleSeconds=“0”
timeToLiveSeconds=“300” memoryStoreEvictionPolicy=“LRU”/>
3,一级缓存
=======
session级别的缓存
同一个session,sql语句只生成了一次,这里用到了一级缓存
4.二级缓存
======
sessionFactory级别的缓存 (可拔插式)
@Test
public void test2() {
UserDao userDao = new UserDao();
User u = new User();
u.setId(7);
User user = userDao.get(u);
System.out.println(user);
User user2 = userDao.get(u);
System.out.println(user2);
User user3 = userDao.get(u);
System.out.println(user3);
}
默认情况下,sql语句形成了三次,这里为了提高性能,必须使用二级缓存SessionFactory缓存
1,开启二级缓存需要在hibernate.cfg.xml中进行配置
true
true
org.hibernate.cache.ehcache.EhCacheRegionFactory
2,对需要二级缓存的实体类进行配置
在User.hbm.xml中添加
上面的class标签name属性与cache标签region属性,以及ehcache.xml中设置的cache标签
name属性一定要相同,不然二级缓存会失败
运行后只产生一条sql语句
hibernate二级缓存不会同时缓存多条数据
package com.ltf.four.test;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
import com.ltf.two.util.SessionFactoryUtil;
/**
* hibernate二级缓存不会同时缓存多条数据
* @author Administrator
*
*/
public class EhcacheDemo4 {
public static void main(String[] args) {
Session session = SessionFactoryUtil.getSession();
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
核心竞争力,怎么才能提高呢?
成年人想要改变生活,逆转状态?那就开始学习吧~
万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。
为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。
前端面试题汇总
JavaScript
性能
linux
前端资料汇总
完整版PDF资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了。
前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。
ipt**
性能
linux
前端资料汇总
完整版PDF资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了。
前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。