BroadLeaf 下定义ORM对象:Province,City,Area

要点:BroadLeaf框架下定义ORM对象需要先定义一个接口, 然后在persistence-unit 的配置中进行声明,如不声明会报错:no persistent classes found for query class

IProvince:

import java.io.Serializable;

import javax.annotation.Nonnull;

public interface IProvince extends Serializable{

    @Nonnull
    public int getProv_Code();

    @Nonnull
    public String getProv_Name();

}

Province:

import javax.persistence.CascadeType;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name = "PROVINCE")
@SuppressWarnings("serial")
public class Province implements IProvince,Serializable{
	@EmbeddedId
	private ProvincePK prov_PK;

	@OneToMany(mappedBy = "province", cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
	@Fetch(FetchMode.SUBSELECT)
	private Set<City> cities;	

	public int getProv_Code() {
		return prov_PK.getProv_Code();
	}

	public String getProv_Name() {
		return prov_PK.getProv_Name();
	}

	public Set<City> getCities() {
		return cities;
	}

	public void setCities(Set<City> cities) {
		this.cities = cities;
	}

	public ProvincePK getProv_PK() {
		return prov_PK;
	}

	public void setProv_PK(ProvincePK prov_PK) {
		this.prov_PK = prov_PK;
	}

}

ProvincePK(联合主键类):

import java.io.Serializable;

import javax.persistence.Embeddable;

@Embeddable
@SuppressWarnings("serial")
public class ProvincePK implements Serializable{

	private int prov_Code;

	private String prov_Name;

	@Override
	public boolean equals(Object obj) {
		if(obj instanceof ProvincePK){
			if(((ProvincePK) obj).getProv_Code() == this.getProv_Code()
					&& ((ProvincePK) obj).getProv_Name().equals(this.getProv_Name())){
				return true;
			}
		}
		return false;
	}

	@Override
	public int hashCode() {
		return prov_Name.hashCode() + prov_Code;
	}

	public int getProv_Code() {
		return prov_Code;
	}

	public void setProv_Code(int prov_Code) {
		this.prov_Code = prov_Code;
	}

	public String getProv_Name() {
		return prov_Name;
	}

	public void setProv_Name(String prov_Name) {
		this.prov_Name = prov_Name;
	}
}

ICity:

public interface ICity extends Serializable{

    @Nonnull
    public int getCity_Code();

    @Nonnull
    public String getCity_Name();

}

City:

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name = "CITY")
@SuppressWarnings("serial")
public class City implements ICity,Serializable{
	@EmbeddedId
	private CityPK city_PK;

	@OneToMany(mappedBy = "city", cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
	@Fetch(FetchMode.SUBSELECT)
	private Set<Area> areas;

	@ManyToOne
	@JoinColumns({@JoinColumn(name = "prov_Code"),@JoinColumn(name = "prov_Name")})
	private Province province;	

	public CityPK getCity_PK() {
		return city_PK;
	}

	public void setCity_PK(CityPK city_PK) {
		this.city_PK = city_PK;
	}

	public Set<Area> getAreas() {
		return areas;
	}

	public void setAreas(Set<Area> areas) {
		this.areas = areas;
	}

	public Province getProvince() {
		return province;
	}

	public void setProvince(Province province) {
		this.province = province;
	}

	@Override
	public int getCity_Code() {
		return city_PK.getCity_Code();
	}

	@Override
	public String getCity_Name() {
		return city_PK.getCity_Name();
	}

}

CityPK:

@Embeddable
@SuppressWarnings("serial")
public class CityPK implements Serializable{

	private int city_Code;

	private String city_Name;

	@Override
	public boolean equals(Object obj) {
		if(obj instanceof ProvincePK){
			if(((CityPK) obj).getCity_Code() == this.getCity_Code()
					&& ((CityPK) obj).getCity_Name().equals(this.getCity_Name())){
				return true;
			}
		}
		return false;
	}

	@Override
	public int hashCode() {
		return city_Name.hashCode() + city_Code;
	}

	public int getCity_Code() {
		return city_Code;
	}

	public void setCity_Code(int city_Code) {
		this.city_Code = city_Code;
	}

	public String getCity_Name() {
		return city_Name;
	}

	public void setCity_Name(String city_Name) {
		this.city_Name = city_Name;
	}

}

IArea:

public interface IArea extends Serializable{

    @Nonnull
    public int getArea_Code();

    @Nonnull
    public String getArea_Name();

}

Area:

@Entity
@Table(name = "CITY_AREA")
@SuppressWarnings("serial")
public class Area implements IArea,Serializable{
	@EmbeddedId
	private AreaPK area_PK;

	@ManyToOne
	@JoinColumns({@JoinColumn(name = "city_Code"),@JoinColumn(name = "city_Name")})
	private City city;	

	public AreaPK getArea_PK() {
		return area_PK;
	}

	public void setArea_PK(AreaPK area_PK) {
		this.area_PK = area_PK;
	}

	public City getCity() {
		return city;
	}

	public void setCity(City city) {
		this.city = city;
	}

	@Override
	public int getArea_Code() {
		return area_PK.getArea_Code();
	}

	@Override
	public String getArea_Name() {
		return area_PK.getArea_Name();
	}
}

AreaPK:

@Embeddable
@SuppressWarnings("serial")
public class AreaPK implements Serializable{

