`
forge
  • 浏览: 23037 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二.对象关系映射-part1

    博客分类:
  • JPA
阅读更多

 

 

一、怎样映射一个实体

一个实体就是简单 Java -a Plain Old Java Object (POJO) ,并遵循下列规则:

  1. 实体类必须标注 @javax.persistence.Entity 注解 ( 或者用 XML 描述为一个实体 )

  2. @javax.persistence.Id 注解必须使用,指出 a primary key

  3. 实体类必须有一个无参的构成函数,并且是 public protected 类型。

  4. 实体类必须是顶级类。枚举或接口不能成为实体类

  5. 实体类不能是 final 类型的。实体的方法和变量也不能是 final 的。

  6. 如果需要远程传输对象,必须实现 Serializable 接口。


我们来看一个最简单的例子:

 

@Entity
public class Book {
	@Id 
	private Long id;
	private String title;
	private Float price;
	private String description;
	private String isbn;
	private Integer nbOfPage;
	private Boolean illustrations;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public Float getPrice() {
		return price;
	}
	public void setPrice(Float price) {
		this.price = price;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getIsbn() {
		return isbn;
	}
	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}
	public Integer getNbOfPage() {
		return nbOfPage;
	}
	public void setNbOfPage(Integer nbOfPage) {
		this.nbOfPage = nbOfPage;
	}
	public Boolean getIllustrations() {
		return illustrations;
	}
	public void setIllustrations(Boolean illustrations) {
		this.illustrations = illustrations;
	}
	
}

 

 

下图表现实体类与数据库映射关系:

 

 

 

二、基于例外的配置

实体类默认映射规则:

1. 实体类名被映射到相同的数据库表名 ( 如: Book 实体被映射到 BOOK ) 。如果你需要映射到另一个表名,你需要用 @Table 注释。

2. 属性名被映射到相同的列名 ( 如: id 属性,或者 getId() 方法,被映射到一个 ID 的列名 ) 。如果你想要修改默认的映射,你需要使用 @Column 注解。

3.Java 基本数据类型用 JDBC 规则映射数据库数据类型。 String 被映射为 VARCHAR,long 被映射为 BIGINT Boolean 被映射为 SMALLINT 等等。 String 默认映射的列大小为 255(VARCHAR(255)). 注意,默认映射规则根据不同的数据库而不同。例如: String Mysql 中被映射为为 VARCHAR ,而在 Oracle 中被映射为 VARCHAR2 Integer Mysql 中被映射为 INT Oracle 中被映射为 NUMBER


根据这些规则, BOOK 实体类被映射到 Mysql 表,其 DDL 为:

 

CREATE TABLE `book` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `description` longtext,
  `illustrations` bit(1) DEFAULT NULL,
  `isbn` varchar(255) DEFAULT NULL,
  `nbOfPage` int(11) DEFAULT NULL,
  `price` float DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) 
  • 大小: 35.5 KB
0
0
分享到:
评论

相关推荐

    Hibernate程序高手秘笈.part01-03.rar

    1. Hibernate概述:Hibernate是一个开放源代码的对象关系映射(ORM)框架,它允许开发人员用面向对象的方式操作数据库。通过提供一种简单的API,Hibernate消除了Java应用程序与传统SQL数据库之间的大部分差异,降低...

    ssm-spring-part.rar

    - **数据访问集成(Data Access/Integration)**:Spring提供了JDBC抽象层,简化了数据库操作,同时支持ORM(对象关系映射)框架如Hibernate和MyBatis。 - **MVC框架(Model-View-Controller)**:Spring MVC是...

    struts-2.3.1.2-part2.rar

    而Hibernate作为持久层框架,简化了数据库操作,提供了ORM(对象关系映射)功能。 SSH框架的整合使得开发者能够更有效地管理应用程序的各个层次,实现松耦合、高复用的设计。例如,通过Spring的DI,可以轻松地更换...

    Hibernate程序高手秘笈.part07-09.rar

    这部分内容主要包含Part07和Part09两个部分,旨在帮助开发者提升在数据库操作和对象关系映射方面的技能。 Part07可能涉及的主题包括: 1. **持久化策略**:讲解了Hibernate的各种持久化策略,如懒加载(Lazy ...

    Hibernate程序高手秘笈.part04-06.rar

    3. **映射文件详解**:详细讲解XML或注解方式的实体映射,包括属性映射、关系映射(一对一、一对多、多对多)、继承映射等。 4. **HQL(Hibernate Query Language)**: Hibernate自己的查询语言,类似于SQL,但更...

    Hibernate程序高手秘笈.part10-11.rar

    1. **二级缓存**:在这一部分,作者会详细讲解如何配置和使用Hibernate的二级缓存,包括EHCache和Infinispan,以及它们在提高应用程序性能方面的作用。 2. **查询缓存**:查询缓存可以存储查询结果,避免重复执行...

    Linq-To-Sql-Part_2-Define-Data-Model-Class

    1. **LINQ to SQL介绍**:LINQ to SQL是.NET Framework中的一个ORM(对象关系映射)工具,它允许开发人员使用.NET类直接操作SQL Server数据库。这种方法极大地简化了数据访问代码,并提供了类型安全和编译时检查。 ...

    XCP协议层标准ASAM_XCP_Part2-Protocol-Layer-Specification_V1-1-0

    本文件《ASAM_XCP_Part2-Protocol-Layer-Specification_V1-1-0》是ASAM XCP协议族中第二部分的内容,专注于协议层的规范说明。 XCP协议族是基于主从结构的通信协议,用于实现从主站(例如上位机软件或测试设备)对...

    hibernate-4.3.5(part1)

    Hibernate是一个流行的开源对象关系映射(ORM)框架,它允许Java开发者在处理数据库时使用面向对象的方式,极大地简化了数据库操作。在这个版本中,我们可能会发现一系列用于数据库交互的API、配置文件、示例代码和...

    hibernate3.3.2jar包part1

    Hibernate,作为一个流行的开源对象关系映射(ORM)框架,为Java开发者提供了一种简单而强大的方式来管理数据库操作。在Java应用中,Hibernate使得开发人员可以将业务逻辑与数据库操作解耦,从而更加专注于应用程序...

    extjs+struts+hibernate+spring(物流管理系统)-part3

    通过ORM(对象关系映射),它将Java对象映射到数据库表,使得开发者可以使用面向对象的方式来操作数据库。 - Spring:是Java企业级应用开发的核心框架,提供依赖注入、AOP(面向切面编程)、事务管理等功能,使得...

    hiberante4.2.3-part01

    Hibernate是Java领域中一款广泛应用的关系对象映射框架,它允许开发者使用面向对象的方式来操作数据库,大大简化了数据访问层的编码工作。这个压缩包“hibernate4.2.3-part01”很可能是Hibernate 4.2.3版本的一部分...

    Hibernate part 8:一对多关联关系映射

    在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本篇文章主要探讨的是Hibernate中的一对多关联关系映射,这是在实际项目开发中非常常见的一种关系映射类型。通过理解并掌握一对多关联,...

    hibernate-distribution-3.3.1.part4

    Hibernate是一个广泛使用的Java库,用于将对象关系映射(ORM)到关系数据库,简化数据库操作,让开发者可以使用面向对象的方式来处理数据库。 在Java世界中,ORM工具如Hibernate消除了手动编写SQL语句的需要,使得...

    Hiberante part 9:一对一关系映射

    Hibernate作为Java领域中最流行的ORM(对象关系映射)工具,它允许开发者以面向对象的方式处理数据库操作,简化了数据库与Java应用程序之间的交互。一对一关系映射是数据库设计中常见的一种关联类型,表示一个实体与...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     22.4.1 配置进程范围内的第二级缓存  22.4.2 配置集群范围内的第二级缓存  22.4.3 在应用程序中管理第二级缓存  22.4.4 Session与第二级缓存的交互模式  22.5 运行本章的范例程序  22.6 小结  22.7 思考题 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     22.4.1 配置进程范围内的第二级缓存  22.4.2 配置集群范围内的第二级缓存  22.4.3 在应用程序中管理第二级缓存  22.4.4 Session与第二级缓存的交互模式  22.5 运行本章的范例程序  22.6 小结  22.7 思考题 ...

Global site tag (gtag.js) - Google Analytics