持久层框架
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 透明持久化 • 无侵入,POJO与Hibernate的API无关 • 轻量级 • 移植性 • 测试容易,不需要什么环境
HIBERNATE的弱点
• 批量CRUD不适合hibernate,所有ORM框架的弱 点
• 映射关系太复杂,不适合 • SQL语句无法控制.需要数据库的特定优化策略,
如PLSQL,不适合使用Hibernate
<property name="driver" value=" com.mysql.jdbc.Driver " />
<property name="url" value=" jdbc:mysql://127.0.0.1:3306/mybatis-
110?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true " />
14
基于MyBatis的开发
创建**DAO接口
import er; import java.util.List; public interface UserDao {
/** * 根据id查询用户信息 * * @param id * @return */ public User queryUserById(String id); }
<property name="username" value=" root " />
<property name="password" value=" 123456 " />
</dataSource>
</environment>
</environments>
</configuration>
11
基于MyBatis的开发
17
基于MyBatis的开发
编写**DAO对应的Mapper映射文件
18
基于MyBatis的开发
编写**DAO对应的Mapper映射文件
19
基于MyBatis的开发
编写**DAO对应的Mapper映射文件
20
基于MyBatis的开发
Java代码
21
HIBERNATE 简介
Hibernate 是非常优秀、成熟的 O/R Mapping 框架。它提供了强 大的对象和关系数据库映射以及查询功能。
<configuration>
</environments>
<environment id="development">
<!-- 事务管理器,JDBC类型的事务管理器 -->
<transactionManager type="JDBC" />
<!-- 数据源,池类型的数据源 -->
<dataSource type="POOLED">
public class UserDaoImpl implements UserDao {
public SqlSession sqlSession;
public UserDaoImpl(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
@Override
将接口和Java的POJOs映atis的整体架构
提供给外部使用的接口API,开发人员通 过这些本地API来操纵数据库。接口层一 接收到调用请求就会调用数据处理层来 完成具体的数据处理。
4
MyBatis的整体架构
负责具体的SQL查找、SQL解析、SQL 执行和执行结果映射处理等。它主要的 目的是根据调用的请求完成一次数据库 操作。
15
基于MyBatis的开发
创建**DAO实现类
import erDao;
import er;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
第12章 持久层框架
软件工程系
软件复用与组件开发
本章内容
MyBatis Hibernate 基于MyEclipse的Hibernate配置开发
2
MyBatis简介
一款优秀的持久层框架 支持定制化SQL、存储过程及高级映射
避免了几乎所有的JDBC代码和手动设置参数以及获 取结果集
可以使用简单的XML或注解来配置和映射原生信息,
</environments> <environment id="development"> …… </environment>
</environments> <mappers>
<mapper resource="mappers/MyMapper.xml" /> </mappers> </configuration>
Gavin king创建Hibernate框架。 Hibernate一直致力成为ORM的标准。 重点在域(对象)模型的建设。
目前 EJB3 的 JPA 标准就是参照 Hibernate 制定的
HIBERNATE流行的原因
• 关系数据库和对象存在(阻抗不匹配:对象有继承, 关系数据库没有与之匹配的概念)
实现一个默认的构造方法(constructor)。这样的话Hibernate就可 以使用Constructor.newInstance()来实例化它们。
如果是集合类型的属性,它的类型必须定义为集合的接口。例如: List、Set。
提供一个标识属性(identifier property)。如果没有该属性,一些 功能不起作用,比如:级联更新(Cascaded updates) Session.saveOrUpdate()。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3config.dtd"> <configuration>
5
MyBatis的整体架构
负责最基础的功能支撑,包括连接管理、 事务管理、配置加载和缓存处理,这些都 是共用的东西,将他们抽取出来作为最基 础的组件。为上层的数据处理层提供最基 础的支撑。
6
MyBatis工作原理
7
MyBatis的核心接口说明
提交数据库
8
MyBatis使用步骤
1. 配置mybatis-config.xml 全局的配置文件
<select id="selectUser" resultType="er"> select * from tb_user where id = #{id}
</select> </mapper>
12
基于MyBatis的开发
修改全局配置文件mybatis-config.xml
Hibernate的体系结构图
29
Hibernate的核心接口说明
Hibernate主要接口
Configuration
➢ 配置Hibernate,根启动Hibernate,加载配置文件,创建 SessionFactory对象。
➢ 负责管理Hibernate 的配置信息。它包括如下内容:
Hibernate运行的底层信息:数据库的URL、用户名、密 码、JDBC驱动类,数据库Dialect,数据库连接池等。
13
基于MyBatis的开发
获得session的代码
// 指定全局配置文件 String resource = "mybatis-config.xml"; // 读取配置文件 InputStream inputStream = Resources.getResourceAsStream(resource); // 构建sqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 获取sqlSession SqlSession sqlSession = sqlSessionFactory.openSession();
</dependency>
10
基于MyBatis的开发
添加全局配置文件mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd">
Configuration-例子
<hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="connection.url"> jdbc:mysql://localhost:3306/Mysql </property> <property name="ername">root</property> <property name="connection.password">123456</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="myeclipse.connection.profile">mysql1</property> <mapping resource="com/Student.hbm.xml" /> <session-factory>
① 数据源 ② 外部的mapper
2. 创建SqlSessionFactory 3. 通过SqlSessionFactory创建SqlSession对象 4. 通过SqlSession操作数据库 CRUD 5. 调用mit()提交事务 6. 调用session.close()关闭会话
Hibernate在软件系统中的位置
Object
Relation
Hibernate 的 ORM
基于XML的映射方式 基于JPA Annotation的映射方式
Hibernate开发步骤
一、持久化类的设计 二、持久化类和关系数据
库的映射 三、应用的开发
持久化Java类必须遵循的原则
为类的持久化类字段申明访问方法(get/set)。Hibernate对 JavaBeans风格的属性实行持久化。
添加配置Map.xml(MyMapper.xml)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd"> <mapper namespace="MyMapper">
9
基于MyBatis的开发
Maven工程下导入MyBatis相关的jar包
➢ 在pom.xml文件中引入依赖
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version>
select tuser.id as id, er_name as userName, tuser.password as password, as name from tb_user tuser where tuser.id = #{id};
</select>
public User queryUserById(String id) {
return this.sqlSession.selectOne("UserDao.queryUserById", id);
}
16
基于MyBatis的开发
编写**DAO对应的Mapper映射文件
<mapper namespace="UserDao"> <select id="queryUserById" resultType="er">
Hibernate映射文件(*.cfg.xml)。
Configuration
➢ Hibernate配置的两种方法:
属性文件(hibernate.properties)。 调用代码:Configuration cfg = new Configuration();
Xml文件(hibernate.cfg.xml)。 调用代码:Configuration cfg = new Configuration().configure(“hibernate.cfg.xml”);
HIBERNATE的弱点
• 批量CRUD不适合hibernate,所有ORM框架的弱 点
• 映射关系太复杂,不适合 • SQL语句无法控制.需要数据库的特定优化策略,
如PLSQL,不适合使用Hibernate
<property name="driver" value=" com.mysql.jdbc.Driver " />
<property name="url" value=" jdbc:mysql://127.0.0.1:3306/mybatis-
110?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true " />
14
基于MyBatis的开发
创建**DAO接口
import er; import java.util.List; public interface UserDao {
/** * 根据id查询用户信息 * * @param id * @return */ public User queryUserById(String id); }
<property name="username" value=" root " />
<property name="password" value=" 123456 " />
</dataSource>
</environment>
</environments>
</configuration>
11
基于MyBatis的开发
17
基于MyBatis的开发
编写**DAO对应的Mapper映射文件
18
基于MyBatis的开发
编写**DAO对应的Mapper映射文件
19
基于MyBatis的开发
编写**DAO对应的Mapper映射文件
20
基于MyBatis的开发
Java代码
21
HIBERNATE 简介
Hibernate 是非常优秀、成熟的 O/R Mapping 框架。它提供了强 大的对象和关系数据库映射以及查询功能。
<configuration>
</environments>
<environment id="development">
<!-- 事务管理器,JDBC类型的事务管理器 -->
<transactionManager type="JDBC" />
<!-- 数据源,池类型的数据源 -->
<dataSource type="POOLED">
public class UserDaoImpl implements UserDao {
public SqlSession sqlSession;
public UserDaoImpl(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
@Override
将接口和Java的POJOs映atis的整体架构
提供给外部使用的接口API,开发人员通 过这些本地API来操纵数据库。接口层一 接收到调用请求就会调用数据处理层来 完成具体的数据处理。
4
MyBatis的整体架构
负责具体的SQL查找、SQL解析、SQL 执行和执行结果映射处理等。它主要的 目的是根据调用的请求完成一次数据库 操作。
15
基于MyBatis的开发
创建**DAO实现类
import erDao;
import er;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
第12章 持久层框架
软件工程系
软件复用与组件开发
本章内容
MyBatis Hibernate 基于MyEclipse的Hibernate配置开发
2
MyBatis简介
一款优秀的持久层框架 支持定制化SQL、存储过程及高级映射
避免了几乎所有的JDBC代码和手动设置参数以及获 取结果集
可以使用简单的XML或注解来配置和映射原生信息,
</environments> <environment id="development"> …… </environment>
</environments> <mappers>
<mapper resource="mappers/MyMapper.xml" /> </mappers> </configuration>
Gavin king创建Hibernate框架。 Hibernate一直致力成为ORM的标准。 重点在域(对象)模型的建设。
目前 EJB3 的 JPA 标准就是参照 Hibernate 制定的
HIBERNATE流行的原因
• 关系数据库和对象存在(阻抗不匹配:对象有继承, 关系数据库没有与之匹配的概念)
实现一个默认的构造方法(constructor)。这样的话Hibernate就可 以使用Constructor.newInstance()来实例化它们。
如果是集合类型的属性,它的类型必须定义为集合的接口。例如: List、Set。
提供一个标识属性(identifier property)。如果没有该属性,一些 功能不起作用,比如:级联更新(Cascaded updates) Session.saveOrUpdate()。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3config.dtd"> <configuration>
5
MyBatis的整体架构
负责最基础的功能支撑,包括连接管理、 事务管理、配置加载和缓存处理,这些都 是共用的东西,将他们抽取出来作为最基 础的组件。为上层的数据处理层提供最基 础的支撑。
6
MyBatis工作原理
7
MyBatis的核心接口说明
提交数据库
8
MyBatis使用步骤
1. 配置mybatis-config.xml 全局的配置文件
<select id="selectUser" resultType="er"> select * from tb_user where id = #{id}
</select> </mapper>
12
基于MyBatis的开发
修改全局配置文件mybatis-config.xml
Hibernate的体系结构图
29
Hibernate的核心接口说明
Hibernate主要接口
Configuration
➢ 配置Hibernate,根启动Hibernate,加载配置文件,创建 SessionFactory对象。
➢ 负责管理Hibernate 的配置信息。它包括如下内容:
Hibernate运行的底层信息:数据库的URL、用户名、密 码、JDBC驱动类,数据库Dialect,数据库连接池等。
13
基于MyBatis的开发
获得session的代码
// 指定全局配置文件 String resource = "mybatis-config.xml"; // 读取配置文件 InputStream inputStream = Resources.getResourceAsStream(resource); // 构建sqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 获取sqlSession SqlSession sqlSession = sqlSessionFactory.openSession();
</dependency>
10
基于MyBatis的开发
添加全局配置文件mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd">
Configuration-例子
<hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="connection.url"> jdbc:mysql://localhost:3306/Mysql </property> <property name="ername">root</property> <property name="connection.password">123456</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="myeclipse.connection.profile">mysql1</property> <mapping resource="com/Student.hbm.xml" /> <session-factory>
① 数据源 ② 外部的mapper
2. 创建SqlSessionFactory 3. 通过SqlSessionFactory创建SqlSession对象 4. 通过SqlSession操作数据库 CRUD 5. 调用mit()提交事务 6. 调用session.close()关闭会话
Hibernate在软件系统中的位置
Object
Relation
Hibernate 的 ORM
基于XML的映射方式 基于JPA Annotation的映射方式
Hibernate开发步骤
一、持久化类的设计 二、持久化类和关系数据
库的映射 三、应用的开发
持久化Java类必须遵循的原则
为类的持久化类字段申明访问方法(get/set)。Hibernate对 JavaBeans风格的属性实行持久化。
添加配置Map.xml(MyMapper.xml)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd"> <mapper namespace="MyMapper">
9
基于MyBatis的开发
Maven工程下导入MyBatis相关的jar包
➢ 在pom.xml文件中引入依赖
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version>
select tuser.id as id, er_name as userName, tuser.password as password, as name from tb_user tuser where tuser.id = #{id};
</select>
public User queryUserById(String id) {
return this.sqlSession.selectOne("UserDao.queryUserById", id);
}
16
基于MyBatis的开发
编写**DAO对应的Mapper映射文件
<mapper namespace="UserDao"> <select id="queryUserById" resultType="er">
Hibernate映射文件(*.cfg.xml)。
Configuration
➢ Hibernate配置的两种方法:
属性文件(hibernate.properties)。 调用代码:Configuration cfg = new Configuration();
Xml文件(hibernate.cfg.xml)。 调用代码:Configuration cfg = new Configuration().configure(“hibernate.cfg.xml”);