Я сделал приложение, которое использует средства Swing и Hibernate, и мой учитель сказал мне, что мне нужно сделать связь Client/Server с помощью Socket (это домашняя работа для моего университета). Например, приложение выполняет вставку/обновление/удаление для разных таблиц, и у меня есть JFrame, где пользователь записывает данные, и после нажатия кнопки вставки/обновления/удаления делаются изменения в базе данных. Но я действительно не знаю, как изменить эту программу, чтобы она использовала Socket. На клиенте должна быть кнопка с actionperformed, которая вызывает метод на сервере, который вносит изменения в базу данных и затем возвращает результат клиенту? Или как использовать Socket в этой программе?Как использовать гнездо в моем случае?
Возможно, кто-то может помочь мне с некоторыми идеями. Заранее спасибо!
Вот код, где я использую Свинг и Hibernate:
public class AdaugaProdus extends javax.swing.JFrame {
private final Session session;
public AdaugaProdus() {
session = HibernateUtil.getSessionFactory().openSession();
initComponents();
initComboBoxes();
}
private void initComboBoxes() {
IdFurnComboBox.removeAllItems();
IdCatComboBox.removeAllItems();
IdRaftComboBox.removeAllItems();
List<Furnizor> furnizori = session.createQuery("from Furnizor").list();
for (Furnizor furnizor : furnizori)
IdFurnComboBox.addItem(furnizor);
List<Categorie> categorii = session.createQuery("from Categorie").list();
for (Categorie categorie : categorii)
IdCatComboBox.addItem(categorie);
List<Istoricprod> rafturi = session.createQuery("from Istoricprod").list();
for (Istoricprod raft : rafturi)
IdRaftComboBox.addItem(raft);
}
private void InsereazaButtonActionPerformed(java.awt.event.ActionEvent evt) {
runQueryBasedOnInsert();
}
private void runQueryBasedOnInsert(){
try{
org.hibernate.Transaction tx = session.beginTransaction();
Produs produs = new Produs();
int idFurn = ((Furnizor)IdFurnComboBox.getSelectedItem()).getIdfurn();
Furnizor furnizor = new Furnizor(idFurn);
produs.setFurnizor(furnizor);
int idCat = ((Categorie)IdCatComboBox.getSelectedItem()).getIdcat();
Categorie categorie = new Categorie(idCat);
produs.setCategorie(categorie);
int idRaft = ((Istoricprod)IdRaftComboBox.getSelectedItem()).getIdraft();
Istoricprod istoricprod = new Istoricprod(idRaft);
produs.setIstoricprod(istoricprod);
produs.setDenumire(DenumireTextField.getText());
produs.setCantitate(Integer.parseInt(CantitateTextField.getText()));
produs.setUnitmas(UnitMasTextField.getText());
session.save(produs);
tx.commit();
}
catch(Exception e){
System.out.println(e.getMessage());
}
/*finally{
session.close();
}*/
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AdaugaProdus().setVisible(true);
}
});
}
Почему, по-вашему, вам нужен сокет? Знаете ли вы, для чего используется Socket? Ничто в вашем текущем коде не упоминает Socket. –
Я думаю, что вы можете искать структуру взаимодействия с сервером и клиентом. – krico
@JimGarrison Я не сказал, что использую Socket в своем коде, я имел в виду, что мне нужно (это домашнее задание), и я спросил, как я могу это сделать. Я не знаю, как адаптировать мой код для использования этого средства, потому что мне нужна связь между сервером и клиентом с помощью Sockets. Как я уже сказал в публикации выше: Хорошая идея переместить метод actionperformed() в клиенте (новый файл Java) и вызвать отсюда метод, который находится на сервере (другой файл Java), что делает изменения в базе данных и возвращает результат клиенту? Или как я должен использовать Socket в моем случае? если у кого-то есть идея. – alin