Hibernate 是一种 ORM(对象关系映射)工具,广泛用于 Java 项目中,用于将对象从应用程序映射到关系数据库中的表。
ORM 是一种促进项目中的类与数据库中的实体之间映射的工具。
通过使用像 Hibernate 这样的框架,开发人员能够专注于开发领域,而不用担心持久性的细节。
Hibernate 的主要特点是:
1.数据访问的透明度:Hibernate 允许开发人员编写只关注对象而不关注持久化细节的 Java 代码
2.事务支持:Hibernate 提供集成的事务控制,促进与不同事务管理器的集成。这确保了数据读写操作以保证数据完整性的方式执行。
3.继承控制:Hibernate允许你灵活地将类之间的继承映射到数据库。有不同的继承映射策略,例如:
单表策略:层次结构中所有类的单个表。
连接表策略:每个具体类都有一个表。
每类表策略:每类一张表。
4.延迟加载:Hibernate 支持延迟加载的概念,即仅在必要时才加载数据集合和关联,从而节省内存资源。
5.验证机制:Hibernate 与 Bean Validation 集成,允许您直接在类注释中定义实体字段的验证规则。
Hibernate 是 JPA 的几种实现之一,JPA 是一个标准规范,定义了如何在 Java 中实现 ORM。
该框架带来了一些好处,例如减少 SQL 和 JDBC 代码,因为 Hibernate 本身会自动生成和执行查询。它还兼容许多关系数据库,如 MySQL、PostgreSQL、MariaDB 等。使用缓存和控制明确定义的事务有助于优化应用程序性能。
然而,使用Hibernate作为它的学习曲线也有缺点,尽管它最简单的操作占大多数,但当我们开始实现缓存、继承映射和分布式事务时,我们一开始可能会遇到理解上的困难。 Hibernate 提供的抽象在某些情况下也会增加开销,特别是在需要高度优化的查询时。
下面我们可以看到一个带有 Product 类的示例,下面是 Hibernate 实现的一些 JPA 注释的说明。
`@Entity
@Table(name = "产品")
公开课产品{
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private BigInteger id; @Column(name = "nome_produto", nullable = false) private String nome; @Column(name = "descricao_produto") private String descricao; @Column(name = "preco_produto", nullable = false) private BigDecimal preco; // Getter e Setters
}`
@Entity
@Entity 注释指示 Product 类是 JPA 实体。这意味着它将被映射到数据库中的表。 Product 类的每个实例对应于该表中的一行。
该类必须有一个带有@id注解的字段,以指示数据库中实体的唯一标识符(主键)。
@Table(name = "产品")
@Table 注释指定该实体将映射到的数据库中的表的名称。在示例中,name = "product" 定义与 Product 实体关联的表将被称为“product”。如果没有提供@Table注解,则表名默认为类名。
@id
@id注解用于将id字段标记为实体的主键。在数据库中,该字段将用作 Product 实体的每个实例的唯一标识符。
@GenerateValue(strategy = GenerationType.SEQUENCE)
@GenerateValue 注解表示 id 字段的值将自动生成。 Strategy = GenerationType.SEQUENCE 属性指定 Hibernate 应该使用序列来生成数据库中的主键值。
还有其他生成主键的策略,例如:
AUTO:将策略的选择委托给持久性提供者(在本例中为 Hibernate)。
IDENTITY:使用数据库中的标识列,在插入过程中自动生成值。
TABLE:使用特定的表来存储主键。
@Column(name = "product_name", nullable = false)
Anotasi @Column memetakan medan nama kelas ke lajur yang sepadan dalam pangkalan data. Dalam contoh, lajur akan dipanggil "nama_produk".
Parameter nullable = false menunjukkan bahawa lajur ini tidak boleh batal dalam pangkalan data. Dalam erti kata lain, medan nama mesti mempunyai nilai.
Hibernate ialah alat yang berkuasa dan fleksibel untuk memanipulasi data dalam aplikasi Java, menghapuskan keperluan untuk menulis SQL secara manual. Ia memudahkan pembangunan aplikasi yang kompleks dengan mengabstraksikan pemetaan antara objek pangkalan data dan jadual dan, kerana serasi dengan spesifikasi JPA, ia menawarkan API piawai, dengan kemungkinan menggunakan fungsi lanjutan.
以上是Hibernate简介的详细内容。更多信息请关注PHP中文网其他相关文章!