对象关系映射

Hibernate学习---第三节:映射配置文件详解

拟墨画扇 提交于 2019-12-18 05:30:43
1、映射文件,代码如下: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- 持久化映射文件(将java对象映射到数据库表) default-access="property" 对象属性状态操作方式设置 property 表示属性需要通过 getter / setter 方法操作(默认) field 表示可以不需要通过 getter / setter 方法就可以通过反射的方式操作属性 package 指定持久化配置文件的中 class 的包路径 default-lazy="true" 指定持久化配置文件的中 class 延迟加载策略 default-cascade="none" 指定持久化配置文件的中 class 级联操作策略 --> <hibernate-mapping package="learn.hibernate.bean" default-access="property" default-cascade="none"> <!-- 1、name (可选): 持久化类(或者接口)的Java全限定名。

HIBERNATE与 MYBATIS的对比

让人想犯罪 __ 提交于 2019-12-16 15:58:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我是一名java开发人员,hibernate以及mybatis都有过学习,在 java面试 中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手。 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求去考虑究竟哪一个更适合项目开发,比如:一个项目中用到的复杂查询基本没有,就是简单的增删改查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不需要你去写sql语句,这就节省了大量的时间,但是对于一个大型项目,复杂语句较多,这样再去选择hibernate就不是一个太好的选择,选择 mybatis 就会加快许多,而且语句的管理也比较方便。 第二方面:开发工作量的对比 Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结

牧云@^-^@ 提交于 2019-12-16 15:54:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我是一名java开发人员,hibernate以及mybatis都有过学习,在 java面试 中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手。 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求去考虑究竟哪一个更适合项目开发,比如:一个项目中用到的复杂查询基本没有,就是简单的增删改查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不需要你去写sql语句,这就节省了大量的时间,但是对于一个大型项目,复杂语句较多,这样再去选择hibernate就不是一个太好的选择,选择 mybatis 就会加快许多,而且语句的管理也比较方便。 第二方面:开发工作量的对比 Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap

ES-映射和分析

限于喜欢 提交于 2019-12-16 10:21:19
参考: https://es.xiaoleilu.com/052_Mapping_Analysis/00_Intro.html 1. 概念 映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型(string, number, booleans, date等)。 分析(analysis)机制用于进行全文文本(Full Text)的分词,以建立供搜索用的反向索引。 2. 数据类型差异 GET /gb/_mapping 返回: { "gb" : { "mappings" : { "properties" : { "date" : { "type" : "date" }, "email" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "tweet" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" :

一致性哈希算法的原理与实现

三世轮回 提交于 2019-12-15 03:11:44
1 概述 1.1 传统哈希(硬哈希) 分布式系统中,假设有 n 个节点,传统方案使用 mod(key, n) 映射数据和节点。 当扩容或缩容时(哪怕只是增减1个节点),映射关系变为 mod(key, n+1) / mod(key, n-1),绝大多数数据的映射关系都会失效。 1.2 一致性哈希(Consistent Hashing) 1997年,麻省理工学院(MIT)的 David Karger 等6个人发布学术论文《Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the World Wide Web(一致性哈希和随机树:用于缓解万维网上热点的分布式缓存协议)》,对于 K 个关键字和 n 个槽位(分布式系统中的节点)的哈希表,增减槽位后,平均只需对 K/n 个关键字重新映射。 1.3 哈希指标 评估一个哈希算法的优劣,有如下指标,而一致性哈希全部满足: 均衡性(Balance):将关键字的哈希地址均匀地分布在地址空间中,使地址空间得到充分利用,这是设计哈希的一个基本特性。 单调性(Monotonicity): 单调性是指当地址空间增大时,通过哈希函数所得到的关键字的哈希地址也能映射的新的地址空间,而不是仅限于原先的地址空间。或等地址空间减少时

MVC框架详解(资源整理)

淺唱寂寞╮ 提交于 2019-12-15 01:37:19
一、什么是MVC? MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。 1、视图 视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 2、 模型 模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据

Mybatis—mapper.xml配置文件

