首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2019Java面试题:对ORM理解如何?

了解ORM,先了解以下概念: 什么是“持久化” ? 持久(Persistence),即把数据(如内存的对象)保存到可永久保存的存储设备(如磁盘)。...持久化的主要应用是将内存的数据存储在关系型的数据库,当然也可以存储在磁盘文件、XML数据文件中等等。 什么是 “持久层”?...简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序的对象自动持久化到关系数据库。...Java典型的ORM框架有:Hibernate;ibatis(mybatis);speedframework。 ORM的方法论基于三个核心原则: 简单:以最基本的形式建模数据。...传达性:数据库结构被任何人都能理解的语言文档化。 精确性:基于数据模型创建正确标准化了的结构。 为什么要做持久化和ORM设计(重要)?

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    DjangoORM操作

    bigint存储,ORM获取的值为datetime.timedelta类型 FloatField(Field) - 浮点型 DecimalField(Field)...单表操作 0、orm操作前戏 orm使用方式: orm操作可以使用类实例化,obj.save的方式,也可以使用create()的形式 QuerySet数据类型介绍 QuerySet与惰性机制 所谓惰性机制...连表操作 我们在学习djangoorm的时候,我们可以把一对多,多对多,分为正向和反向查找两种方式。...在orm设置如果 A表设置了外键字段user=models.ForeignKey('UserType') 到B表(注意外键表名加引号) 就意味着 写在写A表的B表主键,(一列),代表B表的多个(一行...)称为1对多, 查询 总结:利用orm获取 数据库表多个数据 获取到的数据类型本质上都是 queryset类型, 类似于列表, 内部有3种表现形式(对象,字典,列表) modle.表名.objects.all

    4.8K10

    理解Java的ThreadLocal

    等等问题,本文将总结一下我对ThreadLocal的理解和认识,希望让大家理解ThreadLocal更加透彻一些。...对象存放在哪里 在Java,栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属线程可见,即栈内存可以理解成线程的私有内存。而堆内存的对象对所有线程可见。...关于堆和栈的比较,请参考Java的堆和栈的区别 真的只能被一个线程访问么 既然上面提到了ThreadLocal只对当前线程可见,是不是说ThreadLocal的值只能被一个线程访问呢?...关于弱引用,了解更多,请访问译文:理解Java的弱引用 使用场景 实现单个线程单例以及单个线程上下文信息存储,比如交易id等 实现线程安全,非线程安全的对象使用ThreadLocal之后就会变得线程安全...,因为每个线程都会有一个对应的实例 承载一些线程相关的数据,避免在方法来回传递参数 注意:Android的ThreadLocal与Java实现略有不同,但是原理是一致的。

    49540

    Java事务的理解

    Java事务的理解 今天在做固资系统时遇到一个问题,就是无论如何事务提交都不生效,于是决定实施实验,探究下背后的原理。本文主要分为三部分,第一部分讲解事务机制生效的原理。...也就是单纯的 java 语言层面的完成不了事务控制的。所以,要了解清楚事务执行的原理就要对于 mysql 的事务机制有了解。我们以 mysql 举例。...java异常分类 通过不断比较发现,在 java springboot 系统异常都是继承自 Throwable,Error 及 Exception 都是继承自该 Throwable,而 Exception...,它们又有个归纳的上级异常类,就是 RuntimeException,所以,我的解决方法就是自己捕获异常,同时在 catch 抛出异常的类另是 RuntimeException,这样事务就可以正常执行...是觉得前面概念这些可能初次接触,觉得云里雾里的,你心中可能从有点糊涂那刻起就升出疑团,费了这么大劲,搞出这么多事务隔离级别,到底是为了解决啥问题,所以在这部分公布答案,如果做过开发,并且做的跟交易密切相关的业务,就更能理解我下面所说的问题

    18810

    Java ORM Hibernate 入门笔记

    一、下载 官网地址:http://hibernate.org/ Hibernate下有ORM(关系型数据库)、OGM(NoSQL数据库)、Search(对象全文检索)、Validator的工具。...ORM 5.2下载地址为:http://hibernate.org/orm/releases/5.2/ 使用时,将Hibernate Lib下的required Jar包引入即可,其他高级功能可继续引用相关包...Hibernate Configuration File(cfg.xml)是与项目相关的,例如包括了该项目使用的数据库连接信息,而Hibernate Console Configuration则是在项目开发过程工具使用相关的...配置时,选择好项目及其配置文件路径,在Classpath引入该项目所用的数据库的JDBC驱动。 ?...ID可配置自动生成方式,自增序列值、GUID值等,或可不配置,此时在业务代码根据业务规则生成并赋值到Java对象

    1.1K70

    Java 动态代理实现 ORM

    ORM(Object/Relational Mapper),即“对象-关系型数据映射组件”。...本文简述通过 Java 动态代理机制实现关系数据与 POJO 对象的映射。 代理 静态代理 静态代理其实就是指设计模式的代理模式。 代理模式为其他对象提供一种代理以控制对这个对象的访问。...动态代理 为了解决静态代理的问题,引入动态代理的概念,在编译时或者运行时,可以在需要代理的地方动态生成代理,减轻代理类和类在系统冗余的问题。...import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.util.Map; import...总结 通过这个个简单的实践,了解了 Java 动态代理的使用方法以及对象关系数据的映射处理。

    59910

    Java Varargs 机制的理解

    到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类 型都必须逐一匹配,而形参的数目是在定义方法时就已经固定下来了...在 J2SE 1.5,也分别在java.io.PrintStream类和java.lang.String类中提供了类似的功能。...当个数可变的实参遇到泛型 J2SE 1.5新增了“泛型”的机制,可以在一定条件下把一个类型参数化。...造成这个现象的原因在于J2SE 1.5的泛型机制的一个内在约束——不能拿用标识符来代表的类型来创建这一类型的实例。在出现支持没有了这个约束的Java版本之前,对于这个问题,基本没有太好的解决办法。...重载的选择问题 Java支持“重载”的机制,允许在同一个类拥有许多只有形参列表不同的方法。然后,由编译器根据调用时的实参来选择到底要执行哪一个方法。

    74230

    理解 Java 的 NumberFormatException 异常

    如果我在 Java 对字符串和数字直接进行类型转换的话,我们有可能会遇到 NumberFormatException 异常。...NumberFormatException 这个异常是 Java 的一个 unchecked 类型异常,因此程序不会被要求强制进行处理。...构造函数 如果我们在构造函数对不是数字的字符串进行类型转换的话,将会有可能抛出这个异常。 例如我们尝试将一个字符串转换为 Integer 或Double 对象,但是输入的字符串不是数字。...在 Java ,负数是允许的,但是你不能使用下划线,你只能使用划线。 语言特性的数字格式化 这里我们说的语言特性数字格式化主要是因为不同地区和国家对数字的表达方式是不一样的。...总结 在这个页面,我们对将 String 格式化为数字类型,使用 Java Number API 的方法和可能出现的异常进行了一些说明。 在这里我们看到了常见的导致异常的原因和我们可以避免的办法。

    6.6K01

    Java接口作用的理解

    关于Java接口作用的深入理解。这是个很容易遇到的问题吧,看下面红色的部分应该就能理解了。要把接口视作一种共同规范。...总之,引入抽象类和接口是为了是代码逻辑更加清晰,建议去看一些简单的jdk源码,然后根据源码自己画一个类的UML图,理解一下平时所有的集合框架List Set这些的整体结构。...---- 2019/4/26 补充: 今天在看 JDBC 源码的时候,发现第一句 的 class.forName(),做了很多的事情, 在jdk ,只有 Driver 的一个接口,但是 mysql-connector-java.jar...这样就充分体现了扩展性,我在 class.forName 里面,指定加载 第三方的 Driver,那么在类加载的时候,可以完成 jdk Driver 接口, 在 第三方jar 具体实现的class...,但是 我们知道就算知道接口也不行,因为在 jdk 只有一个接口, 所以在 第三方 的jar里面,存在一个 配置文件,指向了在 第三方 jar 具体实现了 jdk sql 包下的 Driver

    40310

    JavaVo类的理解

    持久对象 可以看成是与数据库的表相映射的java对象。使用Hibernate来生成PO是不错的选择。 二、VO:value object值对象。...我觉得有时候也可以在某个商业逻辑或者表示层使用PO 此时在这个商业逻辑的过程PO的状态是不发生变化的,比如显示一条商品详细信息的商业逻辑。...在开发过的项目中,规模都很小,我一直都把PO当VO用,因为PO确实很方便,结合Hibernate的DAO 我使用JAVA的集合对象作为值传递的载体,当然Struts也是我的不二之选。...vo:value object,值对象 一般在java中用的多的是pojo:plain oriented java object 原始java对象,pojo一般和数据库的表是一一对应的。...既然有了实体类与数据库的字段一一对应了 那为什么还要VO呢 答案是因为在复杂的业务逻辑,往往单一实体类无法满足我们的需求,就举个简单的例子,一个课程系统中有一级分类和二级分类,那么一个一级分类应该会对应多个二级分类

    2.9K20

    javabean的理解

    javaBean在MVC设计模型是model,又称模型层,在一般的程序,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法JavaBean是一种JAVA...众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 属性。 ...用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象...javaBean在MVC设计模型是model,又称模型层,在一般的程序,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法JavaBean是一种JAVA...众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 属性。

    45810

    深度理解Java的static

    3、在静态的方法内,不能使用this和super关键字: 三、问题思考 1、java为什么要有static关键字? ①static可以不需要实例化对象就可以访问类的属性和方法。...参考博客:Java关于static的作用 – 一剑天门 – 博客园 3、修饰代码块:形成静态代码块以优化程序性能。 static块可以置于类的任何地方,类可以有多个static块。...Java的static关键字不会影响到变量或者方法的作用域。在Java能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字。...在C/C++static是可以作用域局部变量的,但是在Java中切记:static是不允许用来修饰局部变量。...三、问题思考 1、java为什么要有static关键字? ①static可以不需要实例化对象就可以访问类的属性和方法。 ②main方法必须用static修饰 a.

    1.8K21

    Web框架ORM框架

    在这个过程,视图函数不是直接通过 SQL 来操作数据库,而是通过模型类的对象属性或对象方法来操作数据库,这就是 ORM 带来的便利。...一、ORM 简介 ORM(Object-Relational Mapping),直接翻译成中文就是对象关系映射。 从字面意思即可理解ORM 是模型对象到关系数据库数据的映射。 ?...使用 ORM 框架,不需要直接面向数据库编程,而是定义模型类,通过类和类对象就能操作它所对应的数据表的数据。...ORM框架可以根据我们设计的类自动帮我们生成数据库的表,省去了我们自己在数据库建表的过程。 配置好数据库连接信息,定义模型类,执行数据库迁移后,就可以通过类和对象完成数据增删改查操作。 ?...三、ORM 的优点 ORM 对数据库操作进行了封装,使用起来很方便,也有很多优点: 1. 在开发过程,只需要面向对象编程即可,不需要面向数据库编程。 2.

    1.9K50
    领券