这篇主要讲解Hibernate中Annotation的常用注解和ID的生成策略以及联合主键三块;
首先介绍些常用的Annotation注解:
1. 当表名与类名不一致:
@Table(name=”数据库表名”) (javax.persistence) 如果类名与表名相同可以不用写
2. 当字段名与属性不同:
@Column(name=”_name”) ,相同的话使用@Basic ,@Base 默认可以不写;
3. 设置属性不参与持久化到数据库中:
@Transient
4. 映射时期与时间类型,指定时间精度:
属性一般使用 java.util.data,而不是sql.data!默认数据库则使用 datetime 类型存储属性data;
不设定精度,数据库默认日期和时间都保存!
Annotation中的名字为value=xx,value 可以省略不写
只想保存日期:(数据库字段类型对应 data)
@Temporal(value=TemporalType.DATE) @Temporal(value=TemporalType.DATE)
只想保存时间:(数据库字段类型对应 time)
@Temporal(value=TemporalType.TIME) @Temporal(TemporalType.TIME)
5. 映射枚举类型:
@Enumerated
如果你需要定义枚举类型,那么这样:
@Enumerated(EnumType.STRING) 字符串枚举类型
@Enumerated(EnumType.ORDINAL) 数序(数字)枚举类型(数据库存枚举的下标)
另外一块:字段映射位置放置在getXXX方法上,和放置在成员变量上都可以,但是建议放置getXXX方法上,因为我们的成员变量都是设置private,如果你映射位置放置在成员变量上,那将让Hibernate直接访问我们的私有变量,既然设置私有没必要希望Hibernate直接访问,破坏Java的封装性。
下面介绍Annotation中ID生成策略:
1. 手动指定;没说的之前写过,xml和属性都使用过;@Id
2. 使用 Generator 生成器;
Generator 有很多值:常用的有native , identity, sequence,uuid(id类型 String) ;
使用Generarot帮我们自动生成ID:
@GeneratedValue
注视在 @Id下:
@Id
@GeneratedValue
默认策略 auto/native ;如果你使用MySQL,那么自动使用 auto_increment
指定ID生成策略 @GeneratedValue
@GeneratedValue(strategy=GenerationType.AUTO) @GeneratedValue(strategy=GenerationType.IDENTITY) @GeneratedValue(strategy=GenerationType.SEQUENCE) @GeneratedValue(strategy=GenerationType.TABLE)
这里要注意要使用数据库支持的,比如这里MySQL我们使用IDENTITY ;
GenerationType.TABLE 主要用于跨数据库平台,很少用,标记下;
最后一块:联合主键
在使用Annotation使用联合主键有三种方式:
1. 将你的多个Primary Key放置一个新类中(主键类),并且用注解@Embeddable 声明主键类即可;实体类使用注解@Id指向主键类
2. 将你的多个Primary Key放置一个新类中(主键类),实体类使用注解@EmbeddedId指向主键类即可;
3. 实体类中在所有需要设置为主键的属性上都加入@Id注解,然后在注解实体类下面添加一个如下注解:
@IdClass(value=XXX.class) 这里的XXX对应你的主键类名
3种之中最适合的书写习惯的是第3种,但是第二种比较方便,也很常用;
但是不管哪一种使用方法,对于使用联合主键而言,你的主键类都需要使用Serializable接口,并且重写equals和hashCode函数;
Serializable接口 原因是:序列化就是为了能暂存一些对象到硬盘中;
重写equals函数 , 原因是:内存中的对象区分;
重写hashCode 函数, 原因是:根据哈希码快速索引;
相关推荐
使用hibernate注解,必须要使用库hibernate-commons-annotations,hibernate-core,hibernate-jpa,ejb3-persistence,javassist等
本文档将深入探讨Hibernate注解的使用,帮助开发者更好地理解和利用这些注解来实现对象关系映射(ORM)。 一、Hibernate注解基础 Hibernate注解是一种元数据方式,用于在Java类和属性上声明数据库映射信息,从而...
本主题将深入探讨Hibernate注解的相关知识点。 1. **注解概述**: 注解(Annotations)是Java 5引入的一种元数据,它提供了在源代码中嵌入信息的方式,这些信息可以被编译器或者在运行时的Java虚拟机使用。在...
### Hibernate注解API知识点概述 #### 一、Hibernate注解简介 Hibernate 是一款非常流行的 Java 持久层框架,它极大地简化了数据库操作。在 Hibernate 中,可以通过使用注解来映射对象与数据库表之间的关系,从而...
这个"springmvc+hibernate注解框架整合 demo"是一个示例项目,展示了如何通过注解方式将这两个框架无缝集成。 **Spring MVC 框架** Spring MVC 是 Spring 框架的一部分,它提供了处理HTTP请求、转发响应以及管理...
2. 属性级别注解: - `@Id`: 这个注解用于标识实体的主键字段,每个实体只能有一个`@Id`字段。通过`@GeneratedValue`可以定义主键的生成策略。 - `@GeneratedValue`: 提供了多种主键生成策略,如`AUTO`(默认,...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架。本教程将深入探讨如何使用注解来构建SSH框架,以实现更简洁、高效的应用程序开发。 **Struts2** 是MVC设计模式的一个实现...
在实际项目中,除了这三个核心的Hibernate注解库,可能还需要其他的依赖,例如: - **jta.jar**:Java Transaction API,用于支持分布式事务处理。 - **javax.persistence-api.jar**:JPA规范的API,包含了一些基础...
《Hibernate注解详解》 Hibernate 是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作。在Hibernate中,注解是用于描述Java类及其属性如何映射到数据库表的重要工具。本文将全面解析Hibernate中的...
本实例"spring-hibernate注解配置源码"旨在展示如何在不使用XML配置的情况下,通过注解的方式整合Struts2、Spring和Hibernate,创建一个完整的MVC(模型-视图-控制器)架构的应用。下面将详细介绍这个过程中的关键...
Hibernate 注解映射 Hibernate 注解映射是 Hibernate 框架中的一种映射方式,它使用 Java 注解来描述实体类和数据库表之间的映射关系,提高开发效率。 一、 环境搭建和基本映射 在使用 Hibernate 注解映射之前,...
下面我们将详细讲解如何配置和使用Spring+Hibernate注解声明式事务: 1. **配置Spring**: - 首先,我们需要在Spring配置文件中启用事务管理器,通常是`HibernateTransactionManager`,并配置数据源。 - 然后,...
在本文中,我们将深入探讨Hibernate注解的几个核心方面:级联关系、增删改查操作、二级缓存、日志配置以及注解解析。 1. **级联关系**: Hibernate中的级联关系允许我们在一个实体的操作中自动处理与其关联的其他...
一。实体Bean 每个持久化POJO类都是一个实体Bean, 通过在类的定义中使用 @Entity 注解来进行声明。...Hibernate 可以对类的属性或者方法进行注解。属性对应field类别,方法的 getXxx()对应property类别。
hibernate 注解 annotation 教程
2. **表名注解(@Table)** 如果不希望实体类的类名直接作为表名,可以使用`@Table`注解来指定表名: ```java @Entity @Table(name = "users") public class User { // ... } ``` 3. **主键注解(@Id)** `@Id...
2. Hibernate 库:添加 Hibernate 相关的 JAR 文件到项目的类路径中,包括核心库和注解处理库。 3. 数据库驱动:根据所使用的数据库,添加相应的 JDBC 驱动 JAR 文件。 系统配置主要包括: 1. 为 Hibernate 配置...
在Java的持久化框架Hibernate中,注解是用于简化对象关系映射(ORM)的一种方式。本篇文章将详细探讨在Hibernate中如何使用注解来处理各种关联关系,特别是`mappedBy`属性的用法。 首先,`@OneToMany`注解用于表示...
《Hibernate注解详解》 在Java开发领域,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而随着Java注解的普及,Hibernate也开始广泛采用注解方式来替代XML配置,使得代码更加简洁,...
spring hibernate mvc 注解 完整工程 spring hibernate mvc 注解 完整工程 spring hibernate mvc 注解 完整工程