java

最新文章

Java Objects.hash()与自己实现的hashCode()比较

Java 7新增了Objects类,它为对象提供了一些便捷的静态方法,如equals(),hashCode(),hash(),compare(),toString()等等。这里比较一下Objects.hash()与自己实现的hashCode()。传统实现的hashCode@Override public int hashCode() {  &nbs

Java随机产生指定范围的int整数

Java 7后的版本Java 7新增了ThreadLocalRandom类,可以使用它来随机生成指定范围的整数。import java.util.concurrent.ThreadLocalRandom; int randomNum = ThreadLocalRandom.current().nextInt(min, max);

Java奇偶数更新版本的区别以及安装版本选择

在Oracle Java下载页面,我们会看到有两个版本的JDK下载,如JDK 8的8u151和8u152。Java在每一次发布会有两个更新版本:CPU(Critical Patch Update ):重要补丁更新。PSU(Patch Set Update):补丁集更新 。重要补丁更新 (CPU) 包

理解Java的数字溢出

Java各个数字类型所占的存储空间:整型byte:1字节,1*8bit,取值范围-128~127short:2字节,2*8bit,取值范围-32768~32767int:4字节,4*8bit,取值范围-2147483648~2147483647long:8字节,8*8bit,取值访问-2^64~2^64-1浮点型float:4字节,4*8bitdouble:8字节,8*8bitchar类型java

Java把LocalDate转换为Date

有时需要在LocalDate和Date之间互转。LocalDate转换为DateLocalDate localDate = LocalDate.now(); System.out.println("LocalDate = " + localDate); Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toIn

JAVA三大特性之多态

1、介绍多态是同一个行为具有多个不同表现形式或形态的能力多态就是同一个接口,使用不同的实例而执行不同操作多态性是对象多种表现形式的体现。2、多态存在的必要条件继承子类重写父类方法父类引用指向子类对象比如:Parent parent = new Child(); 3、代码示例①、基于继承实现的多态public class { public String name = "animal";

Kotlin与Java相互调用

Kotlin的设计过程中就考虑到了与Java的互操作性。在Kotlin中可以直接调用既有的Java代码, 反过来在Java中也可以很流畅地使用Kotlin代码。 Kotlin 调用 Java一、大多数Java代码,可以直接调用:fun () { val list = ArrayList<string>() list.add("hello world") }二、

SpringBoot项目集成maven-shade-plugin

因为项目是基于springboot搭建的,按springboot的教程,打包只需要在pom添加以下即可:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin

Maven使用本地jar包

Maven导入本地的jar包,有下面两种方法。方法一:使用mvn安装本地jar包到本地仓库mvn install:install-file \ -Dfile=<path-to-file> \ -DgroupId=<group-id> \ -DartifactId=<artifact-id> \ -Dversion=<version&

Java使用Map.computeIfAbsent()方法简化初始不存在的key

我们在开发过程中,经常会遇到值为Map的Map。这种情况下我们需要先把key的值取出来,然后判断是否为null。如果值为null,则初始化值并把它存放进Map。示例代码:String childKey="2020-01"; User user = new User(); Map<String,Map<String,User>> parentMap = new HashMap

从jar包读取资源文件的正确方法

Java的类加载器ClassLoader提供了两个方法,用来对ClassPath里资源读取:getResource和getResourceAsStreamgetResourcepublic URL getResource(String name)访问资源的访问URL。需要注意的是,在IDEA开发工具里和打包成jar包,两个路径的形式是不一样的。IDEA开发工具结果在IDEA开发工具里,返回的是资源

领域驱动设计代码片段

1、在领域驱动设计中,这个Cell(电池单元)设计为一个包级别的类(没有在类上添加public),而且方法也是包级别的(没有在方法添加public,protected,private)2、Cell类在领域设计中属于值对象,而且它只能被同一个包下的实体或者聚合使用,不是对外公开的3、CellBlock(电池块)也是设计为包级别的类,方法也是包级别,和Cell类设计一致4、CellBlock类在领域设

Idea导入maven工程后右键没有Maven选项,没有maven命令行运行视图

有的时候我们在idea导入一个maven工程的时候,会发现工程右侧没有maven命令运行视图 如图所示:左边红色框中的项目字体颜色是浅色的,而不是深色的,右边的maven命令视图不存在;如果遇上类似的问题,可以采用以下方法解决右键选中某个项目下的pom文件,然后add as Maven Project即可,如图所示

JPA Hibernate 快速入门

为了学习JPA的实体状态的转化,我们先搭建一个通过JPA Hibernate存储实体到数据库的Demo,后续的学习都在此demo基础上展开。添加Hibernate依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager&l

JPA架构(JPA - Architecture)

今天我们来学习一下JPA的架构,首先问一个问题,大家学习理解一个架构有什么好的方法呢?对于我自己来说,我觉得架构图是理解架构最好的方式以上就是JPA的架构图,我们可以知道,JPA的主要部分包括五个类: 第一个类EntityManagerFactory,我们可以称为实体管理器工厂类,很显然,这个类的作用是创建和管理多个实体管理器类,因此,我们可以大胆猜测,实体管理器工厂类和实体管理器是一对

JPA实体状态深入理解

我们在学习JPA实体状态的时候,常常会问,JPA的实体有多少状态呢?相信这个问题不难回答:瞬时态(transient)托管态(persistent)游离态(detached)移除态(removed)注意:这里最后一个移除态,有的时候也叫删除态(deleted),至于它和移除态有啥区别,暂时没有想到,如果您对此有更加深刻的理解,请留言回复。为什么会有这四种状态呢?啥,这个也有为啥,网上不是都这么说的

JPA实体状态学习-(瞬时态:Transient)

为了学习实体的状态,我们还是贴出这张实体状态转换迁移图:Transient(瞬时态)按照上图的描述,java对象在内存中被赋值后,没有调用entityManager.persist()方法之前实体对象所处的状态。举个例子:Teacher teacher = new Teacher("email@dot.com");此时,实例teacher就处于new/transient态(备注:这里的new和tr

JPA实体状态学习-(持久态:Persistent)

今天我们继续学习JPA的实体状态转化,老规矩贴上实体转化的转化图: 上一节我们学习了:entityManager调用persist()方法后,实体的状态从transient到persistent,这个时候对persistent状态的实体改变也会同步持久化到数据库,执行tx.commit()之后实体进入detached状态,此时对实体进行改变后不会同步到数据库。今天我们来看看transie

JPA实体状态学习-(游离态:Detached)

今天我们学习另一种实体状态,老规矩还是先上图:Detached(游离态 unmanaged)An Object becomes detached when the currently running Persistence Context is closed. Any changes made to detached objects are no longer automatically prop

JPA实体状态学习-(移除态:Removed)

今天继续学习JPA中实体的最后一种状态:移除态。还是先把图晒出来:按照名称进行猜想,移除态应该就是对象从数据库中删除以后,对象变成了不受持久化上下文管理的移除态。不过呢,这里有一点需要注意的是:什么样的对象才会进入进入移除态呢?变成移除状态的对象是调用persist()方法后,是像persist一样参数对象受到持久化上下文管理呢?还是像merge方法一样返回的对象受到持久化上下文管理呢?这里还有一

JPA实体设计

实体是轻量级的领域对象,因此实体也称为领域模型。既然属于模型,那么模型应该遵守一些设计规范,设计实体的时候应该注意哪些规范呢?实体是属于领域模型,那么实体这个模型在多层软件架构中属于那一层呢? 多层架构程序我们首先用一张图来说明实体在多层软件架构中属于那一层?在一个多层软件架构中,领域模型能够被每一个组件访问。DAO层(Repository)用它来管理数据,展示层(Controller)

JPA实体注解(Entity Annotation)

今天我们开始学习可以用在实体上的注解,一样的道理,我们还是先弄一张图:按照难易程度,或者功能划分,我们分为三类,这样方便理解:基本注解映射关系注解查询注解 这里我们按照功能分类,也会添加一些后续会使用的注解:比如@EbeddedId,@IdClass等。我们先来看看注解@Entitypublic @interface Entity { /** * (Optional) T

Log4j 2 JNDI注入安全漏洞处理(CVE-2021-44228)

漏洞漏洞编号:CVE-2021-44228漏洞等级:高危,该漏洞影响范围极广,危害极大。漏洞描述:Apache log4j2的版本在 2.0 ~ 2.14.1之间时,存在JNDI注入漏洞,攻击者可以控制日志消息或日志消息参数,在启用消息查找替换时执行从LDAP服务器加载的任意代码。影响范围Apache log4j的2.0 - 2.15.0-rc1版本均存在该漏洞。漏洞日志/流量排查排查日志或者解码

JPA实体映射——Entity Mapping

学习JPA,实体之间的映射关系是最重要的一环,为了学习和讨论这部分知识,我们将这部分知识分为若干章节进行学习,我们也会用实际的例子进行分析,并且指出存在的问题,然后给出相应的优化方案。 第一步,我们列出具体的案例我们分别使用了三个实体:Institute(研究所),Department(部门),SocialProfile(社交账号)。如上图所示,研究所和部门是一对多的关系,研究所和社交账

JPA实体映射——一对多关系映射(上)

依照上一节的案例,我们来拆解一对多的关系怎么使用,首先还是把业务关系图弄出来。业务案例图业务分析从图中我们知道,研究所和部门是一对多关系,今天我们来展示,一对多设计的最佳实践。我们知道在JPA的实体设计中,一对多的关系可以设计成单向关联,也可以设计成双向关联。今天我们一步一步来实践各种设计,从而总结出最佳实践。Unidirectional @OneToMany 研究所实体port jav

JPA实体映射——一对多关系映射(中)

紧接上一节的学习,我们还是首先把业务关系图整理出来。业务案例图上一节我们知道,采用单向关联如果不使用@JoinColumn时,在新增一个研究所实体的时候,会生成三张表,并且会执行多条插入语句,在使用@JoinColumn时,会生成两张表,同时在departments上生成一个department_id字段,而JPA在插入数据时,采用的是先插入部门表数据,然后更新外键字段,这种方式,插入的效率不是很

JPA实体映射——一对多关系映射(下)

接上一节一对多关系的映射学习,今天我们学习一种双向关联的最佳实践,废话不说,先上业务实例图。业务实例图Bidirectional @OneToMany下面用代码说明双向关联的一对多关系研究所实体mport javax.persistence.*; import java.io.Serializable; import java.util.HashSet; import java.util.Set;

Cannot resolve com.oracle:ojdbc7_g:12.1.0.1

异常信息描述异常信息分析从日志可以看出是下载Oracle的数据库驱动问题。问题处理将maven的配置代码修改成<dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>

JPA实体映射——一对一关系映射

前几节我们介绍了一对多的关系,今天我们学习一对一关系以及这种映射方式的最佳实践,先上业务实例图。从图中可以看出,研究所和社交账号有一对一的关系,部门和社交账号也有一对一的关系,我们选用研究所和社交账号的关系来说明问题。Bidirectional @OneToOne研究所实体mport javax.persistence.*; import java.io.Serializable; import

JPA实体映射——多对一关系映射

前几节我们介绍了一对多的关系和一对一关系,今天我们学习多对一关系以及这种映射方式的最佳实践,先上业务实例图。在我们的业务关系图中,部门和研究所实体是多对一的关系,同时我们还是采用双向关联来说明问题Bidirectional @ManyToOne部门实体import javax.persistence.*; import java.io.Serializable; import java.util.

Gson对LocalDateTime的转换

Gson普通对象序列化和反序列化MyObject myObject = new Gson().fromJson(jsonStr, MyObject.class); String jsonStr = new Gson().toJson(myObject);使用GsonBuilder自定义日期格式:如果是对Date, Timestamp 和java.sql.Date做序列化和反序列化,可以使用Gson