SpringDataJPA+Hibernate框架源码剖析(一)框架介绍

从补码原理到实践:RISC-V中addi指令的符号扩展机制详解 本文深入解析了RISC-V架构中addi指令的符号扩展机制。从补码的数学原理出发,详细阐述了12位立即数在指令编码中如何通过符号位进行扩展,并结合lui指令,揭示了加载任意32位立即数的正确方法与实践陷阱,帮助开发者编写高效可靠的底层代码。 阅读详情

SpringDataJPA+Hibernate框架源码剖析系列文章:

  1. SpringDataJPA+Hibernate框架源码剖析(一)框架介绍
  2. SpringDataJPA+Hibernate框架源码剖析(二)框架整合 之 EntityManagerFactory的构建
  3. SpringDataJPA+Hibernate框架源码剖析(三)框架整合 之 Repository接口实现的生成
  4. SpringDataJPA+Hibernate框架源码剖析(四)框架整合 之 事务管理器的构建(包括spring的事务机制)
  5. SpringDataJPA+Hibernate框架源码剖析(五)框架整合 之 SpringBoot整合JPA剖析
  6. SpringDataJPA+Hibernate框架源码剖析(六)@PersistenceContext和@Autowired注入EntityManager的区别

什么是JPA?什么是Spring Data?hibernate和JPA的关系?

在初学java时JDBC、ORM、JPA、SpringDataJPA、Hibernate傻傻分不清楚

  • JDBC : SUN官方推出的操作数据库的一套接口,具体的实现由各个数据库厂商提供。JDBC 是为了解决 如何从关系型数据库中获取数据 而设计的,设计的重心是如何更好的使用 SQL,取回来的数据以 ResultSet 的形态存在于内存中,仅此而已

在这里插入图片描述

  • ORM :ORM是一种思想全称 O:Object R: Relational M:mapping 即对象关系映射,这里的关系特指关系型数据库中的关系,而对象呢,是指面向对象语言中的对象,不限于 Java,其他的面向对象语言,比如 Python,Ruby 等,也有自己的 ORM 框架。在java中的ORM框架它们底层调用JDBC来实现ORM工作,我们直接使用这些工具,就省去了之间使用JDBC的繁琐细节,提高了开发效率。

  • JPA :SUN官方推出的一种ORM规范,可以理解为是JDBC的升华版接口,目的是为了希望持久化技术能够统一,实现天下归一,结束现在Hibernate、TopLink等ORM框架各自为营的局面。

  • Hibernate : JPA规范的一种实现,特点是强大、方便、高效、复杂、绕弯子、全自动,Hibernate已获得Sun的JPA兼容认证

  • Spring Data:Spring Data项目是为了简化构建基于Spring框架应用的数据访问技术,是Spring官方提供的一套数据层的综合解决方案。它支持关系型数据库、非关系型数据库、Map-Reduce框架、云数据服务等。

  • Spring Data JPA :Spring Data JPA 是Spring Data的一个模块,主要目的是简化Spring框架和JPA实现(Hibernate、TopLink等)的整合。相较于JPA只有接口和注解,Spring Data JPA提供了Hibernate的默认实现整合,也可以使用其他持久层框架。

(MyBatis不是完整的ORM框架,MyBatis只是将数据库中的内容映射为实体,没有将实体映射为数据库中的字段。或者说是sql语句和方法互相映射)

img

BMP390L数字大气压传感器原理图设计,已量产(压力传感器) 在工业设备的室内定位、地下设施监测这类 GPS 信号盲区场景里,气压高度检测的 “靠谱程度” 直接决定了系统的可用性 —— 毕竟谁也不想在地下停车场导航时,设备把 1 楼误判成 3 楼。最近在项目里基于博世 BMP390L 做了硬件电路设计,正好聊聊这款工业级数字气压传感器的硬实力,以及原理图里的那些关键设计细节。 阅读详情

相关推荐

LVGL配置文件lv_conf.h详解

lv_conf.h是一个用户级别的文件,它不属于内核的部分,因此,在不同的工程中,该文件有可能存在差异。lv_conf.h文件具有两大功能:(1)配置功能:内存、屏幕刷新周期、输入设备的读取周期,等等;(2)裁剪功能:使能失能某些功能,有效地优化Flash的分配。

qq_28576837的博客 5558

关于jpa源码的初步了解

关于jpa源码的初步了解jpa简介引入jpa基本概念源码debug总结扩展mybatis ,mybatis-plus 和 hibernate比较 jpa简介 Spring data JPA是Spring在ORM框架,以及JPA规范的基础上,封装的一套JPA应用框架,并提供了一整套的数据访问层解决方案。底层还是使用了 Hibernate 的 JPA 技术实现。 Hibernate是一个具体的ORM的...

weixin_39654646的博客 879

Qt开发中彻底解决中文乱码问题

中文乱码问题主要源于编码不一致需要同时设置控制台和Qt应用程序的编码确保项目文件和环境配置的编码一致文件操作时注意指定正确的编码。

qq_53832058的博客 3403

