持久层

Mybatis框架入门

回眸只為那壹抹淺笑 提交于 2019-12-17 00:02:43
Mybatis框架 一、什么是Mybatis     MyBatis 本是 apache 的一个开源项目 iBatis , 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的 持久层 框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。   MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。                                                                                       ---------------百度百科 二、Mybatis与Hibernate区别    两个都是持久层框架,操作数据库,但是两者还是有区别的     

java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】

人走茶凉 提交于 2019-12-16 21:56:14
第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架   框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。 简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别 人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。 1.1.2 框架要解决的问题   框架要解决的最重要的一个问题是技术整合的问题,在 J2EE 的 框架中,有着各种各样的技术,不同的 软件企业需要从 J2EE 中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技 术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设 计和具体的实现技术解耦。这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应 用的底层支撑,它不应该直接对应用产生影响。   框架一般处在低层应用平台(如 J2EE)和高层业务逻辑之间的中间层。 1.1.3 软件开发的分层重要性   框架的重要性在于它实现了部分功能,并且能够很好的将低层应用平台和高层业务逻辑进行了缓和。为了实现 软件工程中的“高内聚、低耦合”。把问题划分开来各个解决,易于控制

JWT ( JSON Web Token ) 入门教程

风流意气都作罢 提交于 2019-12-11 10:30:01
JSON Web Token 入门教程 作者: 阮一峰 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。 一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id,写入用户的 Cookie。 4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。 5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。 这种模式的问题在于,扩展性(scaling)不好。单机当然没有问题,如果是服务器集群,或者是跨域的服务导向架构,就要求 session 数据共享,每台服务器都能够读取 session。 举例来说,A 网站和 B 网站是同一家公司的关联服务。现在要求,用户只要在其中一个网站登录,再访问另一个网站就会自动登录,请问怎么实现? 一种解决方案是 session 数据持久化,写入数据库或别的持久层。各种服务收到请求后,都向持久层请求数据。这种方案的优点是架构清晰,缺点是工程量比较大。另外,持久层万一挂了,就会单点失败。 另一种方案是服务器索性不保存 session 数据了,所有数据都保存在客户端

Mybatis框架学习第一天

隐身守侯 提交于 2019-12-11 08:05:31
1.Mybatis的入门知识 1.Mybatis是一个持久层的框架技术. 下面是三大框架的架构图 其中SpringMVC是表现层的框架:用于接收和展示数据的; 业务层(Service)是处理逻辑业务的。 Mybatis则是持久层(dao)的框架,封装了许多和数据操作相关的细节,提高开发效率。 需要注意的是,Spring是一个无可替代的框架,它横跨了表现层–业务层–持久层 经典的服务器开发的三层架构,Spring是整合前后两个层次的必需品。 2.经典的持久层技术分析 Jdbc技术(是规范) Spring的JdbcTemplate(对Jdbc的简单封装) DBUtils(对Jdbc的简单封装) 以上这些都不是框架,后两者都是工具类,Mybatis是一个用户只需要关注sql语句和数据库优化上的框架,而不用关注加载驱动,简化连接和释放预处理对象,关闭连接等繁琐的过程。 3.Mybatis技术简介 mybatis通过配置xml和注解的方式把各种statement配置起来,通过java对象和statement中的sql中的动态参数进行映射生成最终执行的sql,最终将结果集映射为java对象并返回。 mybatis采用ORM(对象关系映射)思想解决了实体和数据库映射的关系,封装了jdbc,对用户避免了使用jdbc的繁琐api。 ORM(对象关系映射)思想 简单的说就是

Objective-C中Sqlite3持久层框架

