Search in sources :

Example 46 with EntityManagerFactory

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);
    }
}
Also used : JpaCache(org.eclipse.persistence.jpa.JpaCache) EntityManagerFactory(javax.persistence.EntityManagerFactory)

Example 47 with EntityManagerFactory

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();
}
Also used : ServerSession(org.eclipse.persistence.sessions.server.ServerSession) EntityManagerFactoryDelegate(org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate) Transaction(com.haulmont.cuba.core.Transaction) ClassDescriptor(org.eclipse.persistence.descriptors.ClassDescriptor) EntityManagerFactory(javax.persistence.EntityManagerFactory)

Example 48 with EntityManagerFactory

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();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) Teacher(ua.logos.orm.entity.Teacher) BigDecimal(java.math.BigDecimal) Predicate(javax.persistence.criteria.Predicate) EntityManager(javax.persistence.EntityManager) EntityManagerFactory(javax.persistence.EntityManagerFactory) Course(ua.logos.orm.entity.Course)

Example 49 with EntityManagerFactory

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();
}
Also used : EntityManager(javax.persistence.EntityManager) Category(ua.logos.orm2.entity.Category) EntityManagerFactory(javax.persistence.EntityManagerFactory) Actor(ua.logos.orm2.entity.Actor)

Example 50 with EntityManagerFactory

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();
}
Also used : Item(org.jpwh.model.cache.Item) EntityManagerFactory(javax.persistence.EntityManagerFactory) Cache(javax.persistence.Cache) Test(org.testng.annotations.Test) JPATest(org.jpwh.env.JPATest)

Aggregations

EntityManagerFactory (javax.persistence.EntityManagerFactory)302 EntityManager (javax.persistence.EntityManager)103 Test (org.junit.Test)90 HashMap (java.util.HashMap)48 EntityTransaction (javax.persistence.EntityTransaction)30 EJBException (javax.ejb.EJBException)22 Map (java.util.Map)17 AssertionFailedError (junit.framework.AssertionFailedError)17 TestFailureException (org.apache.openejb.test.TestFailureException)17 ArrayList (java.util.ArrayList)15 JMSException (javax.jms.JMSException)15 KieSession (org.kie.api.runtime.KieSession)14 ProcessInstance (org.kie.api.runtime.process.ProcessInstance)14 Properties (java.util.Properties)13 InitialContext (javax.naming.InitialContext)13 List (java.util.List)12 AbstractBaseTest (org.jbpm.test.util.AbstractBaseTest)12 RemoteException (java.rmi.RemoteException)11 Query (javax.persistence.Query)11 PrintWriter (java.io.PrintWriter)10