对象关系映射

【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)

心不动则不痛 提交于 2019-12-09 13:45:51
【SSH进阶之路】Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,采用对象化的思维操作关系型数据库。 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二) ,小编搭建了基本Hibernate的开发环境,并做了一个简单实例,对它的基本原理有了一个理性的认识。 【SSH进阶之路】Hibernate基本映射(三) ,我们介绍了Hibernate的基本映射(即对一个实体进行映射)的相关概念,并给大家实现相关实例,比较简单。 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四) ,我们介绍了多对一的关联映射,并详细了解说了,映射技巧,这篇我们依旧使用此映射技巧,帮助大家更好的理解。 下面开始今天的愉快之旅。 映射原理 两个实体对象之间是一对一的关联映射,即一个对象只能与另外唯一的一个对象相对应。例如:一个人(Person)只有一张身份证(IdCard)。我们看一下这个例子的对象模型,如下图所示: 对象模型 从上图中可以看出: 1、一个人只有一张身份证,唯一的一个身份证号,对象之间是一对一的关系; 2、人(Person)持有身份证(IdCard)的引用,所以,两个对象关系维护由person端决定。 从对象模型映射成关系模型,有两种方式:主键关联和唯一外键关联,我们继续看下面的内容。 分类: 主键关联: 1

JPA注解大全详解参考手册

♀尐吖头ヾ 提交于 2019-12-09 10:47:37
JPA注释详解参考手册 JPA和Hibernate的关系 JPA(Java Persistence API) ,是Java EE 5的标准ORM接口,也是ejb3规范的一部分。 Hibernate 是之前很流行的ORM框架,也是JPA的一个实现,其它还有Toplink之类的ROM框架。 JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。 Hibernate主要是通过三个组件来实现的: hibernate-core :Hibernate的核心实现,提供了Hibernate所有的核心功能。 hibernate-entitymanager :Hibernate实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。 hibernate-annotation :Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及Hibernate自身特殊功能的annotation。 Entity @Entity说明这个class是实体类,并且使用默认的orm规则,即class名对应数据库表中表名,class字段名即表中的字段名。 (如果想改变这种默认的orm规则,就要使用

ssm框架面试题1

不想你离开。 提交于 2019-12-09 02:03:17
SpringMvc 简单介绍下你对springMVC的理解? Spring MVC Framework有这样一些特点: 它是基于组件技术的 . 全部的应用对象 , 无论控制器和视图 , 还是业务对象之类的都是 java 组件 . 并且和 Spring 提供的其他基础结构紧密集成 . 不依赖于 Servlet API( 目标虽是如此 , 但是在实现的时候确实是依赖于 Servlet 的 ) 可以任意使用各种视图技术 , 而不仅仅局限于 JSP 支持各种请求资源的映射策略 它应是易于扩展的 2) SpringMVC的工作流程? 1. 用户发送请求至前端控制器DispatcherServlet 2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器 5. 执行处理器(Controller,也叫后端控制器)。 6. Controller执行完成返回ModelAndView 7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 8.

springmvc和mybatis面试题

自古美人都是妖i 提交于 2019-12-09 02:00:41
Spring MVC Framework有这样一些特点: 1。它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件.并且和Spring提供的其他基础结构紧密集成. 2。不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的) 3。可以任意使用各种视图技术,而不仅仅局限于JSP 4。支持各种请求资源的映射策略 5。它应是易于扩展的 2) SpringMVC的工作流程? 1. 用户发送请求至前端控制器DispatcherServlet 2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器 5. 执行处理器(Controller,也叫后端控制器)。 6. Controller执行完成返回ModelAndView 7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器

Mybatis常见面试题总结

半城伤御伤魂 提交于 2019-12-09 01:55:10
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4)

Spring Data JPA 映射VO/DTO对象

我的未来我决定 提交于 2019-12-08 05:19:01
简介 在项目开发中,时常需要根据业务需求来映射VO/DTO对象(这两个概念理解感觉很模糊- 。- ),本文将简单介绍以Spring Data JPA的方式处理实体类映射 HQL方式 public interface MusicTypeRepository extends JpaRepository < MusicType , Integer > { @Query ( "select new cn.srblog.springbootcurd.vo.StudentTypeInfoVo(count(s.id),m.name) " + "FROM MusicType m left JOIN Student s on s.musicTypeId = m.id group by m.id " ) List < StudentTypeInfoVo > getTypeInfo ( ) ; } 填写实体类路径,构造参数顺序要一致,字段名一律为实体类中的属性 如果配置了实体类属性的映射关系,则 on s.musicTypeId = m.id 语句可以省略 VO实体类 @Value public class StudentTypeInfoVo { private Long count ; private String name ; } 使用 Lombok 的 @Value 注解 默认生成带参构造方法

Scala Map详解

