Skip to content

Commit

Permalink
update for hibernate 6 compatibility (#26)
Browse files Browse the repository at this point in the history
  • Loading branch information
wglasshusain authored May 19, 2023
1 parent 07c902c commit bddc7d9
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 45 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.github.mihaicostin</groupId>
<artifactId>hibernate-l2-memcached</artifactId>
<version>5.4.2.1</version>
<version>6.2.1.Fork</version>
<name>hibernate-l2-memcached</name>
<description>A library for using Memcached as a second level distributed cache in Hibernate.</description>
<url>https://github.com/mihaicostin/hibernate-l2-memcached</url>
Expand Down Expand Up @@ -39,7 +39,7 @@
</distributionManagement>

<properties>
<hibernate-core.version>5.4.24.Final</hibernate-core.version>
<hibernate-core.version>6.2.1.Final</hibernate-core.version>
<spymemcached.version>2.12.3</spymemcached.version>
<slf4j-api.version>1.5.6</slf4j-api.version>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ private String defaultRegionName(String regionName, SessionFactoryImplementor se
// Maybe the user configured caches explicitly with legacy names; try them and use the first that exists
for (String legacyDefaultRegionName : legacyDefaultRegionNames) {
if (cacheExists(legacyDefaultRegionName, sessionFactory)) {
SecondLevelCacheLogger.INSTANCE.usingLegacyCacheName(defaultRegionName, legacyDefaultRegionName);
SecondLevelCacheLogger.L2CACHE_LOGGER.usingLegacyCacheName(defaultRegionName, legacyDefaultRegionName);
return legacyDefaultRegionName;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public void testQueryCacheQuickExpire() throws Exception {

Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.save(p);
session.persist(p);
transaction.commit();

session.get(Person.class, 10L);
Expand All @@ -50,7 +50,7 @@ public void testQueryCacheSlowExpire() throws Exception {

Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.save(p);
session.persist(p);
transaction.commit();

session.get(Person.class, 101L);
Expand All @@ -75,7 +75,7 @@ public void testNoExpireProvided() throws Exception {

Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.save(p);
session.persist(p);
transaction.commit();

session.get(Person.class, anneId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
package com.integration.com.mc.hibernate.memcached;

import com.integration.com.mc.hibernate.memcached.entities.Contact;
import org.hibernate.Criteria;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Root;
import org.hibernate.SessionFactory;
import org.hibernate.jpa.HibernateHints;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.Calendar;
import java.util.Properties;

import static org.hibernate.criterion.Restrictions.eq;
import static org.junit.Assert.*;

public class ContactIntegrationTest extends AbstractHibernateTestCase {
Expand Down Expand Up @@ -66,39 +68,45 @@ public void test() {

@Test
public void testQueryCache() {
Criteria criteria = session.createCriteria(Contact.class)
.add(eq("firstName", "Jon"))
.add(eq("lastName", "Snow"))
.setCacheable(true)
.setCacheRegion("contact.findByFirstNameAndLastName");

assertNotNull(criteria.uniqueResult());

criteria.uniqueResult();
criteria.uniqueResult();
criteria.uniqueResult();
criteria.uniqueResult();

assertEquals(criteria.uniqueResult(), criteria.uniqueResult());
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<Contact> criteriaQuery = criteriaBuilder.createQuery(Contact.class);
Root<Contact> root = criteriaQuery.from(Contact.class);
criteriaQuery.where(criteriaBuilder.equal(root.get("firstName"), "Jon"));
criteriaQuery.where(criteriaBuilder.equal(root.get("lastName"), "Snow"));
Contact contact1 = session.createQuery(criteriaQuery)
.setHint(HibernateHints.HINT_CACHEABLE, true)
.setHint(HibernateHints.HINT_CACHE_REGION, "contact.findByFirstNameAndLastName")
.getSingleResultOrNull();
Contact contact2 = session.createQuery(criteriaQuery)
.setHint(HibernateHints.HINT_CACHEABLE, true)
.setHint(HibernateHints.HINT_CACHE_REGION, "contact.findByFirstNameAndLastName")
.getSingleResultOrNull();

assertNotNull(contact1);
assertEquals(contact1, contact2);
}

@Test
public void testQueryCacheWithDate() throws Exception {

Thread.sleep(1000);

Criteria criteria = session.createCriteria(Contact.class)
.add(eq("firstName", "Jon"))
.add(eq("lastName", "Snow"))
.add(eq("birthday", birthday.getTime()))
.setCacheable(true)
.setCacheRegion("contact.findByFirstNameAndLastNameAndBirthday");

assertNotNull(criteria.uniqueResult());
criteria.uniqueResult();
criteria.uniqueResult();
criteria.uniqueResult();

assertEquals(criteria.uniqueResult(), criteria.uniqueResult());
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<Contact> criteriaQuery = criteriaBuilder.createQuery(Contact.class);
Root<Contact> root = criteriaQuery.from(Contact.class);
criteriaQuery.where(criteriaBuilder.equal(root.get("firstName"), "Jon"));
criteriaQuery.where(criteriaBuilder.equal(root.get("lastName"), "Snow"));
criteriaQuery.where(criteriaBuilder.equal(root.get("birthday"), birthday.getTime()));
Contact contact1 = session.createQuery(criteriaQuery)
.setHint(HibernateHints.HINT_CACHEABLE, true)
.setHint(HibernateHints.HINT_CACHE_REGION, "contact.findByFirstNameAndLastNameAndBirthday")
.getSingleResultOrNull();
Contact contact2 = session.createQuery(criteriaQuery)
.setHint(HibernateHints.HINT_CACHEABLE, true)
.setHint(HibernateHints.HINT_CACHE_REGION, "contact.findByFirstNameAndLastNameAndBirthday")
.getSingleResultOrNull();

assertNotNull(contact1);
assertEquals(contact1, contact2);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Type;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import org.hibernate.usertype.UserType;

import java.util.Date;

@Entity
Expand All @@ -21,7 +23,6 @@ public class Contact {

private String lastName;

@Type(type = "date")
private Date birthday;

public Long getId() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
Expand Down

0 comments on commit bddc7d9

Please sign in to comment.