use of javax.persistence.EntityManagerFactory in project cuba by cuba-platform.
the class OrmCacheSupport method evictEntity.
private void evictEntity(Object entity) {
if (entity != null && !PersistenceHelper.isNew(entity)) {
EntityManagerFactory emf = persistence.getEntityManager().getDelegate().getEntityManagerFactory();
JpaCache cache = (JpaCache) emf.getCache();
cache.evict(entity, true);
}
}
use of javax.persistence.EntityManagerFactory in project cuba by cuba-platform.
the class EntityCacheTestClass method setUp.
@Before
public void setUp() throws Exception {
assertTrue(cont.getSpringAppContext() == AppContext.getApplicationContext());
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManagerFactory emf = cont.entityManager().getDelegate().getEntityManagerFactory();
assertTrue(cont.metadata().getTools().isCacheable(cont.metadata().getClassNN(User.class)));
assertFalse(cont.metadata().getTools().isCacheable(cont.metadata().getClassNN(UserSubstitution.class)));
ServerSession serverSession = ((EntityManagerFactoryDelegate) emf).getServerSession();
ClassDescriptor descriptor = serverSession.getDescriptor(User.class);
assertEquals(500, descriptor.getCachePolicy().getIdentityMapSize());
// assertTrue(Boolean.valueOf((String) emf.getProperties().get("eclipselink.cache.shared.default")));
// assertTrue(Boolean.valueOf((String) emf.getProperties().get("eclipselink.cache.shared.sec$User")));
this.cache = (JpaCache) emf.getCache();
group = cont.metadata().create(Group.class);
group.setName("group-" + group.getId());
cont.entityManager().persist(group);
user = cont.metadata().create(User.class);
user.setLogin("ECTest-" + user.getId());
user.setPassword("111");
user.setGroup(group);
cont.entityManager().persist(user);
user2 = cont.metadata().create(User.class);
user2.setLogin("ECTest-" + user2.getId());
user2.setPassword("111");
user2.setGroup(group);
cont.entityManager().persist(user2);
role = cont.metadata().create(Role.class);
role.setName("Test role");
role.setDescription("Test role descr");
cont.entityManager().persist(role);
userRole = cont.metadata().create(UserRole.class);
userRole.setRole(role);
userRole.setUser(user);
cont.entityManager().persist(userRole);
userSetting = cont.metadata().create(UserSetting.class);
userSetting.setUser(user);
cont.entityManager().persist(userSetting);
tx.commit();
}
cache.clear();
}
use of javax.persistence.EntityManagerFactory in project Logos_Materials_October_2017 by VolodymyrZavada.
the class App method main.
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mysql");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
// for (int i = 1; i <= 100; i++) {
// Teacher teacher = new Teacher("teacher_login#" + i, "teacher_password#" + i);
// teacher.setTeacherDetails(
// new TeacherDetails("First_Name#" + i, "Last_Name#" + i, i + 10, "PC gaming#" + i));
// em.persist(teacher);
// }
// for (int i = 1; i <= 100; i++) {
// Teacher teacher = em.createQuery("SELECT t FROM Teacher t WHERE t.id = :id", Teacher.class)
// .setParameter("id", new Long(i)).getSingleResult();
//
// Course course = new Course("JPQL course #" + i, "JPQL for beginners #" + i, new BigDecimal(i + ".99"));
// course.setTeacher(teacher);
// em.persist(course);
// }
// Teacher teacher = em.createQuery("SELECT t FROM Teacher t WHERE t.id = :id",Teacher.class)
// Об’єкт який дозволяє будувати динамічні запити
CriteriaBuilder cb = em.getCriteriaBuilder();
// Об’єкт запиту параметризований під тип данних що
// буде повернено в результаті виконання
CriteriaQuery<Course> query = cb.createQuery(Course.class);
// Об’єкт який являється блоком FROM в запиті
// Ця частина ідентична частині запиту на JPQL
// FROM Course i
Root<Course> root = query.from(Course.class);
// Це звичайний селект, ідентично SELECT c
query.select(root);
// Після стрічки вище маємо ось такий запит
// SELECT c FROM Course c -- який поверне всі курси з БД
// Тепер потрібно створити умови по яким ми будемо
// фільтрувати товари
// Expression - це об’єкт виразу в блоці WHERE
// Даний вираз означає наступне с.price
Expression<BigDecimal> priceExpression = root.get("price");
// Predicate - це вже умова пошуку
// Є декілька варіантів як її створити
// більшість цих варіантів являється методами CriteriaBuilder
// цей метод робить наступну умову greater than or equal
// тепер у нас є умова WHERE c.price >= 15.99
Predicate pricePredicate = cb.ge(priceExpression, new BigDecimal("15.99"));
// Ще одна умова - less than or equal WHERE c.price <= 19.99
Predicate pricePredicate2 = cb.le(priceExpression, new BigDecimal("19.99"));
// Тепер в нас є 2 умови:
// WHERE c.price >= 15.99
// WHERE c.price <= 19.99
// а потрібно все в одному блоці з оператором AND
// CriteriaBuilder знову має метод який
// підходить для даної затачі
// він приймає будь-яку кількість об’єктів Predicate
// передаємо туди всі що є
// отримаємо один десь такий:
// WHERE c.price >= 15.99 AND WHERE c.price <= 19.99
Predicate allPredicates = cb.and(pricePredicate, pricePredicate2);
// query.where(allPredicates);
Expression<Long> betweenId = root.get("id");
Predicate predicateId = cb.between(betweenId, new Long(5), new Long(15));
// query.where(predicateId);
Expression<String> titleExpression = root.get("title");
Predicate titlePredicate = cb.like(titleExpression, "%2");
Expression<Long> idExpressionLong = root.get("id");
Predicate idExpressionPredicate = cb.ge(idExpressionLong, new Long(10));
Predicate allLikePredicates = cb.and(titlePredicate, idExpressionPredicate);
// query.where(allLikePredicates);
// Якщо умова вимагає пошуку в інших таблицях
// потрібно зробити JOIN
// Як і все в Criteria API це також об’єкт
// який можна отримати викликавши метод .join(String field)
// від об’єкту Root, цим ми змінили блок FROM до такого вигляду
// FROM Course c JOIN c.teacher t
Join<Course, Teacher> teacherjoin = root.join("teacher");
// Це вираз WHERE t.id = 5
Expression<Long> teacherIdJoin = teacherjoin.get("id");
Predicate teacherIdPredicate = cb.equal(teacherIdJoin, new Long(5));
query.where(teacherIdPredicate);
// JOIN і FETCH в Criteria API це різні речі
// і якщо ви хочете зробити fetch
// потрібно його викликати окремо не зважаючи на всі інші JOIN
root.fetch("teacher");
query.distinct(true);
List<Course> courses = em.createQuery(query).getResultList();
courses.forEach(c -> System.out.println(c));
// for (int i = 0; i < 100; i++) {
// Teacher teacher = new Teacher("teacher_login#" + i, "teacher_password#" + i);
// teacher.setTeacherDetails(new TeacherDetails("First_Name#"+i, "Last_Name#" +
// i, i + 10, "PC gaming#" + i));
// em.persist(teacher);
// }
// List<Teacher> teachers = em.createQuery("SELECT t FROM Teacher t",
// Teacher.class).getResultList();
// teachers.forEach(t -> System.out.println(t));
// Teacher teacher = em.createQuery("SELECT t FROM Teacher t WHERE t.id = :id",
// Teacher.class)
// .setParameter("id", new Long(45)).getSingleResult();
// System.out.println(teacher);
// List<Teacher> teachers = em
// .createQuery("SELECT t FROM Teacher t WHERE t.login LIKE '%2' AND t.id > 10",
// Teacher.class)
// .getResultList();
// teachers.forEach(t -> System.out.println(t));
// List<Teacher> teachers = em
// .createQuery("SELECT t FROM Teacher t WHERE t.id BETWEEN :start AND :finish",
// Teacher.class)
// .setParameter("start", new Long(35))
// .setParameter("finish", new Long(60))
// .getResultList();
// teachers.forEach(t -> System.out.println(t));
// List<Teacher> teachers = em.createQuery("SELECT t FROM Teacher t WHERE id IN
// (:ids)", Teacher.class)
// .setParameter("ids", Arrays.asList(new Long(23), new Long(28), new Long(43),
// new Long(60)))
// .getResultList();
// teachers.forEach(t -> System.out.println(t));
// for(int i = 1; i <= 100; i++ ) {
// Teacher teacher = em.createQuery("SELECT t FROM Teacher t WHERE t.id = :id",
// Teacher.class)
// .setParameter("id", new Long(i)).getSingleResult();
//
// Course course = new Course("JPQL course #" + i, "JPQL for beginners #"+i, new
// BigDecimal(i + ".99"));
// course.setTeacher(teacher);
// em.persist(course);
// }
// BigDecimal max = em.createQuery("SELECT max(c.price) FROM Course c",
// BigDecimal.class).getSingleResult();
// System.out.println("MAX: " + max);
//
// BigDecimal min = em.createQuery("SELECT min(c.price) FROM Course c",
// BigDecimal.class).getSingleResult();
// System.out.println("MIN: " + min);
//
// BigDecimal sum = em
// .createQuery("SELECT sum(c.price) FROM Course c WHERE c.id BETWEEN :first AND
// :last", BigDecimal.class)
// .setParameter("first", new Long(10))
// .setParameter("last", new Long(40))
// .getSingleResult();
// System.out.println("SUM: " + sum);
//
// Double avg = em.createQuery("SELECT avg(c.price) FROM Course c",
// Double.class).getSingleResult();
// System.out.println("SUM: " + avg);
//
// Long count = em.createQuery("SELECT count(c.id) FROM Course c",
// Long.class).getSingleResult();
// System.out.println("Count: " + count);
// JOIN
// JOIN FETCH
// Teacher teacher = em.createQuery("SELECT t FROM Teacher t JOIN t.courses c
// WHERE c.id = :id", Teacher.class)
// .setParameter("id", new Long(20)).getSingleResult();
// System.out.println(teacher + "\n" + teacher.getCourses());
// Teacher teacher = em.createQuery("SELECT t FROM Teacher t WHERE t.id =:id",
// Teacher.class)
// .setParameter("id", new Long(15)).getSingleResult();
// System.out.println(teacher);
// Course course = em.createQuery("SELECT c FROM Course c WHERE c.id = :id",
// Course.class)
// .setParameter("id", new Long(34)).getSingleResult();
// System.out.println(course);
// Teacher teacher = em
// .createQuery("SELECT DISTINCT t FROM Teacher t JOIN FETCH t.courses c WHERE c.id = :id", Teacher.class)
// .setParameter("id", new Long(45)).getSingleResult();
// System.out.println(teacher);
em.getTransaction().commit();
em.close();
factory.close();
}
use of javax.persistence.EntityManagerFactory in project Logos_Materials_October_2017 by VolodymyrZavada.
the class App method main.
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mysql");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Actor actor = new Actor("JENIFFER", "ANISTON", Gender.FEMALE, "FEBRUARY 11, 1969");
em.persist(actor);
Category category = new Category("ADVENTURE");
em.persist(category);
category = new Category("ACTION");
em.persist(category);
category = new Category("COMEDY");
em.persist(category);
category = new Category("HORROR");
em.persist(category);
em.getTransaction().commit();
em.close();
factory.close();
}
use of javax.persistence.EntityManagerFactory in project microservices by pwillhan.
the class SecondLevel method cacheControl.
@Test
public void cacheControl() throws Exception {
CacheTestData testData = storeTestData();
Long USER_ID = testData.users.getFirstId();
Long ITEM_ID = testData.items.getFirstId();
EntityManagerFactory emf = JPA.getEntityManagerFactory();
Cache cache = emf.getCache();
assertTrue(cache.contains(Item.class, ITEM_ID));
cache.evict(Item.class, ITEM_ID);
cache.evict(Item.class);
cache.evictAll();
org.hibernate.Cache hibernateCache = cache.unwrap(org.hibernate.Cache.class);
assertFalse(hibernateCache.containsEntity(Item.class, ITEM_ID));
hibernateCache.evictEntityRegions();
hibernateCache.evictCollectionRegions();
hibernateCache.evictNaturalIdRegions();
hibernateCache.evictQueryRegions();
}
Aggregations