当前位置: 代码迷 >> Web前端 >> EWeb4j-1.b.6.5 新的特征介绍―orm pojo篇
  详细解决方案

EWeb4j-1.b.6.5 新的特征介绍―orm pojo篇

热度:484   发布时间:2012-07-15 20:11:38.0
EWeb4j-1.b.6.5 新的特性介绍―orm pojo篇
EWeb4j目前最新版本是1.b.6.4
下载地址:http://code.google.com/p/eweb4j/downloads/list

下一个微版本1.b.6.5将会重点放在如何让各个模块的代码更加简洁。

约定优于配置,将是整洁之道的最佳实践。因此,EWeb4j框架也会采取这种方法。

来看看以下这个pojo类:

package test.po;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.cfuture08.eweb4j.orm.config.annotation.ManyMany;
import com.cfuture08.eweb4j.orm.config.annotation.One;

/**
 * just a po
 * 约定:
 * 1类名以PO、POJO、Entity、Model结尾,取其前面的单词作为数据库表名。
 * 例如类名PetPO,那么映射到的数据表名为Pet
 * 2属性名默认映射到数据表字段名。
 * 但是要注意,被@ManyMany、@Many、@One其中一个注解并且没有@Column注解的属性,
 * 是不会映射到数据库表字段中去的。
 * 3.ID属性,类属性名为id(忽略大小写)自动认为它是数据表的自增长字段并且是主键。
 * 
 * 上一个版本中的pojo中,
 * 类名上面会有@Table注解,
 * 属性名上面会有@Column注解
 * id属性上会有@Id注解。
 * 代码看起来会很不简洁。
 * 很明显,这个版本看起来十分简洁。
 * 
 * @author weiwei
 * 
 */
public class PetPO {
	private Integer id = 0;
	private String name;
	private String type;
	private Date birthday;
	private int age;
	private Date createTime;
	@One(column = "masterId")
	private Master master;
	@ManyMany(target = Master.class, relTable = "t_masterpetrel", from = "petId", to = "masterId")
	private List<Master> masters = new ArrayList<Master>();

	//getter&setter

	public String toString() {
		return "[Pet id:" + this.id + ", name:" + this.name + ", age:"
				+ this.age + ", type:" + this.type + ", birthday:"
				+ this.birthday + ", createTime:" + this.createTime + "]";
	}
}


对比下上一个版本的写法:
package test.po;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.cfuture08.eweb4j.orm.config.annotation.Column;
import com.cfuture08.eweb4j.orm.config.annotation.Id;
import com.cfuture08.eweb4j.orm.config.annotation.ManyMany;
import com.cfuture08.eweb4j.orm.config.annotation.One;
import com.cfuture08.eweb4j.orm.config.annotation.Table;

/**
 * just a po
 * 
 * @author weiwei
 * 
 */
@Table("t_Pet")
public class Pet {
	@Id
	@Column
	private Integer id = 0;
	@Column
	private String name;
	@Column
	private String type;
	private Date birthday;
	@Column
	private int age;
	@One(column="masterId")
	private Master master;
	@ManyMany(target = Master.class, relTable = "t_masterpetrel", from = "petId", to = "masterId")
	private List<Master> masters = new ArrayList<Master>();

	//getter&setter
public String toString() {
		return "[Pet id:" + this.id + ", name:" + this.name + ", age:"
				+ this.age + ", type:" + this.type + ", birthday:"
				+ this.birthday + ", createTime:" + this.createTime + "]";

}



对比之后,代码确实是简洁了不少,这就是约定优于配置的巨大好处了!

重新总结下,EWeb4j-1.b.6.5中,对于ORM的POJO来说,有以下约定:
1.类名,以PO|POJO|Entity|Model结尾,前段部分映射到表明,例如PetPO―>Pet
2.属性名,默认直接映射表字段名,被@Many|@ManyMany|@One注解,且没有@Column注解的属性不会映射到表字段
3.ID属性,名字为”id“(忽略大小写)的话,表示该属性映射到的字段是自增长的且是表主键。

待续...
  相关解决方案