JavaFx アプリケーションを開発しており、いくつかのモデル クラスに CRUD を使用する必要があります。ジェネリック インターフェイスを作成し、それらのクラスに実装したいと考えています。JavaFXで実装されている例は見つかりませんでした。私はDAOまたはHibernateを使用していません.JDBC接続のみです。
これまでに行ったこと
public interface CrudInterface<T, PK extends Serializable> {
void create(T t);
T read(PK id);
void update(T t);
void delete(T t);
ObservableList<T> getAll();
}
実装:
public class ProductImplementation implements CrudInterface, ProductInterface{
//Other Methods
.
.
.
@Override
public void create(Product product) {
try {
DatabaseConnection localConnection = new DatabaseConnection();
connection = localConnection.getLocalConnection();
connection.setAutoCommit(false);
String query = "INSERT INTO products (product_name, bar_code, product_size, product_cost, product_net_dealer_price, productQuantity, product_alert_quantity, product_tax, product_image, product_invoice_detail, product_category_id, product_subcategory_id, suplier_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, product.getName());
preparedStatement.setString(2, product.getBarcode());
preparedStatement.setString(3, product.getSize());
preparedStatement.setInt(4, product.getPrice());
preparedStatement.setString(5, product.getNetDealerPrice());
preparedStatement.setInt(6, product.getQuantity());
preparedStatement.setInt(7, product.getAlertQuantity());
preparedStatement.setInt(8, product.getTax());
preparedStatement.setString(9, product.getImage());
preparedStatement.setString(10, product.getProductInvoiceDetail());
// preparedStatement.setInt(11, product.getCategories().getCategoryID());
// preparedStatement.setInt(12, product.getSubCategories().getSubCategoryID());
// preparedStatement.setInt(13, product.getSuppliers().getSupplierID());
preparedStatement.execute();
connection.commit();
} catch (SQLException e) {
try {
connection.rollback();
} catch (SQLException ex) {
Logger.getLogger(ProductImplementation.class.getName()).log(Level.SEVERE, null, ex);
}
Logger.getLogger(ProductImplementation.class.getName()).log(Level.SEVERE, null, e);
} finally {
try {
connection.close();
preparedStatement.close();
} catch (SQLException ex) {
Logger.getLogger(ProductImplementation.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
モデルクラスのオブジェクトを渡してデータを作成することができません。ヘルプや提案をいただければ幸いです。
ありがとう
CRUDインターフェースの私の作成メソッドの編集 された署名は
void create(T t);
T
ここで、インターフェイスの実装中にモデル クラスに置き換える必要があります。すなわちProduct
、、、Category
などSubCategory
。
CRUD を使用していくつかのクラスがあり、これらのメソッドを各 Java クラスで個別に繰り返したくないため、Generic Interfaceを作成する必要があります。