Witam napisałem swój pierwszy kod w Hibernate i teraz chcę opatrzyć go w jakieś byle jakie GUI (Chcę na tym zakończyć 1projekt i iść dalej, a założenie miałem takie aby mieć GUI)
Do JButtona dodałem ActionListenera a w nim chciałem aby pojawił się nowy frame z polami do uzupełniania oraz z guzikiem aby wysłać dane do BAZY.
Lecz wywala mi błąd gdyż w public void actionPerformed(ActionEvent e)
nie widzi mi formuły łączenia z bazą
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase");
EntityManager entityManager = entityManagerFactory.createEntityManager();
Jeżeli dodam formułę EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase");
EntityManager entityManager = entityManagerFactory.createEntityManager();
do środka funkcji ` public void actionPerformed(ActionEvent e)` to wtedy wszystko ładnie śmiga, lecz łączy się z bazą danych po raz kolejny, a chciałbym aby po uruchomieni z programu było już połączenie z bazą danych.
Kod źródłowy:
public class Main {
public static void main(String[] args) {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase");
EntityManager entityManager = entityManagerFactory.createEntityManager();
Funkcje funkcje = new Funkcje();
//GUI
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Click");
JPanel panel = new JPanel();
panel.setLayout(null);
JTextArea textArea = new JTextArea();
textArea.setBounds(190, 50, 200, 300);
panel.add(textArea);
button.setBounds(50, 50, 100, 30);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFrame addKsiazke = new JFrame("Dodaj książkę");
addKsiazke.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
addKsiazke.setSize(250, 350);
JPanel ksiazkaPanel = new JPanel();
ksiazkaPanel.setLayout(null);
JButton ksiazkaDodanie = new JButton("Dodaj");
ksiazkaDodanie.setBounds(60, 270, 100, 30);
ksiazkaPanel.add(ksiazkaDodanie);
//Labele
JLabel imie = new JLabel("Podaj imię:");
JLabel nazwisko = new JLabel("Podaj nazwisko:");
JLabel tytul = new JLabel("Podaj tytul:");
imie.setBounds(70, 10, 150, 30);
nazwisko.setBounds(70, 90, 150, 30);
tytul.setBounds(70, 170, 150, 30);
ksiazkaPanel.add(imie);
ksiazkaPanel.add(nazwisko);
ksiazkaPanel.add(tytul);
//TextField
JTextField imieField = new JTextField();
JTextField nazwiskoField = new JTextField();
JTextField tytulField = new JTextField();
imieField.setBounds(50, 50, 150, 30);
nazwiskoField.setBounds(50, 130, 150, 30);
tytulField.setBounds(50, 210, 150, 30);
ksiazkaPanel.add(imieField);
ksiazkaPanel.add(nazwiskoField);
ksiazkaPanel.add(tytulField);
addKsiazke.add(ksiazkaPanel);
addKsiazke.setResizable(false);
addKsiazke.setVisible(true);
ksiazkaDodanie.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String imieAutora = imieField.getText();
String nazwiskoAutora = nazwiskoField.getText();
String tytulKsiazki = tytulField.getText();
funkcje.addBook(entityManager, imieAutora, nazwiskoAutora, tytulKsiazki);
}
});
}
});
panel.add(button);
frame.add(panel);
frame.setVisible(true);
entityManager.close();
entityManagerFactory.close();
}
}
Error jaki wyskakuje
`Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl@74bf8030 is closed`