读书人

2.对象关系映射-part1

发布时间: 2012-09-07 10:38:15 作者: rapoo

二.对象关系映射-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`)) 

读书人网 >软件架构设计

热点推荐