当前主流web框架图解
流行数据库框架
- JPA Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系(只有接口规范)
- Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL
- MyBatis 本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架
- Apache DBUtils 、Spring JDBCTemplate
ORM框架介绍
orm:object relationship mapping 对象关系映射,java中的对象,与数据库中的表,之间的映射关系。
- ORM功能:提供api操作java对象,ORM自动生成sql,并执行。
- ORM开发需要完成事情:编写对象、建立映射关系
hibernate是一个ORM框架
hibernate介绍
- Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架
持久层:java中的数据需要保存到数据库
轻量级:使用的依赖hibernate内容较少。提供简单的api和通过配置,完成强大功能。 - Hibernate提供了对关系型数据库增删改查操作
hibernate优点
- Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
- Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作
- Hibernate使用java的反射机制
- Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系
使用Hibernate编写hello world
1.导入jar包
2.编写javabean
public class User {
private Integer userId; //类型必须:整形,名称不建议使用id
private String username;
private String password;
...
}
3.映射文件 hbm.xml(文件位置:javabean同包)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.a_hello.User" table="t_user">
<!-- 主键 -->
<id name="userId">
<!-- 固定值 -->
<generator class="native"></generator>
</id>
<!-- 普通属性 -->
<property name="username"></property>
<property name="password"></property>
</class>
</hibernate-mapping>
4.核心配置文件hibernate.cfg.xml(位置:src)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 相当于连接池 -->
<session-factory>
<!-- #1 基本4项,注意:必须手动创建数据库 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/h_day01_db</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1234</property>
<!-- #2 方言
* 通过配置文件获得: %h%/project/etc/hibernate.properties
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- #3 自动创建表,固定值 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 配置映射文件 -->
<mapping resource="cn/itcast/a_hello/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5.编写操作api
注意:必须手动创建数据库,且保证数据库启动
public static void main(String[] args) {
User user = new User(); //注意:不要设置userId
user.setUsername("张三");
user.setPassword("ds123");
//1 加载配置文件 , 注意:必须执行 configure()方法
Configuration config = new Configuration().configure();
//2 获得session工厂,相当于连接池
SessionFactory factory = config.buildSessionFactory();
//3获得session ,相当于 jdbc Connection
Session session = factory.openSession();
//4 必须开启事务
Transaction transaction = session.beginTransaction();
// 操作--保存
session.save(user);
// 5 提交|回滚
transaction.commit();
// 6 释放资源
session.close();
factory.close(); //可以不关
}