2016-10-14 40 views
0

我正在創建一個項目,我想在表中創建一個空行,然後能夠將它傳遞到將要加載數據的位置。JDBC DataRow Equivalent

例子 -

insert(DomainObject obj) { 
    // connect to DB 
    // create new row 
    // call methods in hierarchy that insert data into row 
     // such as save(DomainObject obj, DataRow row) 
    // commit 
} 

我一直在試圖使用JdbcRowSet的,但我不知道這是這樣做的正確的方式,事情開始變得凌亂這種做法反正。

編輯:在這種特殊情況下,我不想使用任何框架或ORM。只是普通的舊JDBC。

+0

在JDBC中,您可以在插入過程中爲各個列指定值。如果你想插入一個邏輯記錄,你可以使用像Hibernate這樣的東西來映射一個對象到一行。 –

回答

0

如果你只想使用普通的JDBC,那麼就沒有這種東西。你可以嘗試使用一個行集,但是 - afaik - 它們並不是真正意義上的,在我的(有限)體驗中,包含在Java中的行集參考實現是一個應該避免的錯誤的失敗。

你或者需要使用像Hibernate這樣的ORM,或者像jOOQ這樣的庫,或者spring-jdbc(儘管這些並不是真正按照你想要的方式工作)。

也就是說,你的工作方式是相反的 - 在我看來 - 通常的方式是:首先收集數據,然後將其插入到數據庫中。如果由於某種原因不可行,那麼您首先收集最少量的數據,插入數據,然後收集其餘數據並更新數據庫。

+0

我可以傳遞PreparedStatement嗎?在每個映射類中,我將設置適當的參數。 – hrazzer

+0

@hrazzer你可以,但它會是一個漏洞的抽象,會讓測試變得更加困難,並且會把你的很多代碼緊密地綁定到JDBC上。 –