白昼怎懂夜的黑 提交于 2019-12-07 20:05:59
Scala中Map继承自Iterator特质,是一组(K,V)对偶。其子类SortedMap按照Key排序访问其中的实体。 1.可变map和不可变map scala同时支持可变和不可变map。不可变map从不改变,因此你可以线程安全的共享其引用,在多线程的应用程序中也没问题。举例来说,既有scala.collection.mutalbe.Map,也有scala.collection.immutalbe.Map。他们有一个公共超类scala.collection.Map,该类中没有定义任何修改值的方法。 当你握有一个指向scala.collection.immutable.Map的引用时,没有人可以修改他。如果你有一个scala.collection.Map,那么你不能改变他,但别人也许会。 Scala优先使用使用不可变集合。scala.collection包中的伴生对象产出不可变集合。例如:scala.collection.Map(“Hello” -> 42)是一个不可变的集合。 不仅如此,总被引入scala包和Predef对象里有不可变map的别名Map。也就是说Predef.Map和scala.collection.immutable.Map是一回事。 当你导入import scala.colection.mutable包之后,你就可以用Map得到不可变map,用mutable

mybatis学习日记3

雨燕双飞 提交于 2019-12-07 12:10:27
1.mybatis的延迟加载 问题:在一对多中,当我们有一个用户,他有100个账户 在查询用户的时候,要不要把关联的账户查出来? 在查询账户的时候,要不要把关联的用户查出来? 解决:在查询用户的时候,用户下的账户信息应该是,什么时候使用,什么时候查询出来,如果每次查询用户的时候都把关联的账户信息查询出来,会浪费内存空间 但是在查询账户时,账所属的用户信息应该是随着账户查询时一起查询出来 1.1.什么是延迟加载: 延迟加载:在真正使用数据时才发起查询,不用的时候不查询,所以是按需加载(懒加载)。 1.2.延迟加载的优缺点 延迟加载的好处:先从单表查询,需要时再从关联表去关联查询,大大提高数 据库性能,因为查询单表要比关联查询多张表速度要快。 延迟加载的坏处:因为只有当需要用到数据时,才会进行数据库查询,这样在大批量数据查询时,因为查询工作也要消耗 时间,所以可能造成用户等待时间变长,造成用户体验下降。 2.多对一、一对一延迟加载的实现 使用assocation实现延迟加载 需求:查询账户信息同时查询用户信息 2.1 账户的持久层 DAO 接口 public interface IAccountDao { /** *查询所有账户,同时获取账户的所属用户名称以及它的地址信息 * @return */ List<Account> findAll(); } 2.2. 账户的持久层映射文件 <

ATL3.0中的窗口类-客户端使用ATL创建DUI框架的起点

泪湿孤枕 提交于 2019-12-07 11:15:01
摘要:讨论Active Template Library (ATL) 3.0中的一些类,这些类围绕着Windows API建立了一个面向对象的编程框架,使用这个框架,可以简化Microsoft® Windows®编程并且只需要很少的系统开销。内容包括:考察对窗口做了简单封装的CWindow类;使用CWindowImpl进行消息处理和消息映射;使用ATL中的对话框类以及扩展现有窗口类的功能的方法。 内容: 简介 CWindow CWindowImpl 一个简单而完整的示例 消息映射 为现有的窗口类添加功能 基类消息链 窗口的超类化 窗口子类化 被包含的窗口 消息反射 ATL中的对话框类 指定窗口类的信息 结论 简介: 虽然Active Template Library (ATL)主要是为了支持COM开发而设计的,但它确实包含了很多可用于窗口设计的类。这些窗口类和ATL中的其它类一样,都是基于模版的,并且只需要花费很少系统开销。这篇文章就向我们演示了使用ATL创建窗口和对话框并进行消息处理的基本方法。 这篇文章假设读者熟悉C++语言和Windows程序设计;但是并不一定要求读者具有COM方面的知识。 CWindow: 在ATL窗口类中,CWindow是最基本的。这个类对Windows API进行了面向对象的包装,它封装了一个窗口句柄,并提供一些成员函数来操作它

MFC消息响应机制分析

谁都会走 提交于 2019-12-07 10:42:05
---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解。 1.引言 ---- VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库。MFC的框架结构大大方便了程序员的编程工作,但是为了更加有效、灵活的使用MFC编程,了解MFC的体系结构往往可以使编程工作事半功倍。它合理的封装了WIN32 API函数,并设计了一套方便的消息映射机制。但这套机制本身比较庞大和复杂,对它的分析和了解无疑有助于我们写出更为合理的高效的程序。这里我们简单的分析MFC的消息响应机制,以了解MFC是如何对Windows的消息加以封装,方便用户的开发。 2. SDK下的消息机制实现 ---- 这里简单的回顾一下SDK下我们是如何进行Windows的程序开发的。一般来说,Windows的消息都是和线程相对应的。即Windows会把消息发送给和该消息相对应的线程。在SDK的模式下,程序是通过GetMessage函数从和某个线程相对应的消息队列里面把消息取出来并放到一个特殊的结构里面,一个消息的结构是一个如下的STRUCTURE。 typedef struct tagMSG { HWND hwnd; UINT