@Entity
将一个 POJO 类注解成一个实体 bean ( 持久化 POJO 类 )
@Table
为实体 bean 映射指定具体的表,如果该注解没有被声明,系统将使用默认值 ( 即实体 bean 不带包名的短类名 )
@Id
将实体bean中的某个属性定义为标识符 ( identifier )
@GeneratedValue
该注解可以定义该标识符的生成策略 ( 默认是AUTO策略 ) :
AUTO— 可以是IDENTITY,或SEQUENCE或TABLE类型,这取决于不同的底层数据库。
TABLE— 使用表保存id值
IDENTITY— 自然递增
SEQUENCE— 序列
@Transient
被注解成 @Transient 的 getter 方法或属性,将不会被持久化,hibernate 会忽略这些字段和属性。
@Basic
所有没有定义注解的属性,等价于在其上面添加了 @Basic 注解.。通过 @Basic注解可以声明属性的获取策略 ( fetch strategy )
@Temporal
在核心的 Java API 中并没有定义时间精度 ( temporal precision )。因此处理时间类型数据时,你还需要定义将其存储在数据库中所预期的精度。
在数据库中,表示时间类型的数据有 DATE,TIME,和 TIMESTAMP 三种精度 ( 即单纯的日期,时间,或者两者兼备 )。 可使用 @Temporal 注解来调整精度。
@Column
将实体 bean 中的属性映射到表中的列。
@Column(
name= "columnName";(1)
booleanunique()defaultfalse;(2)
booleannullable()defaulttrue;(3)
booleaninsertable()defaulttrue;(4)
booleanupdatable()defaulttrue;(5)
StringcolumnDefinition()default"";(6)
Stringtable()default "";(7)
intlength()default 255;(8)
intprecision()default 0; (9)
intscale()default 0; (10)
(1)name可选,列名(默认值是属性名)
(2)unique可选,是否在该列上设置唯一约束(默认值false)
(3)nullable可选,是否设置该列的值可以为空(默认值true)
(4)insertable可选,该列是否作为生成的insert语句中的一个列(默认值true)
(5)updatable可选,该列是否作为生成的update语句中的一个列(默认值true)
(6)columnDefinition可选,为这个特定列覆盖SQL DDL片段 (这可能导致无法在不同数据库间移植)
(7)table可选,定义对应的表(默认为主表)
(8)length可选,列长度(默认值255)
(9)precision可选,列十进制精度(decimal precision)(默认值0)
(10)scale可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)
例:
注 : 注解可以是在属性或 getter 方法上进行声明,但不建议混合使用这两种声明方式,相反,应该尽量避免。另外,由 static 修饰的属性不会被持久化到数据库。
package net.yeah.fancydeepin.po; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import java.io.Serializable; @Entity @Table(name = "user") public class User implements Serializable { private static final long serialVersionUID = 1L; /** * ID,主键 */ private Integer id; /** * 用户名 */ private String name; /** * 昵称 */ private String nickName; /** * 邮箱地址 */ private String email; /** * 注册日期时间 */ private Date registerDate; /** * 最近登录时间 */ private Date recentLoginTime;
/** * 上一次登录时间 */ private Date lastLoginDay; @Id @GeneratedValue public Integer getId() { return id; } @Column(length = 18, nullable = false) public String getName() { return name; } @Transient public String getNickName() { return nickName; } @Column(name = "mail", length = 40, nullable = false) public String getEmail() { return email; } @Temporal(TemporalType.TIMESTAMP) @Column(nullable = false) public Date getRegisterDate() { return registerDate; } @Temporal(TemporalType.TIME) public Date getRecentLoginTime() { return recentLoginTime; } @Temporal(TemporalType.DATE) public Date getLastLoginDay() { return lastLoginDay; } public void setId(Integer id) { this.id = id; } public void setName(String name) { this.name = name; } public void setNickName(String nickName) { this.nickName = nickName; } public void setEmail(String email) { this.email = email; } public void setRegisterDate(Date registerDate) { this.registerDate = registerDate; } public void setRecentLoginTime(Date recentLoginTime) { this.recentLoginTime = recentLoginTime; } public void setLastLoginDay(Date lastLoginDay) { this.lastLoginDay = lastLoginDay; } }
相关推荐
Hibernate 是一款开源的对象关系映射 (ORM) 框架,允许开发人员将 Java 应用程序中的对象映射到数据库表,反之亦然。使用 Hibernate 可以极大地简化数据库访问代码的编写,并提高应用程序的开发效率。本文档将详细...
注解作为Java SE 5引入的新特性之一,在Hibernate中被广泛应用于配置实体类和关联关系。 ##### PO类注解配置(掌握) - **@Entity**:声明类为一个实体,即该类将映射到数据库中的某个表。 - **@Table**:用于指定...
当应用程序实际访问该代理对象的属性或方法时,Hibernate才会执行实际的数据库查询,并且返回实际的实体对象。 Hibernate懒加载的常见问题之一是代理类初始化问题。如果在持久化上下文(Session)之外或事务结束...
通过在POJO类上添加特定的注解或使用XML映射文件,Hibernate能够自动处理对象与数据库之间的转换。 在"hibernate.rar_ant hibernate po_pojo code g"的场景中,开发者可能已经有一个数据库表结构,他们想要利用Ant...
在Java开发领域中,Hibernate作为一种流行的ORM(对象关系映射)框架,被广泛应用于将对象模型映射到基于SQL的关系型数据库上。通过Hibernate,开发者能够更加高效地处理数据库操作,同时减少对原生SQL的依赖,提升...
Hibernate是Java开发中的一款强大的对象关系映射(ORM)框架,它为开发者提供了一种在Java应用程序中操作数据库的面向对象方式,极大地简化了数据库操作的复杂性。通过使用Hibernate,开发者可以避免直接编写SQL语句...
4. **映射文件**:在使用ORM(Object-Relational Mapping)框架时,PO对象与数据库表的映射信息通常会写在XML配置文件或注解中。例如,在Hibernate中,可以使用`@Entity`注解来标记一个类为数据库实体,并用`@Id`...
通过对Hibernate的学习,我们了解了对象持久化的概念及其重要性,并深入探讨了如何利用Hibernate这一ORM框架来简化Java应用与数据库之间的交互。通过合理的配置和最佳实践的应用,可以显著提高应用程序的性能和可...
首先,Hibernate可以作为模型层/数据访问层(DAO)在基于MVC设计模式的Java Web应用中,它通过配置文件和映射文件将Java对象映射到数据库表,并通过操作持久化对象(PO)来执行对数据库的操作,从而实现数据的增删改...
Hibernate是一个开源的对象关系映射(Object-Relational Mapping,简称ORM)框架,它为Java应用程序提供了强大的数据库交互能力。通过使用Hibernate,开发者可以在不直接编写SQL的情况下操作数据库,极大地提高了...
当数据库表的一行被加载到应用程序时,会创建一个对应的PO对象。PO对象的属性通常与数据库表的列一一对应。ORM框架会自动处理PO对象与数据库之间的交互,使得开发者可以更专注于业务逻辑。 3. VO(View Object):...
标题中的“hibernate的映射表生成器”是一个图形用户界面(GUI)工具,专门设计用于帮助开发者自动生成数据表,其基于对象模型(po)和映射文件(XML文件)。这个工具的出现,极大地提高了开发效率,减少了手动创建...
Hibernate通过配置文件和注解将Java对象与数据库表进行映射,简化了数据库访问,降低了对SQL的依赖。 4. **持久化对象(Persistent Objects, PO)**: - PO是与数据库表对应的Java实体类,Hibernate自动将这些对象...
在实际应用中,如果需要更精细的分离,可能会有专门的VO类,将PO转换成VO是为了适应业务需求,例如添加额外的业务逻辑属性或者隐藏敏感信息。 总结起来,这个例子展示了如何在Java中使用Hibernate处理自身关联的...
最新SSH(springmvc4.0+spring4.0+hibernate4.3.4)全注解整合增删改查示例 C3PO数据库连接池,代理事务 初来乍到,不到位的地方还请大家多给给宝贵的意见,不明白的地方随时Q我 21990226,错误的地方狠狠指出 供稿-...
Hibernate是一个强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。在实际应用Hibernate进行开发的过程中,虽然能够享受到它带来的诸多便利,但同时也会遇到各种各样的问题。本文旨在...
Hibernate通过提供对象持久化服务,使得Java应用能透明地与数据库交互。 描述中提到的“spring4与hibernate4集成DEMO”是一个演示项目,展示了如何在Spring 4.x版本和Hibernate 4.x版本之间进行集成。这个DEMO包含...
接着,需要创建持久化类(POJO,Plain Old Java Object),并使用Hibernate的注解来定义对象与数据库表的映射关系。配置文件hibernate.cfg.xml用于设置数据库连接信息和其他配置。然后,可以通过Session接口的save()...