-
实体映射
Hibernate 其核心思想之一是实体映射,它将 Java 对象映射到从而在数据库表中实现面向对象的持久性。它提供了多种映射方法,包括注释映射,XML 映射等,可以满足不同的需求开发者的需求。
例如,开发人员只需要使用注解映射 Java 类上添加 @Entity 注释可以映射成通过数据库表和字段映射 @Column 注解实现。
@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "username") private String username; @Column(name = "passWord") private String password; }
-
查询语言
Hibernate 提供了名为 HQL(Hibernate Query Language)和 QBE(Query By Example)用于查询数据库的查询语言。HQL 它是一种面向对象的查询语言,其语法和 sql 类似,但更简单易懂,避免了冗长的写作 SQL 语句。
// 使用 HQL 查询所有用户 List<User> users = session.createQuery("from User").list(); // 使用 QBE 查询用户名称 "admin" 的用户 User user = session.createNamedQuery("findUserByUsername") .setParameter("username", "admin") .getSingleResult();
-
事务管理
事务是数据库操作的逻辑单元,Hibernate 提供事务管理功能,保证数据库操作的原子性和一致性。Hibernate 以事务管理为基础 Java 事务 api,通过 @Transactional 通过注释声明事务边界 Hibernate 提交和回滚框架自动处理事务。
@Transactional public void saveUser(User user) { session.save(user); }
-
持久和瞬态
Hibernate 将对象分为持久状态和瞬态状态。持久对象是指已保存在数据库中的对象,而瞬态对象是尚未保存在数据库中的对象。Hibernate 根据需要自动跟踪对象的持久状态和瞬态状态,并执行必要的数据库操作。
-
级联操作
级联操作允许开发人员在操作父对象时自动操作相关子对象,从而简化开发人员的工作。Hibernate 提供各种级联操作类型,包括级联保存、级联更新、级联删除等。
@OneToMany(cascade = CascadeType.ALL) private List<Order> orders;
-
延迟加载
延迟加载是一种性能优化技术可以延迟相关对象或集合加载,直到真正需要使用。这有助于减少数据库查询的数量,从而提高应用程序的性能。
@ManyToOne(fetch = FetchType.LAZY) private Company company;
-
乐观锁和悲观锁
Hibernate 提供了乐观锁和悲观锁两种并发控制机制防止并发操作导致数据不一致。乐观锁通过在更新数据时检查数据的版本号来实现并发控制,而悲观锁通过在更新数据时锁定数据来实现并发控制。
@Version private Long version;
-
二级缓存
Hibernate 提供了二级缓存功能可以在内存中缓存经常被访问的数据,从而减少对数据库的访问次数,从而提高应用程序的性能。Hibernate 它提供了多种二次缓存实现,包括 ehcache、infinispan 等。
<property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
-
结语
Hibernate 作为 Java 其强大的功能和良好的性能使其成为许多开发者的首选。本文是 Hibernate 对框架的知识点进行了简单的讲解,帮助读者掌握持久层发展的精髓,轻松应对项目开发中的各种挑战。
掌握 Hibernate 框架的关键知识,迈向持久层开发的高峰
来源:图灵教育
时间:2024-03-25 09:44:59
最新推荐