Hibernate虽说比较好用,但是内容也是太多了,之前看到别人拿他和mybatis相比,确实从结构上来说,mybatis确实比较简单,上手也比较容易,但是没有hibernate自动化程度高,再加上之前接手的项目都是用这个框架写的,所以自然而然。。
一、 认识Hibernate
Hibernate是一个ORM框架,对于ORM应该每个人都很熟了,就不赘述了。之前hibernate是一个包的,但是之后根据功能分出了几个独立的包。
主要的包有如下几个:
- hibernate-core:是Hibernate的核心模块,
- hibernate-entitymanager:是hibernate对JPA的支持;
- hibernate-c3p0:提供了hibernate对c3p0数据库连接池的支持;
- hibernate-java8:对java8中新出现的数据类型的支持;
可以使用maven来配置依赖库,先导入一个最简单的依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.1.Final</version>
</dependency>
要使用hibernate首先要提供一个配置文件,这个文件中包含连接数据库需要的信息,还有可以配置一些数据源的信息。
基本的配置信息如下:
<?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>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">123</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3305/hibernatedemo</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="com/hibernate/entity/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
相信用过JDBC的人都很熟悉了,其中只有一个dialect和mapping是陌生的,dialect是说明对哪个数据库进行支持,mapping是提供要映射到数据库的实体类的配置信息。
其实关于配置mapping有两种方法,一是XML文件的方式,另一种是注解的方式。
有了上面的配置文件,要怎么加载这些配置呢?
使用hibernate自己提供的API,首先在整个应用生命周期的开始创建SessionFactory,有多种方式来完成这一工作,但是通过查看文档,典型的方式使用如下,抛弃了之前使用过的Cnfiguration:
// A SessionFactory is set up once for an application
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure() // configures settings from hibernate.cfg.xml
.bu