持久层

所谓的持久层框架?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语句

PHP ORM-持久层框架解决方案

懵懂的女人 提交于 2020-01-13 09:38:39
重点推荐: http://www.phpactiverecord.com/ ---- php.activerecord 1、Propel Propel是一个适用于PHP5的OR映射(Object Relational Mapping)框架,它基于Apache Torque提供对象持久层支持。它通过XML格式的模式定义文件和相应的配置文件来生成SQL和类,它允许你使用对象代替SQL来读写数据库表中的记录。Propel提供一个生成器来为你的数据模型创建SQL定义文件和PHP类。开发者也可以十分简单的定制生成的类,我们还可以通过XML, PHP类和Phing构建工具把Propel集成到已有的应用开发框架中去.例如PHP框架symfony的1.2以前的版本就是默认使用了精简版的Propel作为默认ORM框架。 官方网站: http://www.propelorm.org/ 2、Doctrine Doctrine是一个PHP的ORM框架,它必须运行在>=php5.2.3版本上,它是一个功能强大的数据抽象层.它的一个主要特征就是使用面向对象的方式来实现数据库查询的封转,它底层通过一个类似 Hibernate HQL的DQL的查询语句进行数据库查询, 这使得开发的灵活性更强,大大减小了重复代码。相比Propel,Doctrine的优点在于它支持支持全文检索

三、持久层框架(Hibernate)

