Como inserir, alterar, consultar e excluir dados de uma tabela (complexo)

Prezados, estou com um problema que parece não ter solução e por isso peço a ajuda de vcs. Eu e meus colegas estamos montando um projeto final para faculdade que é o de uma oficina de autos. Para fazer a inclusão de funcionarios, clientes, produtos, veiculos e usuarios foi relativamente tranquilo. Porém estamos com duas tabelas (ORÇAMENTO E ORDEM DE SERVIÇO) que fazem referencia a quase todas as outras e não sabemos como isso ficaria no java. Abaixo segue a tabela orçamento e ordem de serviço.

Tabela Orçamento

create table orcamento(
	id_or serial primary key,
	codveic serial,
	codcli serial,
	dt_cadastro varchar(15) not null,
	vlr_total decimal(12,2) not null,
	status varchar(15) not null,
	validade varchar(15) null,
	dt_reg_empenho varchar(15) null,
	num_empenho varchar(20) null,
	modelo varchar(30) not null,
	marca varchar(20) not null,
	chassi varchar(30) not null,
	cor varchar(20) not null,
	placa varchar(15) not null,
	qtde varchar(4) null,
	codigo serial,
	vlr_venda decimal(12,2) not null,
CONSTRAINT orcveic_id_fkey FOREIGN KEY (codveic) REFERENCES veiculo (placa),
CONSTRAINT orccli_id_fkey FOREIGN KEY (codcli) REFERENCES cliente (cpf),
CONSTRAINT orcveic_modelo_fkey FOREIGN KEY (modelo) REFERENCES veiculo(placa),
CONSTRAINT orcveic_chassi_fkey FOREIGN KEY (chassi) REFERENCES veiculo(placa),
CONSTRAINT orcveic_marca_fkey FOREIGN KEY (marca) REFERENCES veiculo(placa),
CONSTRAINT orcveic_cor_fkey FOREIGN KEY (cor) REFERENCES veiculo(placa),
CONSTRAINT orcveic_placa_fkey FOREIGN KEY (placa) REFERENCES veiculo(placa),
CONSTRAINT orcutil_qtde_fkey FOREIGN KEY (qtde) REFERENCES utiliza(codserv),
CONSTRAINT orcprod_id_fkey FOREIGN KEY (codigo) REFERENCES produto(idprod),
CONSTRAINT orcprod_venda_fkey FOREIGN KEY (vlr_venda) REFERENCES produto(idprod)
);

Tabela Ordem de Serviço

Create Table Ordem_Servico(
	id_os serial ,
	dt_cadastro_os varchar (10) not null,
	dt_Fechamento varchar(10) null,
	form_pag varchar (15) not null,
	status varchar (15) not null,
	marc_combustivel varchar (20),
	quilometragem varchar (20),
	dt_faturamento varchar (10) not null ,
	valor numeric (12,2) not null,
	cod_id_or serial,
	dt_cadastro_or varchar (10) not null,
	validade varchar (15) not null,
	codcli serial,
	marca varchar (15) not null,
	chassi varchar (20) not null,
	cor varchar (15) not null,
	placa varchar (8) not null,
	modelo varchar (15) not null,
	num_empenho varchar (10)null,
	dt_reg_empenho varchar (10) null,
	qtde varchar(4),
	codigo varchar(8),
	nome varchar(20),
	vlr_venda numeric (12,2),
	CONSTRAINT pk_oservico PRIMARY KEY (id_os),
	CONSTRAINT fk_orcamento FOREIGN KEY (cod_id_or) REFERENCES orcamento(id_or),
	CONSTRAINT fk_dtc_or FOREIGN KEY (dt_cadastro_or) REFERENCES orcamento(id_or),
	CONSTRAINT fk_valida FOREIGN KEY (validade) REFERENCES orcamento(id_or),
	CONSTRAINT fk_cliente FOREIGN KEY (codcli) REFERENCES cliente(cpf),
	CONSTRAINT fk_modelo FOREIGN KEY (modelo) REFERENCES veiculo(placa),
	CONSTRAINT fk_marca FOREIGN KEY (marca) REFERENCES veiculo(placa),
	CONSTRAINT fk_chassi FOREIGN KEY (chassi) REFERENCES veiculo(placa),
	CONSTRAINT fk_cor FOREIGN KEY (cor) REFERENCES veiculo(placa),
	CONSTRAINT fk_placa FOREIGN KEY (placa) REFERENCES veiculo(placa),
	CONSTRAINT fk_numemp FOREIGN KEY (num_empenho) REFERENCES orcamento(id_or),
	CONSTRAINT fk_dt_empenho FOREIGN KEY (dt_reg_empenho) REFERENCES orcamento(id_or),
	CONSTRAINT fk_qtde FOREIGN KEY (qtde) REFERENCES utiliza(codserv),
	CONSTRAINT fk_cod FOREIGN KEY (codigo) REFERENCES produto(idprod),
	CONSTRAINT fk_nome FOREIGN KEY (nome) REFERENCES produto(idprod),
	CONSTRAINT fk_vlrvend FOREIGN KEY (vlr_venda) REFERENCES produto(idprod)
);

Nosso problema aqui é como fazer as querys de insert e de update já que para essas tabelas precisariamos utilizar informações das outras tabelas.

[color=red]Segue aqui um trecho de como estamos fazendo com uma tabela só [/color]

public class FornecedorDAO extends GenericDAO<Fornecedor, Long> {
	//ATRIBUTOS
	private String tabName;
	private String QUERY_INSERT;
	private String QUERY_UPDATE;
	private String QUERY_EXCLUI;
	private String QUERY_SELECT_BY_EXAMPLE;
	private String QUERY_SELECT_ONE_BY_ID;
	private String QUERY_SELECT_ALL;
	private String QUERY_SELECT_MAX_ID;
	private int totFornecedor;
	
	private void _mountQueries() {
		QUERY_INSERT = "insert into " + tabName
				+ " (dt_cadastro, razao_social, endereco, complemento, telefone, cep, bairro, cidade, estado, insc_est, cnpj) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
		QUERY_UPDATE = "update  " + tabName + " set dt_cadastro=?, razao_social=?, endereco=?, complemento=?, telefone=?, cep=?, bairro=?, cidade=?, estado=?, insc_est=? where cnpj=?";
		QUERY_EXCLUI = "delete from  " + tabName + "  where codigo=?";
		QUERY_SELECT_BY_EXAMPLE = "select * from  " + tabName
				+ "  where cnpj?";
		QUERY_SELECT_ONE_BY_ID = "select * from  " + tabName + "  where codigo=?";
		QUERY_SELECT_ALL = "select * from  " + tabName + " order by razao_social ";
		QUERY_SELECT_MAX_ID = "select max(id) as maxid from " + tabName;
	}

Se alguém puder nos ajudar por favor agradeceriamos muito… URGENTE !!! :cry:

guting

Procure por:

agregacao e heranca
composicao e dependencia
heranca e dependencia
dependencia e agregacao
agregacao e composicao

t+