Hibernate
Hibernate框架简化了java应用程序与数据库交互的开发。 Hibernate是一个开源,轻量级的ORM(对象关系映射)工具。
ORM工具简化了数据创建,数据处理和数据访问。它是将对象映射到数据库中存储的数据(表)的编程技术。
Hibernate框架有很多优点。它们分别如下:
· 开源和轻量级: Hibernate框架是根据LGPL许可证和轻量级的开源工具。
· 快速性能: Hibernate框架的性能很快,因为缓存在Hibernate框架内部使用。hibernate框架中有两种类型的缓存:一级缓存和二级缓存。一级缓存默认是启用的。
· 数据库独立查询: HQL(Hibernate查询语言)是面向对象的SQL版本。它生成数据库独立查询。所以你不需要编写数据库特定的查询语句。在Hibernate之前,如果项目更改了数据库,我们需要更改SQL查询,从而导致维护变得非常复杂。
· 自动创建表: Hibernate框架提供了自动创建数据库表的功能。因此,无需手动在数据库中创建表。
· 简化复杂连接: 在hibernate框架中可轻松获取多个表中的数据。
· 提供查询统计和数据库状态: Hibernate支持查询缓存,并提供有关查询和数据库状态的统计信息。
· Hibernate架构包括许多对象持久对象,会话工厂,事务工厂,连接工厂,会话,事务等。
Hibernate体系结构的要素
· 要创建第一个hibernate应用程序,我们必须知道Hibernate架构的元素。它们如下:
· 会话工厂(SessionFactory)
· SessionFactory是ConnectionProvider的会话和客户端工厂。它拥有数据的二级缓存(可选)。org.hibernate.SessionFactory接口提供了工厂方法来获取Session的对象。
· 会话(Session)
Session对象提供应用程序和存储在数据库中的数据之间的接口。它是一个短生命周期的对象并包装JDBC连接。它是事务,查询和标准的工厂。它拥有一级缓存(强制性)数据。 org.hibernate.Session接口提供插入,更新和删除对象的方法。它还提供了事务,查询和标准的工厂方法。
· 事务(Transaction)
事务对象指定工作的原子单位,它是一个可选项。 org.hibernate.Transaction接口提供事务管理的方法。这个是Hernate独有的可以在Spring中得到体现-事务管理{JDBC}
· 连接提供者(ConnectionProvider)
· 它是一个JDBC连接工厂。它从DriverManager或DataSource抽象出来的应用程序。它是一个可选项。
· 事务工厂(TransactionFactory)
· 它是一个事务工厂,是一个可选项。
Java工程
· 1.1下载所需的 Hibernate-jars文件:我们将应用程序与MySQL数据库连接。 所以你必须添加mysql-connect.jar
文件。
· 1.2. 创建持久化类-- user
1.3创建持久化类的映射文件--user.hbm.xml
5. 创建配置文件--hibernate.cfg.xml{与数据库进行的相关操作}
· 2.1//可以使用注释创建hibernate应用程序。有许多注释可用于创建hibernate应用程序,如@Entity,@Id,@Table等。
· 使用hibernate注释的核心优点是我们不需要创建映射(*.hbm.xml
)文件直接创建对象关联。 在这里,hibernate注释用于提供元数据。
使用注释创建hibernate应用程序的示例
1. 为MySQL和注释添加jar文件
2. 创建持久化类
在这里,我们创建一个持久化类: Employee
。并使用注释完成与数据库表:tb_employee
的映射关联。
@Entity
注释将此类标记为实体。
@Table
注释指定要保留此实体的数据的表名。如果不使用@Table
注释,hibernate将使用类名作为表名称bydefault
。
@Id
注释标记此实体的标识符。
@Column
注释指定此属性或字段的列的详细信息。如果未指定@Column
注释,则属性名称将用作列名称bydefault
。
3. 在配置文件中添加持久化类的映射
打开hibernate.cfg.xml文件,并添加如下的映射资源条目:
<mapping class="com.yiibai.Employee"/>
4. 创建检索或存储持久对象的类
在这个类中,我们只是将Employee
类的对象存储到数据库中。在这里,我们使用StandardServiceRegistryBuilder
类和MetadataSources
类从持久化类获取映射的信息。
Test.java
测试类代码如下 -
packagecom
.yiibai
;
importorg
.hibernate
.*
;
importorg
.hibernate
.boot
.MetadataSources
;
importorg
.hibernate
.boot
.registry
.StandardServiceRegistry
;
importorg
.hibernate
.boot
.registry
.StandardServiceRegistryBuilder
;
importorg
.hibernate
.cfg
.*
;
publicclass
Test
{
public
static
void
main(
String
[]args
){
//Session session = new AnnotationConfiguration().configure().buildSessionFactory().openSession();
final
StandardServiceRegistry registry
=new
StandardServiceRegistryBuilder().configure("hibernate.cfg.xml")
.build();
// 2. 根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的的session工厂
SessionFactory sessionFactory
=new
MetadataSources(
registry
).buildMetadata().buildSessionFactory();
/**** 上面是配置准备,下面开始我们的数据库操作 ******/
Session session
=sessionFactory
.openSession();// 从会话工厂获取一个session
Transaction t
=session
.beginTransaction();
Employee e1
=new
Employee();
e1
.setId(1001);
e1
.setFirstName("Yii");
e1
.setLastName("Bai");
Employee e2
=new
Employee();
e2
.setId(1002);
e2
.setFirstName("Min");
e2
.setLastName("Su");
session
.persist(e1
);
session
.persist(e2
);
t
.commit();
session
.close();
System
.out
.println("successfully saved");
}
}
WEB工程
,我们将学习使用hibernate创建一个Web应用程序。对于创建Web应用程序,我们使用JSP表示逻辑层,使用Bean类表示数据,以及使用DAO类操作数据库。