Hibernate基础详解(Hibernate入门到精通:基础概念全解析)

原创
ithorizon 6个月前 (10-20) 阅读数 20 #后端开发

Hibernate基础详解

一、Hibernate简介

Hibernate是一个开源的对象关系映射(ORM)框架,它对JDBC进行了封装,将Java对象映射到数据库中的表,使数据库的操作更加单纯和直观。Hibernate的出现极大地简化了Java持久化层的开发工作。

二、Hibernate核心概念

Hibernate的核心概念首要包括以下几个部分:

  • 持久化对象(Persistent Object)
  • 会话(Session)
  • 事务(Transaction)
  • 缓存(Cache)

三、Hibernate的安装与配置

要使用Hibernate,首先需要下载Hibernate的jar包,并将其添加到项目的classpath中。此外,还需要配置Hibernate的配置文件。

1. 下载Hibernate

从Hibernate的官方网站(https://hibernate.org/orm/)下载所需的版本。

2. 配置Hibernate

Hibernate的配置文件为hibernate.cfg.xml,该文件位于项目的src目录下。以下是一个基本的hibernate.cfg.xml配置示例:

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.connection.password">password</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.show_sql">true</property>

<property name="hibernate.hbm2ddl.auto">update</property>

<mapping resource="com/example/domain/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

四、Hibernate映射

Hibernate映射是将Java对象与数据库表进行相关性的过程。映射可以通过XML文件或注解来实现。

1. XML映射

XML映射文件通常以.hbm.xml为后缀。以下是一个单纯的User类的映射文件示例:

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="com.example.domain.User" table="users">

<id name="id" column="user_id">

<generator class="native"/>

</id>

<property name="username" column="username" type="string"/>

<property name="password" column="password" type="string"/>

</class>

</hibernate-mapping>

2. 注解映射

注解映射是使用Java注解来定义对象关系映射。以下是一个使用注解的User类示例:

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name = "users")

public class User {

@Id

private Long id;

private String username;

private String password;

// 省略getter和setter方法

}

五、Hibernate核心API

Hibernate的核心API首要包括以下几个类:

  • Configuration:配置Hibernate,并创建SessionFactory。
  • SessionFactory:创建Session。
  • Session:执行CRUD操作。
  • Transaction:管理事务。
  • Criteria:构建查询。

1. Configuration

Configuration类用于配置Hibernate,并创建SessionFactory。以下是一个示例:

Configuration configuration = new Configuration();

configuration.configure("hibernate.cfg.xml");

SessionFactory sessionFactory = configuration.buildSessionFactory();

2. SessionFactory

SessionFactory是线程保险的,它用于创建Session。以下是一个示例:

Session session = sessionFactory.openSession();

3. Session

Session是Hibernate操作数据库的核心接口,以下是一个使用Session进行保存操作的示例:

Session session = sessionFactory.openSession();

Transaction transaction = session.beginTransaction();

User user = new User();

user.setUsername("admin");

user.setPassword("password");

session.save(user);

transaction.commit();

session.close();

4. Transaction

Transaction用于管理事务,以下是一个示例:

Transaction transaction = session.beginTransaction();

// 执行数据库操作

transaction.commit();

5. Criteria

Criteria用于构建查询,以下是一个使用Criteria查询User对象的示例:

Session session = sessionFactory.openSession();

Criteria criteria = session.createCriteria(User.class);

List<User> users = criteria.list();

session.close();

六、Hibernate缓存

Hibernate缓存分为一级缓存和二级缓存。一级缓存是Session级别的缓存,默认开启。二级缓存是SessionFactory级别的缓存,需要手动配置。

1. 一级缓存

一级缓存是内置的,无需配置。当我们在一个Session中查询某个对象时,Hibernate会将其缓存起来。如果在同一个Session中再次查询该对象,Hibernate会直接从缓存中获取,而不是再次查询数据库。

2. 二级缓存

二级缓存是跨Session的缓存,需要配置。以下是一个开启二级缓存的示例:

<property name="hibernate.cache.use_second_level_cache" value="true"/>

<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>

七、Hibernate与Spring集成

Hibernate可以与Spring框架集成,通过Spring来管理Hibernate的Session。以下是一个单纯的集成示例:

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

<property name="packagesToScan" value="com.example.domain"/>

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

<prop key="hibernate.show_sql">true</prop>

<prop key="hibernate.hbm2ddl.auto">update</prop>

</props>

</property>

</bean>

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

八、总结

Hibernate作为一个成熟的ORM框架,极大地简化了Java持久化层的开发。通过本文的介绍,我们了解了Hibernate的基础概念、安装与配置、映射、核心API、缓存以及与Spring的集成。掌握这些知识,可以让我们更好地使用Hibernate进行Java持久化层的开发。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门