旧城冷巷雨未停 提交于 2019-12-10 13:21:59
Objective-c 中 Sqlite3 持久层 框架 是本文要介绍的内容,Cocoa与Cocoa Touch(主要是指 iphone ,ipad,ipod等等)都对 sqlite3 提供了良好的支持,但 objective-c 语言中的 sqlite3 持久层 框架 确没有java中那样丰富与强大、灵活,直到我发现sqlitepersistentobjects这个 框架 。 这个框架利用反射机制与value objects的完美结合,对sqlite3进行了非常轻量级的对象封装(这点有点像我2007年时写的一个java持久层框架,过些时候我整理一下,开源出来),使用者在编程过程中,基本不用再写sql语句,也不需要再手工生成sqlite3数据库文件。你所关心的,就是值对象继承一个核心类,然后添加值对像的属性,实际他就是一款Objective-C实现的ActiveRecord–Rails社区红透半边天的ORM模式。 一、sqlite persistent objects的下载与安装 sqlitepersistentobjects是google code上的一个开源项目,大家可以出下载它,本项目地址是:http://code.google.com/p/sqlitepersistentobjects/ 下载后,得到的源码包src内的源文件,copy到自己的项目中,建议最好新建一个分类

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. 账户的持久层映射文件 <

Mybatis笔记

ⅰ亾dé卋堺 提交于 2019-12-06 04:24:58
Mybatis下载地址: https://github.com/mybatis ,也可以用maven Mybatis概述 Mybatis,原名:iBatis,Mybatis是一个ORM(对象关系映射)框架,是一款基于Java的持久层框架,MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(简单的Java对象、实体类)映射成数据库中的记录。 dao -> 持久层(用来数据持久化) -> db 持久层和dao层融合一起来使用, ORM框架解决的是面向对象程序设计语言和关系型数据库不匹配的问题,Mybatis能使操作数据库像使用面向对象语言一样; hibernate是纯ORM框架;而Mybatis是半ORM框架,要手写sql的 Mybatis要做的事:实体类和sql之间建立映射关系 Mybatis核心配置(见son4模块) mybatis开发dao层(见son4模块) 1.传统开发方式(不常用):mybatis对dao的支持:在daoimpl加成员变量sqlsession工厂 2.mapper代理开发方式(最常用):mybatis对dao的支持,只需实现接口,并保证和映射文件名字一致,会生成代理实现类, 使用mapper代理注意:namespace

【SSH进阶之路】Hibernate基本原理(一)

白昼怎懂夜的黑 提交于 2019-12-06 02:31:17
在开始学Hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装。一句不难,难道是真的不难还是眼高手低? 如果只是停留在使用的层面上,我相信什么技术都不难,看看别人怎么做的,你也可以很快上手。 这难道是学习的最终目的吗? 不是,绝对不是。我们需要了解这门技术的基本概念,它到底是什么,它是干什么的,它有什么优缺点。下面我就带领大家一起回顾一下Hibernate: 什么是Hibernate? Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了。其实对于对象来说就是持久化。 扫盲-------------------------------------------------------------------------------------------------------- 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。 持久化是将程序数据在持久状态和瞬时状态间转换的机制。 JDBC就是一种持久化机制。文件IO也是一种持久化机制。 日常持久化的方法: 1、将鲜肉冷藏,吃的时候再解冻的方法也是。 2、将水果做成罐头的方法也是。 结束-----------

Java面试之持久层(10)

我的未来我决定 提交于 2019-12-05 10:04:38
91,什么是ORM? 对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术; 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据(在Java中可以用XML或者是注解),将程序中的对象自动持久化到关系数据库中或者将关系数据库表中的行转换成Java对象,其本质上就是将数据从一种形式转换到另外一种形式。 92,Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)? SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。对于应用程序,最好将SessionFactory通过单例模式进行封装以便于访问。 Session是一个轻量级非线程安全的对象(线程间不能共享session),它表示与数据库进行交互的一个工作单元。Session是由SessionFactory创建的,在任务完成之后它会被关闭。Session是持久层服务对外提供的主要接口。 Session会延迟获取数据库连接(也就是在需要的时候才会获取)。为了避免创建太多的session

EJB持久层cannot simultaneously fetch multiple bags异常的解决

一世执手 提交于 2019-12-05 07:04:46
病理特征:Caused by: org.hibernate.HibernateException: cannot simultaneously fetch multiple bags, 堆栈信息:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'initSystemDataBySpringListeren': Injection of resource fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'service': Injection of resource fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'assistantDao': Injection of resource fields failed; nested exception is org