首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

2.对象关系映射-part1

2012-09-07 
二.对象关系映射-part1??一、怎样映射一个实体一个实体就是简单Java类-aPlain Old Java Object (POJO),并遵

二.对象关系映射-part1

?

?

一、怎样映射一个实体

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

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

    @javax.persistence.Id注解必须使用,指出aprimary key

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

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

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

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


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

?

?

?

二、基于例外的配置

实体类默认映射规则:

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`)) 

热点排行