Frontend Backend UUID

Raphael_

Aktives Mitglied
Hallo,

Um in meiner MongoDB Datenbank immer eine UUID generieren zu können, damit ich weiß, wie ich auf das Objekt zugreifen kann, stehe ich vor einer Frage, die ich nicht ganz verstehe. Angenommen ein Benutzer klickt jetzt irgendwo hin und ich muss dafür etwas aus der MongoDB abrufen, dann muss das Frontend doch irgendwie die UUID aus der Datenbank kennen, oder nicht? Wie funktioniert das genau?
 

mihe7

Top Contributor
Naja, das, worauf der Benutzer klickt, fällt ja nicht vom Himmel. Bei dessen Erzeugung wird das Element eben mit der ID verknüpft, so dass beim Klick auf das Element bekannt ist bzw. ermittelt werden kann, um welche ID es sich handelt.
 

KonradN

Super-Moderator
Mitarbeiter
Ich verstehe das Problem auch gerade nicht. Du hast in dem Frontend ja das Objekt und mit dem Objekt alle Attribute.

Der einzig interessante Fall ist ein neu erstelltes Objekt. Wenn Du ein Objekt neu erstellst, dann hat dieses meist noch keine Id (Man spricht von der Id des Objektes. UUID ist in der Regel der Datentyp, der verwendet wird). Wenn Du das Objekt speicherst, dann bekommst Du in der Regel das gespeicherte Objekt zurück und damit hast Du dann auch die id, die von der Datenbank erzeugt wurde.

Natürlich kannst Du eine Id auch im Frontend erzeugen statt in der Datenbank. Dann hättest Du das Problem nicht. Hier ist nur wichtig, dass Du halt eine eindeutige id erzeugen musst, was aber bei UUID als sicher angesehen wird.
 
Hallo Raphael,

wenn Du JDBC verwendest, kannst Du die id von der Datenbank bekommen:
In diesem Beispiel ist die variable "item" vom type StatementOfAccount:
"id" ist der Primary Key.

Java:
public class StatementOfAccount {
    private long id;
    
    private String iban;
    private String bic;
    private BigDecimal totalSalesIn;
    private BigDecimal totalSalesOut;
    
    private ArrayList<BookingPosition>  bookingPosition;
    private String account;
    private int no;
    private int year;
    private LocalDate date;

    private LocalDate oldBalanceDate;
    private BigDecimal oldBalance;
    private LocalDate newBalanceDate;
    private BigDecimal newBalance;
....
}

...

String tplPrepInsStatement = "INSERT INTO statementofaccounts (totalin, totalout, oldbalancedate, newbalancedate, no, year,oldbalance,newbalance,accounts_account) VALUES (?,?,?,?,?,?,?,?,?)";

PreparedStatement query = null;
        
query = conn.prepareStatement(tplPrepInsStatement, Statement.RETURN_GENERATED_KEYS);
// Parameter setzen
query.setBigDecimal(1, item.getTotalSalesIn());
query.setBigDecimal(2, item.getTotalSalesOut());
query.setDate(3, toSqlDate(item.getOldBalanceDate()));
query.setDate(4, toSqlDate(item.getNewBalanceDate()));
query.setInt(5, item.getNo());
query.setInt(6, item.getYear());
query.setBigDecimal(7, item.getOldBalance());
query.setBigDecimal(8, item.getNewdBalance());
query.setString(9, item.getAccount());

            
int cnt = query.executeUpdate();
if(cnt > 0) {
    try (ResultSet generatedKeys = query.getGeneratedKeys()) {
        if (generatedKeys.next()) {
            long id = generatedKeys.getLong(1);
            item.setId(id);
        } else {
           throw new SQLException("Creating user failed, no ID obtained.");
        }
    
}
 

Ähnliche Java Themen


Oben