ORM框架之Spring Data JPA(一)Hibernate实现JPA规范

一、ORM简述 ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作数据库数据,就可以说这套程序实现了ORM对象关系映射。简单的说:ORM就是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的...

小蜜蜂1010的博客 2389

JEDEC 标准半导体功率循环热阻测试(JESD51 系列)

【代码】JEDEC 标准半导体功率循环热阻测试(JESD51 系列)

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 466

Spring JPA 中的 Hibernate

Hibernate 架构分析 首先看一下 Hibernate 5.2 版本中,官方提供的架构图。 从架构图上,我们可以知道 Hiberante 实现的 ORM 的接口有两种,一种是 Hiberante 自己的 API 接口;一种是 Java Persistence API 的接口实现。 因为 Hibernate 其实是比 Java Persistence API 早几年发展的,后来才有了 Java 的持久化协议。以我个人的观点来看,随着时间的推移,Hiberante 的实现逻辑可能会逐渐被弱化,由 Jav

CodersCoder的博客 449

高效批量转换Java接口为MCP服务:降低重复劳动的实战指南

高效批量转换Java接口为MCP服务:降低重复劳动的实战指南

专注于编程、AI、人工智能等多个领域内容研究和分析 722

(Spring笔记)Hibernate+JPA

package work.lpssfxy.www.campuslifeassistantserver.bean; import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; import javax.persistence.*; import java.util.Date; /** * created by on 2021/9/12 * 描述:用户表 * 实体类与数据库中的表相对应,否则只是典型的POJO的Java类.

张松的博客 292

56、宇宙微波背景辐射(CMB)望远镜及光学系统解析

本文详细解析了宇宙微波背景辐射(CMB)望远镜及其光学系统,重点介绍了交叉德拉贡系统的结构特点、偏振测量误差及其控制、以及大型地面望远镜如ACT和SPT的设计与对比。同时,总结了不同光学系统和探测器阵列的优劣势,并展望了未来发展方向,旨在为CMB研究提供更高效的工具和技术支持。

f9g0h的博客 241

【SAP HANA 24】HANA与Oracle SQL语法对照表

HANA SQL参考及Oracle 语法对照

探索 Java 编程的技巧、最佳实践和解决方案。本博客提供针对 Java 开发者的实用指南,涵盖从基础到高级话题,旨在提升编程效率和技能。 1421

spring + jpa + hibernate

1. 添加依赖Jar文件。除了必要的spring和Hibernate依赖外,下面的jar必不可少, 否则会抛出异常“No Persistence provider for EntityManager named *” org.hibernate hibernate-entitymanager 4.2.8.Final 2. spring-jpa-hibernat

qq_26182553的博客 414

2026年VIVO嵌入式岗位高频面试题(含参考答案)

摘要:VIVO嵌入式岗位考核涵盖智能手机、IoT设备、芯片适配等方向,重点考察硬件底层交互、RTOS/Linux开发、C/C++功底与问题排查能力。题目按优先级排序,分硬件架构、RTOS、C/C++、数据结构、Linux实践、行业认知6大模块,共40道题。硬件部分涉及中断、ARM架构、加速技术、BSP开发等;RTOS部分区分硬/软实时系统;C/C++部分侧重内存管理、位操作;Linux部分考察常用命令;行业部分关注鸿蒙等系统理念。题目设计贴合实际工作场景,全面评估嵌入式开发能力。

Open 52

SpringDataJPA+Hibernate框架源码剖析(二)框架整合 之 EntityManagerFactory的构建

SpringDataJPA+Hibernate框架源码剖析系列文章: SpringDataJPA+Hibernate框架源码剖析(一)框架介绍 SpringDataJPA+Hibernate框架源码剖析(二)框架整合 之 EntityManagerFactory的构建 SpringDataJPA+Hibernate框架源码剖析(三)框架整合 之 Repository接口实现的生成 SpringDataJPA+Hibernate框架源码剖析(四)框架整合 之 事务管理器的构建 SpringDataJPA+H

yangxiaofei_java的博客 2137

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringDataJPA+Hibernate框架源码剖析(三)框架整合 之 Repository接口实现的生成

SpringDataJPA+Hibernate框架源码剖析系列文章: SpringDataJPA+Hibernate框架源码剖析(一)框架介绍 SpringDataJPA+Hibernate框架源码剖析(二)框架整合 之 EntityManagerFactory的构建 SpringDataJPA+Hibernate框架源码剖析(三)框架整合 之 Repository接口实现的生成 SpringDataJPA+Hibernate框架源码剖析(四)框架整合 之 事务管理器的构建 SpringDataJPA+H

yangxiaofei_java的博客 813

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SpringDataJPA+Hibernate框架源码剖析(六)@PersistenceContext和@Autowired注入EntityManager的区别

SpringDataJPA+Hibernate框架源码剖析系列文章: SpringDataJPA+Hibernate框架源码剖析(一)框架介绍 SpringDataJPA+Hibernate框架源码剖析(二)框架整合 之 EntityManagerFactory的构建 SpringDataJPA+Hibernate框架源码剖析(三)框架整合 之 Repository接口实现的生成 SpringDataJPA+Hibernate框架源码剖析(四)框架整合 之 事务管理器的构建(包括spring的事务机制)

yangxiaofei_java的博客 1807

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringDataJPA+Hibernate框架源码剖析(五)框架整合 之 SpringBoot整合JPA剖析

SpringDataJPA+Hibernate框架源码剖析系列文章: SpringDataJPA+Hibernate框架源码剖析(一)框架介绍 SpringDataJPA+Hibernate框架源码剖析(二)框架整合 之 EntityManagerFactory的构建 SpringDataJPA+Hibernate框架源码剖析(三)框架整合 之 Repository接口实现的生成 SpringDataJPA+Hibernate框架源码剖析(四)框架整合 之 事务管理器的构建(包括spring的事务机制)

yangxiaofei_java的博客 1014

SpringMVC+SpringDataJPA+Hibernate

手把手教你从最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate(含源码下载) ...

准备翻身的咸鱼 543

SpringDataJPA 源码解析

SpringDataJPA是什么

m0_37561303的博客 1291

SpringDataJpa的运行过程和原理剖析

写了个SpringDataJPA的Demo并Debugger追踪了一下它的源码执行过程,以根据ID查询为例 如下: 我们在使用SpringDataJPA时只用定义接口并继承JpaRepository,JpaSpecificationExecutor这么两个接口,然后就可以实现简单的增删改查功能,看似啥都不用写,其实在调用时源码会通过动态代理帮我们实现这些方法。 /** * @author Liu...

Liuk的博客 2743

手把手教你从最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate(含源码下载)

转载请注明出处:http://blog.youkuaiyun.com/anxpp/article/details/51415366,谢谢!     本文会介绍从一个最基本的java工程,到Web工程,到集成Spring、SpringMVC、SpringDataJPA+Hibernate。     平时我们可能是通过一个模板,或者是直接导入一个项目,而本文选择从最基本的java工程开始,也是为了展示

anxpp的博客 3万+

SpringDataJPA+Hibernate框架源码剖析(四)框架整合 之 事务管理器的构建(包括spring的事务机制)

SpringDataJPA+Hibernate框架源码剖析系列文章: SpringDataJPA+Hibernate框架源码剖析(一)框架介绍 SpringDataJPA+Hibernate框架源码剖析(二)框架整合 之 EntityManagerFactory的构建 SpringDataJPA+Hibernate框架源码剖析(三)框架整合 之 Repository接口实现的生成 SpringDataJPA+Hibernate框架源码剖析(四)框架整合 之 事务管理器的构建(包括spring的事务机制)

yangxiaofei_java的博客 1038

SpringDataJpa查询返回空集合

当我们使用SpringDataJpa写sql查询数组时,如果数据库查询出来的数据为空,结果会是怎样的呢 接口类 public interface Dao extends PagingAndSortingRepository { @Query("select eneity from table") List<String> getList(); } 测试类: publi...

我秃了,也变强了。 7135

springDataJpa的运行过程和原理剖析

springDataJpa的运行过程和原理剖析 1 执行过程分析 1.分析如图所示: 1.通过JdkDynamicAopProxy的invoke方法创建了一个动态代理对象 2.SimpleJpaRepository当中封装了JPA的操作(借助JPA的api完成数据库的CRUD) 3.通过hibernate完成数据库操作(封装了jdbc) 以测试findOne()方法为例,在findOne()方法之前打断点,并使用debug运行如图所示: 如图所示,说明customerDao是一个动态代理类对象。 2 源码分

weixin_40055163的博客 764

SpringDataJPA框架笔记

Spring Data JPA 框架笔记 第⼀部分 Spring Data JPA 概述 Spring Data Jpa 是应⽤于Dao层的⼀个框架,简化数据库开发的,作⽤和Mybatis框架⼀样,但是在使⽤⽅式和底层机制是有所不同的。最明显的⼀个特点,Spring Data Jpa 开发Dao的时候,很多场景我们连sql语句都不需要开发。由Spring出品。 Spring Data JPA 是 Spring 基于JPA 规范的基础上封装的⼀套 JPA 应⽤框架,可使开发者⽤极简的代码即可实现对数据库的访问

杜莱的博客 332

SpringDataJpa-主键id生成策略(附hibernate)

一、SpringDataJpa标准用法 spring data jpa 的标准主键生成策略主要有四种,分别是: public enum GenerationType { TABLE, //使用一个额外的数据库表来保存主键 SEQUENCE,//使用序列的方式,且其底层数据库要支持序列,一般有postgres、Oracle等 IDENTITY,//主键由数据库生成,一般为自增型主键,支持的有MySql和Sql Server AUTO//由程序来决定主键规则 } 主键的

HD243608836的博客 5019
上一篇: 从网线到IO模型(网络基础整合)
下一篇: SpringDataJPA+Hibernate框架源码剖析(二)框架整合 之 EntityManagerFactory的构建
躺平程序猿
博客等级 码龄8年 4870粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

躺平程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值