限于喜欢 提交于 2020-01-11 05:40:33
一、Hibernate处理关系 关系主要有三种:1、多对一  2、一对多  3、多对多 1、多对一 一个Product对应一个Category,一个Category对应多个Product(一个产品对应一个类别,一个类别对应多个产品) 也就是Product和Category是多对一的关系。(多个产品对应一个类别) 1.1在数据test下创建表category_table,两个字段,id(自增),字符串格式name 其实也不用建表,因为Hibernate会自动建表。 use test; CREATE TABLE category_ table( id int(11) NOT NULL AUTO_INCREMENT, name varchar(30) , PRIMARY KEY (id) ) DEFAULT CHARSET=UTF8; View Code 1.2、准备类别实体类(Category.java) package com.demo.pojo public class Category{ private int id;//类别id private String name;//类别名称 //属性的getter/setter方法 public int getId(){ return id; } public void setId(int id){ this.id=id; }

Mybatis(二)自定义DAO与代理DAO && 配置文件含义

*爱你&永不变心* 提交于 2020-01-11 04:19:26
自定义流程再分析 基于代理 Dao 实现 CRUD 操作 使用要求: 1、持久层接口和持久层接口的映射配置必须在相同的包下 2、持久层映射配置中 mapper 标签的 namespace 属性取值必须是持久层接口的全限定类名 3、SQL 语句的配置标签<select>,<insert>,<delete>,<update>的 id 属性必须和持久层接口的 方法名相同 根据 ID 查询 在持久层接口中添加 findById 方法 User findById(Integer userId); <!-- 根据 id 查询 --> <select id="findById" resultType="com.itheima.domain.User" parameterType="int"> select * from user where id = #{uid} </select> 细节: resultType 属性: 用于指定结果集的类型。 parameterType 属性: 用于指定传入参数的类型。 sql 语句中使用#{}字符: 它代表占位符,相当于原来 jdbc 部分所学的?,都是用于执行语句时替换实际的数据。 具体的数据是由#{}里面的内容决定的。 #{}中内容的写法: 由于数据类型是基本类型,所以此处可以随意写。 public class MybatisTest { private

Hybris Commerce里的持久层

流过昼夜 提交于 2020-01-07 06:35:38
SAP的product都是DB provider无关的,application developer最多用Open SQL直接操作表。 Netweaver里支持的DB provider在这张表DBCON的DBMS字段里能看到: Hybris里也有和CRM WebUI里的API layer起同样作用的layer - API layer, 封装了对DB的操作。 Hybris里类似SAP CRM这种持久层layer的实现是很多以DAO( Data Access Object)结尾的java class完成的,相当于上图SAP CRM Business layer层的function module: 随便点开一个DAO看其实现,里面也是拼SQL然后fire到DB去: Hybris支持下列不同类型的数据库: hybris开发我们一般使用HSQLDB: 一个轻量级的纯Java开发的开放源代码的关系数据库系统 要获取更多Jerry的原创文章,请关注公众号"汪子熙": 来源: CSDN 作者: 汪子熙 链接: https://blog.csdn.net/i042416/article/details/103841802

Ubuntu下的MySQL安装

被刻印的时光 ゝ 提交于 2019-12-27 15:07:58
工程地址: https://github.com/tonglin0325/article-manager.git 1.搭建环境的第一步是导包,把下面这些包都导入工程中 /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/aop /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/apache-commons-logging /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/apache-log4j /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/bean-validator /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/dbcp /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/hibernate-3.6.8. /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/JSTL /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/mysql /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/pager /media/common/工作/Ubuntu软件/SpringMVC

Mybatis的动态SQL语句

房东的猫 提交于 2019-12-25 10:59:42
Mybatis的动态SQL语句主要解决的问题是 不同条件SQL语句的拼接 。 例如:根据用户信息,查询用户列表,当不知道根据的是用户的什么信息时,写出查询的SQL语句是有一定困难的,而动态SQL语句主要解决的就是此类问题。 if标签的使用 在持久层接口定义方法 /** * 根据用户信息,查询用户列表 * @param user * @return */ List < User > findByUser ( User user ) ; 编写持久层接口对应的映射文件 <!-- 根据用户信息,查询用户列表 --> < select id = " findByUser " resultType = " User " parameterType = " User " > select *from user where 1 = 1 < if test = " id != 0 " > and id = #{id} </ if > < if test = " username != null and username != ' ' " > and username like #{username} </ if > < if test = " birthday != null " > and birthday = #{birthday} </ if > < if test = " sex !=

MyBatis学习(一)

陌路散爱 提交于 2019-12-24 03:45:51
MyBatis入门 一、什么是MyBatis MyBatis 是一款优秀的 持久层框架 。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。 MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。 2013年11月迁移到 Github 。 MyBatis官方文档 : http://www.mybatis.org/mybatis-3/zh/index.html GitHub : https://github.com/mybatis/mybatis-3 Maven仓库 < dependency > < groupId > org.mybatis </ groupId > < artifactId > mybatis </ artifactId > < version > 3.5.2 </ version > </ dependency > < dependency > < groupId > mysql </ groupId > < artifactId >

持久层框架-----JDBC篇(2)

断了今生、忘了曾经 提交于 2019-12-23 15:14:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 掌握了JDBC最基本的与数据库交互后,接下来,我们要修炼进阶篇了,此篇涉及大量的专业名词,需要有一定天赋的修行者修炼,不过,我相信,能够轻松通过第一篇的你,绝对是那个骨骼精奇,天资聪慧的修行者~那么,我们进入此次的修行把---JDBC的事务管理 事务:在一个业务场景中,保持一系列操作的整体性,我们称作事务~简单来讲,在一系列的操作中,要么,所有操作都生效,要么所有操作都不生效,不存在某些操作生效,某些操作不生效的情况。举个例子~业务场景:小鱼儿转10定金子给花无缺;涉及的操作:1.钱从小鱼儿的兜里转出~2.钱转入到花无缺的兜中~,两个操作缺一不可,如果操作1在途中受阻,那么钱就会回到小鱼儿的兜中,只有这样,才能保证我业务操作的完整性。 事务的特性: 1、原子性(atomicity):组成事务的语句形成了一个逻辑单元,不能只执行一部分; 2、一致性(consistency):在事务处理执行前后,数据库与理论值是一致的(数据库完整性约束); 3、隔离性(isolcation):一个事务处理和另一个事务处理相互间互不影响; 4、持续性(durability):事务处理的效果能够被永久保存下来。 隔离级别: 1、多线程并发执行可能会产生以下三个问题:   脏读(dirtyreads)

持久层框架:MyBatis 3.2(1)

删除回忆录丶 提交于 2019-12-17 04:19:48
MyBatis 的前身就是 iBatis 。是一个数据持久层(ORM)框架。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的 JPetStore 实例。 看到Mybatis的框架图,可以清晰的看到Mybatis的整体核心对象,我更喜欢用自己的图来表达Mybatis的整个的执行流程。如下图所示: 原理详解: MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。 MyBatis的优缺点 优点: 1、简单易学 mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 2、灵活 mybatis不会对应用程序或者 数据库 的现有设计强加任何影响。