对象关系映射

十八、sun JPA理解及使用

删除回忆录丶 提交于 2020-01-20 20:25:35
1、JPA理解及实现: JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持,是SUN在充分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。 因为JPA是一个公开的规范,当前有不同的实现。Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了对JPA的实现。 2. 具有ORM元数据的领域对象称为实体 (Entity),按JPA的规范,实体具备以下的条件: 1)必须使用javax.persistence.Entity注解或者在XML映射文件中有对应的元素; 2)必须具有一个不带参的构造函数,类不能声明为final,方法和需要持久化的属性也不能声明为final; 3)如果游离状的实体对象需要以值的方式进行传递,如通Session bean的远程业务接口传递,则必须实现Serializable接口; 4

SQL语句映射文件(1)resultMap

99封情书 提交于 2020-01-20 08:47:45
SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 <mappers> <mapper resource="com/liming/manager/data/mappers/UserMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/StudentMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/ClassMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/TeacherMapper.xml" /> </mappers> 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。 SQL 映射XML 文件一些初级的元素: 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象 4. sql –

MyBatis学习 之 二、SQL语句映射文件(1)resultMap

江枫思渺然 提交于 2020-01-20 06:42:49
二、SQL语句映射文件(1)resultMap SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 < mappers > < mapper resource = "com/liming/manager/data/mappers/UserMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/StudentMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/ClassMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/TeacherMapper.xml" /> </ mappers > 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。 SQL 映射XML 文件一些初级的元素: 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap –

MyBatis学习 之 二、SQL语句映射文件(1)resultMap

落花浮王杯 提交于 2020-01-20 05:39:26
SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 <mappers> <mapper resource="com/liming/manager/data/mappers/UserMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/StudentMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/ClassMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/TeacherMapper.xml" /> </mappers> 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。 SQL 映射XML 文件一些初级的元素: 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象 4. sql –

MyBatis学习 之 二、SQL语句映射文件(1)resultMap

假如想象 提交于 2020-01-20 04:32:01
二、SQL语句映射文件(1)resultMap SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 < mappers > < mapper resource = "com/liming/manager/data/mappers/UserMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/StudentMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/ClassMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/TeacherMapper.xml" /> </ mappers > 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。 SQL 映射XML 文件一些初级的元素: 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap –

mybatis注解开发

*爱你&永不变心* 提交于 2020-01-20 00:46:22
MyBatis可以利用SQL映射文件来配置,也可以利用Annotation来设置。MyBatis提供的一些基本注解如下表所示。 注解 目标 相应的XML 描述 @CacheNamespace 类 <cache> 为给定的命名空间(比如类)配置缓存。属性: implemetation,eviction, flushInterval , size 和 readWrite 。 @CacheNamespaceRef 类 <cacheRef> 参照另外一个命名空间的缓存来使用。 属性:value,也就是类的完全限定名。 @ConstructorArgs 方法 <constructor> 收集一组结果传递给对象构造方法。 属性:value,是形式参数的数组 @Arg 方法 <arg> <idArg> 单独的构造方法参数,是ConstructorArgs 集合的一部分。属性:id,column,javaType,typeHandler。 id属性是布尔值,来标识用于比较的属性,和<idArg>XML 元素相似 @TypeDiscriminator 方法 <discriminator> 一组实例值被用来决定结果映射的表 现。属性:Column, javaType , jdbcType typeHandler,cases。 cases属性就是实例的数组。 @Case 方法 <case>

Spring Data Elasticsearch

对着背影说爱祢 提交于 2020-01-16 16:16:08
Elasticsearch提供的Java客户端有一些不太方便的地方: 很多地方需要拼接Json字符串,在java中拼接字符串有多恐怖你应该懂的 需要自己把对象序列化为json存储 查询到结果也需要自己反序列化为对象 因此,我们这里就不讲解原生的Elasticsearch客户端API了。 而是学习Spring提供的套件:Spring Data Elasticsearch。 1.简介 Spring Data Elasticsearch是Spring Data项目下的一个子模块。 查看 Spring Data的官网: http://projects.spring.io/spring-data/ Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性。 它使得使用数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得容易。这是一个总括项目,其中包含许多特定于给定数据库的子项目。这些令人兴奋的技术项目背后,是由许多公司和开发人员合作开发的。 Spring Data 的使命是给各种数据访问提供统一的编程接口,不管是关系型数据库(如MySQL),还是非关系数据库(如Redis),或者类似Elasticsearch这样的索引数据库。从而简化开发人员的代码,提高开发效率。 包含很多不同数据操作的模块:

Mybatis知识点总结

旧时模样 提交于 2020-01-15 05:56:52
1.什么是MyBatis? 答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2.MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置 3.Mybatis是如何进行分页的?分页插件的原理是什么? 1)Mybatis使用RowBounds对象进行分页,也可以直接编写sql实现分页,也可以使用Mybatis的分页插件。 2)分页插件的原理:实现Mybatis提供的接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql。 举例:select * from student,拦截sql后重写为:select t.* from (select * from student)t limit 0,10 推荐看起来比较清晰的PageHelper分页原理 3)PageHelper首先将前端传递的参数保存到page这个对象中,接着将page的副本存放入ThreadLoacl中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的拦截器,取得ThreadLocal的值,重新拼装分页SQL,完成分页。 4.Mybatis的插件运行原理

c++共享内存通信如何实现

萝らか妹 提交于 2020-01-15 04:36:52
c++共享内存通信如何实现 前言 mmap机制-对应cyber中共享内存通信模式中的PosixSegment 小结 System V共享内存-对应cyber中XsiSegment 小结 参考链接 前言 现在很多对性能要求高的项目都会支持共享内存的进程间通信(IPC)方式,本文会以百度Apollo自动驾驶项目为例,展示两种c++中实现共享内存通信的方式(对应linux中两种不同的机制)。 共享内存实际上就是两个不相关的进程访问同一块逻辑内存,相应的肯定需要额外的同步机制来保证读写正确。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容往往是在解除映射时才写回文件的。因此,采用共享内存的通信方式效率是非常高的。 mmap机制-对应cyber中共享内存通信模式中的PosixSegment 内存映射机制mmap是POSIX标准的系统调用,mmap(

所谓的持久层框架?ORM框架?以及Hibernate和Mybatis区别?

久未见 提交于 2020-01-14 08:47:22
ORM框架? Object Relational Mapping,对象-关系映射。 项目中的业务实体有两种表现形式:对象和关系数据,即在内存中表现为对象,在数据库中表现为关系数据。 为什么需要ORM框架? ORM框架是对象关系映射,那为什么要映射mapping? 因为对象之间可以存在关联和继承关系,但是在数据库中,关系数据无法表达多对多关联和继承关系。(ps:在数据库原理中,会把逻辑上的多对多转换为多个一对关系才能实现)因此,对象和关系(业务实体的两种表现形式)想要映射正确,项目系统一般以中间件的形式,即持久层框架。 Hibernate? Hibernate是一个开源的对象关系映射框架。 它对jdbc进行了非常轻量级的对象封装,将pojo(普通的Java对象)与数据库表建立映射关系,是一个全自动的ORM框架,甚至自动生成SQL语句,自动执行。 因此,程序员可以随心所有地使用对象编程思维来操纵数据库。 Hibernate特点: Hibernate通过修改一个“持久化”对象的属性,从而修改数据库表中对应的记录数据 提供线程和进程两个级别的缓存提升应用程序性能 有丰富的映射方式将 Java对象之间的关系(POJO) 转换为 数据库表之间的关系 屏蔽不同数据库实现之间的差异。在Hibernate中只需通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句