百般思念 提交于 2019-12-14 18:26:11
目录 select Select 元素的属性 insert, update 和 delete 示例 sql 参数 (parameterType...) 字符串替换(${} 和 #{}区别) 结果映射 高级结果映射 id & result 关联association (实体类的属性是个实体类) 集合 集合的嵌套 Select 查询 集合的嵌套结果映射 集合的多结果集(ResultSet) 自动映射 缓存 (未完待续) MyBatis 的真正强大在于它的映射语句,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 为聚焦于 SQL 而构建,以尽可能地为你减少麻烦。 SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置。 cache-ref – 对其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parameterMap – 已被废弃!老式风格的参数映射。更好的办法是使用内联参数,此元素可能在将来被移除。 sql – 可被其他语句引用的可重用语句块。 insert – 映射插入语句 update – 映射更新语句 delete –

Laravel Composer自动加载机制

我怕爱的太早我们不能终老 提交于 2019-12-14 15:56:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 大纲 PHP 自动加载功能 1.1 PHP 自动加载功能的由来 1.2 PHP 自动加载函数 __autoload() 1.3 __autoload() 函数存在的问题 1.4 SPL Autoload PSR 规范 comoposer 的自动加载过程 composer 源码分析 4.1 启动 4.2 Composer自动加载文件 1, PHP 自动加载功能 1.1 PHP 自动加载功能的由来 在 PHP 开发过程中,如果希望从外部引入一个 Class ,通常会使用 include 和 require 方法,去把定义这个 Class 的文件包含进来。这个在小规模开发的时候,没什么大问题。但在大型的开发项目中,使用这种方式会带来一些隐含的问题:如果一个 PHP 文件需要使用很多其它类,那么就需要很多的 require/include 语句,这样有可能会 造成遗漏 或者 包含进不必要的类文件 。如果大量的文件都需要使用其它的类,那么要保证每个文件都包含正确的类文件肯定是一个噩梦, 况且 require或 incloud 的性能代价很大。 PHP5 为这个问题提供了一个解决方案,这就是 类的自动加载(autoload)机制 。 autoload机制 可以使得 PHP 程序有可能在使用类时才自动包含类文件

Hibernate<四> Hibernate关联映射

泄露秘密 提交于 2019-12-14 10:35:19
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Hibernate映射关系概述: Hibernate关联映射分为: ①、多对一。②、一对多。③、一对一。④、多对多。⑤、组件映射。⑥、集合映射。 在Uml语言中关联是有方向的,以客户Customer和订单Order的关系为例,一个客户能发出多个订单,而一个订单只能属于一个客户。从Order到Customer的关联是多对一,这意味着每个Order对象都会引用一个Customer对象,因此在Order类中应该定义一个Customer类型的属性,来引用关联的Customer对象。从Customer到Order是一对多关联,这意味着每个Customer对象会引用一组Order对象,因此在Customer类中应该定义一个集合类型的属性,来引用所有关联的Order对象。如果仅有从Order到Customer的关联,或者仅有从Customer到Order的关联,就称为单向关联。如果同时包含两种关联,就称为双向关联。 在关系数据库中,只存在外键参照关系,而且总是由many方参照one方,因为这样才能消除数据冗余,因此实际上关系数据库只支持多对一或一对一的单向关联。 一、多对一的单向关联关系:<many-to-one> 1、 在Order类中定义一个customer属性

MyBatis——简单例子

别来无恙 提交于 2019-12-12 22:33:41
MyBatis是什么?它和hibernate的区别有哪些? 来看下百度百科给的解释 目前,Java 的持久层框架产品有许多,常见的有 Hibernate 和 MyBatis 。 Hibernate 和 MyBatis 的区别 1)sql 优化方面 Hibernate 不需要编写大量的 SQL,就可以完全映射,提供了日志、缓存、级联(级联比 MyBatis 强大)等特性,此外还提供 HQL(Hibernate Query Language)对 POJO 进行操作。但会多消耗性能。 MyBatis 手动编写 SQL,支持动态 SQL、处理列表、动态生成表名、支持存储过程。工作量相对大些。 2)开发方面 MyBatis 是一个半自动映射的框架,因为 MyBatis 需要手动匹配 POJO、SQL 和映射关系。 Hibernate 是一个全表映射的框架,只需提供 POJO 和映射关系即可。 3)Hibernate 优势 Hibernate 的 DAO 层开发比 MyBatis 简单,Mybatis 需要维护 SQL 和结果映射。 Hibernate 对对象的维护和缓存要比 MyBatis 好,对增删改查的对象的维护要方便。 Hibernate 数据库移植性很好,MyBatis 的数据库移植性不好,不同的数据库需要写不同 SQL。 Hibernate 有更好的二级缓存机制,可以使用第三方缓存