Project summary
This application was built in Java with SQL persistence to help a micro-entrepreneur manage clients, services and invoices. It is an academic project, but the structure follows real-world patterns.
Java
MySQL/PostgreSQL
MVC
Data model (simplified)
CLIENTE(id, nome, nif, email, telefone)
SERVICO(id, descricao, preco_base)
FATURA(id, id_cliente, data_emissao, total)
ITENS_FATURA(id_fatura, id_servico, quantidade, preco_unitario)
Java entity example
public class Cliente {
private Long id;
private String nome;
private String nif;
private String email;
private String telefone;
// getters, setters, constructors...
@Override
public String toString() {
return nome + " (" + nif + ")";
}
}
DAO example (ClienteDAO)
public class ClienteDAO {
private final Connection conn;
public ClienteDAO(Connection conn) {
this.conn = conn;
}
public void insert(Cliente c) throws SQLException {
String sql = "INSERT INTO CLIENTE (nome, nif, email, telefone) VALUES (?,?,?,?)";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, c.getNome());
ps.setString(2, c.getNif());
ps.setString(3, c.getEmail());
ps.setString(4, c.getTelefone());
ps.executeUpdate();
}
}
public List<Cliente> list() throws SQLException {
List<Cliente> list = new ArrayList<>();
String sql = "SELECT * FROM CLIENTE ORDER BY nome";
try (PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
Cliente c = new Cliente();
c.setId(rs.getLong("id"));
c.setNome(rs.getString("nome"));
c.setNif(rs.getString("nif"));
c.setEmail(rs.getString("email"));
c.setTelefone(rs.getString("telefone"));
list.add(c);
}
}
return list;
}
}