Commit 3e3c85d8 by Patryk Czarnik

Update

parent f573fea5
package przyklady;
import hr.model.Department;
import hr.model.Employee;
import hr.model.Job;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
import java.math.BigDecimal;
import java.util.Scanner;
public class P6_Update {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try(EntityManagerFactory emf = Persistence.createEntityManagerFactory("hr");
EntityManager em = emf.createEntityManager()) {
em.getTransaction().begin();
while(true) {
System.out.print("\nPodaj id pracownika: ");
int id = sc.nextInt();
sc.nextLine();
if(id < 0) break;
Employee employee = em.find(Employee.class, id);
if(employee == null) {
System.out.println("Nie ma pracownika o takim ID");
continue;
}
System.out.println(employee.getFirstName() + " " + employee.getLastName());
System.out.print("Podaj nowe nazwisko: ");
String noweNazwisko = sc.nextLine();
employee.setLastName(noweNazwisko);
System.out.print("Podaj zmianę pensji: ");
BigDecimal zmiana = sc.nextBigDecimal();
if(zmiana.compareTo(BigDecimal.ZERO) != 0) {
employee.setSalary(employee.getSalary().add(zmiana));
}
// Wywołanie flush zsynchronizowałoby zmiany dokonane w pamięci ze stanem bazy danych
// (wykonałoby UPDATE, INSERT, DELETE)
// ale bez zakomitowania zmian.
// em.flush();
System.out.println(employee.getFirstName() + " " + employee.getLastName());
}
// Niezależnie od użycia flush, transakcję na końcu trzeba zakomitować, aby zmiany zostały zapisane.
// Jeśli robimy commit, to nie potrzebujemy flush
System.out.println("\nCzy zapisać zmiany? [T/N]");
String command = sc.nextLine();
switch(command.toUpperCase()) {
case "T" -> em.getTransaction().commit();
case "N" -> em.getTransaction().rollback();
}
}
}
}
package przyklady;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
import hr.model.Department;
import hr.model.Employee;
public class P7_AktualizujRekord2 {
public static void main(String[] args) {
try(EntityManagerFactory emf = Persistence.createEntityManagerFactory("hr");
EntityManager em = emf.createEntityManager()) {
em.getTransaction().begin();
Employee king = em.find(Employee.class, 100);
System.out.println(king.getId() + " " + king.getFirstName() + " " + king.getLastName());
Employee kochhar = em.find(Employee.class, 101);
System.out.println(kochhar.getId() + " " + kochhar.getFirstName() + " " + kochhar.getLastName());
Department dep = em.find(Department.class, 90);
System.out.println("departament: " + dep.getDepartmentName());
System.out.println(dep == king.getDepartment());
System.out.println(dep == kochhar.getDepartment());
System.out.println();
System.out.println("Departamenty przed zmianą: "
+ dep.getDepartmentName() + " "
+ king.getDepartment().getDepartmentName() + " "
+ kochhar.getDepartment().getDepartmentName());
king.getDepartment().setDepartmentName("Nowa nazwa");
// king.getDepartment().setDepartmentName("Executive");
System.out.println("Departamenty po zmianie: "
+ dep.getDepartmentName() + " "
+ king.getDepartment().getDepartmentName() + " "
+ kochhar.getDepartment().getDepartmentName());
System.out.println(dep == king.getDepartment());
System.out.println(dep == kochhar.getDepartment());
em.getTransaction().commit();
System.out.println("Zapisane");
}
}
}
package przyklady;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
import hr.model.Country;
import hr.model.Location;
import hr.model.Region;
public class P8_DodajNoweRekordy {
public static void main(String[] args) {
try(EntityManagerFactory emf = Persistence.createEntityManagerFactory("hr");
EntityManager em = emf.createEntityManager()) {
em.getTransaction().begin();
// Utworzyć nowy kraj (my podajemy id) i nową lokalizację (id zostanie wygenerowane).
Region region = em.find(Region.class, 1);
Country polska = new Country();
polska.setCountryId("PL");
polska.setCountryName("Polska");
polska.setRegion(region);
System.out.println("Zaraz wykonam country.persist...");
em.persist(polska);
System.out.println("Wykonane");
// Dla lokalizacji nie podajemy ID - ono zostanie wygenerowane z sekwencji.
Location loc = new Location();
loc.setCountry(polska);
loc.setStreetAddress("Jasna");
loc.setCity("Warszawa");
loc.setPostalCode("00-123");
System.out.println("id przed dodaniem " + loc.getId());
em.persist(loc);
System.out.println("id po dodaniu " + loc.getId());
// Standard JPA nie daje gwarancji, że id zostało w tym momencie ustawione,
// ale Hibernate tak to implementuje.
em.getTransaction().commit();
// Po zrobieniu commit id na pewno zostało nadane.
System.out.println("id po commit " + loc.getId());
System.out.println("Zapisano.");
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment