Objetos Java x Objetos SQL

Estou fazendo uma aplicação que utiliza conexão JDBC a um banco de dados PostgreSQL. Criei a tabela Automovel e estava inserindo cada campo da classe usando os métodos da classe PreparedStatement. Meu professor quer que eu insira diretamente uma instância da classe Automóvel na tabela do SQL, mas tenho olhado tutorias, pesquisado pela net e nada encontro a esse respeito. Podem me ajudar?
Além disdso, é possível utilizar JDBC para uma conexão via Internet, por exemplo, com o banco de dados armazenado em uma máquina, eu de outra máquina posso me conectar a ele usando JDBC?

A classe Automovel é assim:
public class Automovel
{
String fabricante;
String numChassis;

 public Automovel(String f, String n)
 {
      fabricante = f;
      numChassis = n;
  }

}

A relação Automovel no banco de dados tem os campos varchar fabricante e numChassis.

Cara,

Faz uma coisa pesquise Hibernate.

E com o JDBC você pode acessar o DB em qualquer lugar, qualquer servidor que lhe permita acesso externo.

[]s

  1. Peca para seu professor explicar melhor o que ele deseja que voce faca. Ou explique melhor a informacao que ele passou pra voce. Porque “inserir diretamente uma instância da classe Automóvel na tabela do SQL” nao faz muito sentido e pode significar muitas coisas, todas elas meio estranhas nesse contexto: usar Hibernate para persistir o objeto diretamente, serializar o objeto e salva-lo em uma tabela com apenas uma coluna, usar algum recurso de mapeamento obscuro de objetos Java para objetos do SGBD (o PostgreSQL suporta objetos internamente - nao sei qual a integracao desse recurso que ele tem com o Java). Enfim, muitas possibilidades. :slight_smile:

  2. Sim, da pra usar JDBC via rede - mas ai entram em jogo as questoes relativas a seguranca: firewall tem que permitir comunicacao naquela porta, banco tem que estar configurado pra aceitar conexoes via rede, etc. Por default o PostgreSQL nao faz isso (procure pelo parametro “tcpip_socket” no postgresql.conf ou entao use o bom e velho “-i” na inicializacao do servidor - tem bastante coisa sobre isso na internet porque eh um problema recorrente).

Marcio Kuchma

Márcio, acho que a hipótese do mapeamento obscuro é a que mais se encaixa. Seria algo assim:
public void insereAuto(Veiculo carro) throws SQLException
{
prepStmt = con.prepareStatement(“INSERT INTO AutoTeste VALUES (?)”);
prepStmt.setObject(1, carro, Types.JAVA_OBJECT);
prepStmt.executeUpdate();
}

public static void main(String[] args) throws ClassNotFoundException, SQLException
{
PreparedSQL teste = new PreparedSQL();
Veiculo auto = new Veiculo(“Teste”, 1999, “AB0Teste”, 15.00);
teste.insereAuto(auto);
}

Sendo que no BD defini uma tabela assim:
CREATE TYPE Auto AS (Fabricante VARCHAR(30), AnoFabric INTEGER, NumChassi VARCHAR(10), Preco REAL);

CREATE TABLE AutoTeste OF Auto;

Mas dá erro: org.postgresql.util.PSQLException: Unsupported Types value: 2,000
Acho que não é possível fazer o que queremos…