	private int area_Code;

	private String area_Name;

	@Override
	public boolean equals(Object obj) {
		if(obj instanceof ProvincePK){
			if(((AreaPK) obj).getArea_Code() == this.getArea_Code()
					&& ((AreaPK) obj).getArea_Name().equals(this.getArea_Name())){
				return true;
			}
		}
		return false;
	}

	@Override
	public int hashCode() {
		return area_Name.hashCode() + area_Code;
	}

	public int getArea_Code() {
		return area_Code;
	}

	public void setArea_Code(int area_Code) {
		this.area_Code = area_Code;
	}

	public String getArea_Name() {
		return area_Name;
	}

	public void setArea_Name(String area_Name) {
		this.area_Name = area_Name;
	}

}
时间: 2024-10-29 03:05:33

BroadLeaf 下定义ORM对象:Province,City,Area的相关文章

CodeIgniter 下引入ORM Doctrine

做了两年的CI开发,一直使用activeRecord来操作数据库.简单,轻巧加方便.最近一个项目交给手下去做,也是采用从数据库设计入手的开发流程,现在已经上线运行.经历了理清需求,设计数据库,在CI中建立model, controller,需求变更,更改数据库,更改代码,增加需求,更改数据库等过程.回头来看,当需要了解全局代码和业务逻辑需求时,还是得从数据库入手,突然有一种厌烦的感脚:对象的属性都在数据库里,而相关的操作在代码中,觉得很分裂.回想多年前开发的C#与JAVA中都有一些好用的ORM的

第54篇ORM对象关系映射 如何使用ORM与数据可建立连接

1. ORM(对象关系映射) 很多语言的很多web框架中都有这个概念 2. 为什么要有ORM? 1. 写程序离不开数据. 2. 在Python程序中要用到数据库中的数据,怎么办? 1. 使用pymysql连接MySQL数据库的步骤 1. import pymysql 2. 建立连接 conn = pymysql.connect( host='127.0.0.1', port=3306, database='day43', user='root', password='123', charset=

SqlSugar入门到熟练使用 (1) : SqlSugar ORM介绍和ORM对象创建

前言 混迹.Net圈子已经好几年了, 从最初出来使用的SqlHelper 到 微软的企业库, 再到 EF, 再到第三方ORM框架, 经历了一个不可描述的过程, SqlHelper和企业库就不多说了. EF很强大, 但是.....(此处省去一万字), 寻寻觅觅最后发现了几个国内的ORM, 都使用过, 到最后停留在了SqlSugar. SqlSugar相对其它的ORM, 虽然起步较晚一点点, 但是功能却是最强大的, 没有之一, 至少我的使用过程中, 是这样感觉的. 高性能, 强大的Lambda支持(

类的定义与对象的创建.

类的定义与对象的创建 1.实验目的         (1)理解并学会使用类,并创造合适的对象 (2)掌握在什么场景下需要使用 类 2.实验内容 类的定义.类成员的访问控制.对象.类的成员函数 3.实验过程 3.1类和对象 Part1.应用场景 类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐蔽. 在面向对象程序设计中,程序模块是由类构成的.类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述. Part2.定义及代码 3.1.1类的定义 class 类名称 { public:

关于PHP面向对象中—类的定义与对象的实例化操作以及构造、析构函数的特殊用法

类的定义与对象的实例化操作 <?php //类里面的成员是属于对象的class Hero{    public $name;//成员变量    //成员属性(存在于强类型语言中)    protected $blood;    private $attack;    //成员方法    function skill(){        echo "$this->name<br>control";            }} $s = new Hero();//造

java问题:类的定义,对象的定义?

java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里定义的数据和函数在这个对象里都有了.在Java当中,对象是一个类的实体.

ORM : 对象关系映射

ORM 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”.

对你同样重要的非技术贴,8个方法让你成为下一个晋升对象

导读: 我们不是每个人都能有幸碰到一位很优秀的领导,但大多情况下,也不会很不幸的碰到一个我上篇博文<10件事证明你跟错了人>中的领导,实际上,大多数的领导的特征基本相似,技术不错,能力还行,脾气不小. 如果现在你的技术还不行,你需要钱,你不能辞职,你认为你现在的老板能力.胸怀还算不错,你希望他能够注意到你,认可你,提拔你,那么你就必须去遵循一套游戏规则,不管你喜欢与否,都要去按规则执行. 如果你希望你现在的领导认可你,那这篇文章就是为你写的. 1.努力学习技能,体现你的价值 这点必须写在前面,

Dreamweaver8下定义WEB功能页面介绍

dreamweaver8下定义WEB功能页面介绍 说到dreamweaver8,相信大家都比我熟悉,也许有人说dreamweaver8是一个开发工具,那开发工具多了,我自己是这么认为的,dreamweaver8是专业的网页开发工具:由于自己是做运维的,所以在开发的角度我算是一个绝对的菜鸟,可以说是一窍不通,之前就没做过开发先关的东西,现在才开始慢慢接触,所以每天晚上回家看看java.html.jsp相关的文档学习,同时,我们大家都知道一般正常的页面程序文件通过新建超级文本文件来修改扩展名来定义文