Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,8 @@ public void testPessimisticWriteAfterFetchWithDetachedForHibernate() {
});
doInJPA(entityManager -> {
LOGGER.info("Lock and reattach");
entityManager.unwrap(Session.class).lock(post, LockMode.PESSIMISTIC_WRITE);
Post mergedPost = entityManager.merge(post);
entityManager.unwrap(Session.class).lock(mergedPost, LockMode.PESSIMISTIC_WRITE);
post.setTitle("High-Performance Hibernate");
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

import net.ttddyy.dsproxy.listener.logging.SLF4JQueryLoggingListener;
import net.ttddyy.dsproxy.support.ProxyDataSourceBuilder;
import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl;
import org.hibernate.engine.jdbc.connections.internal.DataSourceConnectionProvider;

import javax.sql.DataSource;
import java.util.Map;

/**
* @author Vlad Mihalcea
*/
public class DataSourceProxyConnectionProvider extends DatasourceConnectionProviderImpl {
public class DataSourceProxyConnectionProvider extends DataSourceConnectionProvider {

@Override
public void configure(Map configValues) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.vladmihalcea.hpjp.util.providers.DataSourceProvider;
import com.vladmihalcea.hpjp.util.providers.SQLServerDataSourceProvider;
import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl;
import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProvider;
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -34,7 +34,7 @@ protected void appendDriverProperties(Properties properties) {

@Override
public Class<? extends ConnectionProvider> expectedConnectionProviderClass() {
return DriverManagerConnectionProviderImpl.class;
return DriverManagerConnectionProvider.class;
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.vladmihalcea.hpjp.hibernate.connection;

import com.vladmihalcea.hpjp.util.PersistenceUnitInfoImpl;
import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl;
import org.hibernate.engine.jdbc.connections.internal.DataSourceConnectionProvider;
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;

import java.util.Properties;
Expand All @@ -14,7 +14,7 @@ protected void appendDriverProperties(Properties properties) {

@Override
public Class<? extends ConnectionProvider> expectedConnectionProviderClass() {
return DatasourceConnectionProviderImpl.class;
return DataSourceConnectionProvider.class;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public void testDefaultSwitch() {
fail("Should have thrown MappingException");
} catch (Exception e) {
assertEquals(
"The increment size of the [post_sequence] sequence is set to [3] in the entity mapping while the associated database sequence increment size is [1].",
"The increment size of the [post_sequence] sequence is set to [3] in the entity mapping but the mapped database sequence increment size is [1]",
ExceptionUtil.rootCause(e).getMessage()
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import com.vladmihalcea.hpjp.hibernate.inheritance.spring.dao.SubscriberDAO;
import com.vladmihalcea.hpjp.hibernate.inheritance.spring.model.Subscriber;
import com.vladmihalcea.hpjp.hibernate.inheritance.spring.service.sender.CampaignSender;
import jakarta.annotation.PostConstruct;
import jakarta.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.cfg.Environment;
import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl;
import org.hibernate.engine.jdbc.connections.internal.DataSourceConnectionProvider;
import org.hibernate.engine.jdbc.connections.internal.DataSourceConnectionProvider;
import org.junit.jupiter.api.Test;

import javax.sql.DataSource;
Expand Down Expand Up @@ -85,7 +86,7 @@ private void addTenantConnectionProvider(String tenantId) {
}

private void addTenantConnectionProvider(String tenantId, DataSource tenantDataSource, Map<String, Object> properties) {
DatasourceConnectionProviderImpl connectionProvider = new DatasourceConnectionProviderImpl();
DataSourceConnectionProvider connectionProvider = new DataSourceConnectionProvider();
connectionProvider.setDataSource(tenantDataSource);
connectionProvider.configure(properties);
MultiTenantConnectionProvider.INSTANCE.getConnectionProviderMap().put(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.cfg.Environment;
import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl;
import org.hibernate.engine.jdbc.connections.internal.DataSourceConnectionProvider;
import org.junit.jupiter.api.Test;
import org.postgresql.ds.PGSimpleDataSource;

Expand Down Expand Up @@ -94,7 +94,7 @@ private void addTenantConnectionProvider(String tenantId) {
}

private void addTenantConnectionProvider(String tenantId, DataSource tenantDataSource, Map<String, Object> properties) {
DatasourceConnectionProviderImpl connectionProvider = new DatasourceConnectionProviderImpl();
DataSourceConnectionProvider connectionProvider = new DataSourceConnectionProvider();
connectionProvider.setDataSource(tenantDataSource);
connectionProvider.configure(properties);
MultiTenantConnectionProvider.INSTANCE.getConnectionProviderMap().put(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.vladmihalcea.hpjp.spring.common.AbstractSpringTest;
import com.vladmihalcea.hpjp.spring.data.bytecode.config.SpringDataJPARuntimeBytecodeEnhancementConfiguration;
import com.vladmihalcea.hpjp.spring.data.bytecode.repository.AttachmentRepository;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
Expand All @@ -13,6 +14,7 @@
/**
* @author Vlad Mihalcea
*/
@Disabled
@ContextConfiguration(classes = SpringDataJPARuntimeBytecodeEnhancementConfiguration.class)
public class SpringDataJPARuntimeBytecodeEnhancementTest extends AbstractSpringTest {

Expand All @@ -29,7 +31,17 @@ protected Class<?>[] entities() {
/*
* Run like this:
*
* java -Djavaagent=d:/.m2/repository/org/springframework/spring-instrument/6.2.14/spring-instrument-6.2.14.jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<argLine>-javaagent:d:/.m2/repository/org/springframework/spring-instrument/6.2.14/spring-instrument-6.2.14.jar</argLine>
<systemPropertyVariables>
<hibernate.testing.bytecode.enhancement.extension.engine.enabled>true</hibernate.testing.bytecode.enhancement.extension.engine.enabled>
</systemPropertyVariables>
</configuration>
</plugin>
*/
@Test
public void test() throws URISyntaxException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,13 @@ protected String packageToScan() {
}

public Database database() {
return Database.MYSQL;
return Database.POSTGRESQL;
}

@Override
protected void additionalProperties(Properties properties) {
super.additionalProperties(properties);
properties.put("hibernate.jdbc.batch_size", "100");
properties.put("hibernate.order_inserts", "true");
properties.put(BytecodeSettings.ENHANCER_ENABLE_DIRTY_TRACKING, "false");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.orm.jpa.hibernate.HibernateTransactionManager;
import org.springframework.orm.jpa.hibernate.LocalSessionFactoryBean;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.support.TransactionTemplate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import org.hibernate.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.jpa.hibernate.HibernateTransactionManager;
import org.springframework.transaction.TransactionDefinition;

import java.util.concurrent.atomic.LongAdder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
* @author Vlad Mihalcea
*/
@ContextConfiguration(classes = AtomikosJTATransactionManagerConfiguration.class)
public class AromikosJTATransactionManagerTest extends AbstractSpringTest {
public class AtomikosJTATransactionManagerTest extends AbstractSpringTest {

@Autowired
private ForumService forumService;
Expand Down
40 changes: 22 additions & 18 deletions core/src/test/java/com/vladmihalcea/hpjp/util/AbstractTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,13 @@
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.cache.internal.EnabledCaching;
import org.hibernate.cache.internal.QueryResultsCacheImpl;
import org.hibernate.cache.jcache.internal.JCacheAccessImpl;
import org.hibernate.cache.spi.CacheImplementor;
import org.hibernate.cache.spi.QueryResultsCache;
import org.hibernate.cache.spi.QueryResultsRegion;
import org.hibernate.cache.spi.Region;
import org.hibernate.cache.spi.entry.CollectionCacheEntry;
import org.hibernate.cache.spi.entry.StandardCacheEntryImpl;
import org.hibernate.cache.spi.support.*;
Expand Down Expand Up @@ -1103,18 +1109,12 @@ protected void printCacheRegionStatistics(String region) {
private void printCacheRegionStatisticsEntries(String regionName) {
SessionFactory sessionFactory = sessionFactory();
Statistics statistics = sessionFactory.getStatistics();
if (sessionFactory.getSessionFactoryOptions().isQueryCacheEnabled()) {
ReflectionUtils.invokeMethod(statistics, "getQueryRegionStats", "default-query-results-region");
}

CacheRegionStatistics cacheRegionStatistics = "default-query-results-region".equals(regionName) ?
statistics.getQueryRegionStatistics(regionName) :
statistics.getDomainDataRegionStatistics(regionName);
CacheRegionStatistics cacheRegionStatistics = statistics.getCacheRegionStatistics(regionName);

if (cacheRegionStatistics != null) {
AbstractRegion region = ReflectionUtils.getFieldValue(cacheRegionStatistics, "region");

StorageAccess storageAccess = getStorageAccess(region);
CacheImplementor cacheImplementor = ReflectionUtils.getFieldValue(statistics, "cache");
StorageAccess storageAccess = getStorageAccess(cacheImplementor, regionName);
org.ehcache.core.Ehcache cache = getEhcache(storageAccess);

if (cache != null) {
Expand Down Expand Up @@ -1214,16 +1214,20 @@ private org.ehcache.core.Ehcache getEhcache(StorageAccess storageAccess) {
return ReflectionUtils.getFieldValue(cacheHolder, "ehCache");
}


private StorageAccess getStorageAccess(AbstractRegion region) {
if (region instanceof DirectAccessRegionTemplate) {
DirectAccessRegionTemplate directAccessRegionTemplate = (DirectAccessRegionTemplate) region;
return directAccessRegionTemplate.getStorageAccess();
} else if (region instanceof DomainDataRegionTemplate) {
DomainDataRegionTemplate domainDataRegionTemplate = (DomainDataRegionTemplate) region;
return domainDataRegionTemplate.getCacheStorageAccess();
private StorageAccess getStorageAccess(CacheImplementor cacheImplementor, String regionName) {
Region cacheRegion = null;
Region region = cacheImplementor.getRegion(regionName);
if(region instanceof DomainDataRegionImpl) {
cacheRegion = region;
}
if (regionName.equals("default-query-results-region")) {
QueryResultsCache queryResultsCache = cacheImplementor.getDefaultQueryResultsCache();
cacheRegion = queryResultsCache.getRegion();
}
if (cacheRegion != null) {
return ReflectionUtils.getFieldValue(cacheRegion, "storageAccess");
}
throw new IllegalArgumentException("Unsupported region: " + region);
throw new IllegalArgumentException("Unsupported region: " + regionName);
}

public static String stringValue(Object value) {
Expand Down
2 changes: 1 addition & 1 deletion jooq/jooq-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>4.13.1</version>
</dependency>

<dependency>
Expand Down
29 changes: 25 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>

Expand Down Expand Up @@ -425,6 +429,20 @@
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
Expand Down Expand Up @@ -501,7 +519,7 @@
<logback.version>1.5.6</logback.version>
<commons-lang.version>3.17.0</commons-lang.version>
<jakarta.persistence.version>3.2.0</jakarta.persistence.version>
<hibernate.version>7.1.10.Final</hibernate.version>
<hibernate.version>7.2.0.CR3</hibernate.version>
<hibernate.validator.version>6.2.5.Final</hibernate.validator.version>
<javassist.version>3.18.1-GA</javassist.version>
<ehcache.version>3.10.8</ehcache.version>
Expand Down Expand Up @@ -530,8 +548,8 @@
<flexy-pool.version>3.1.0</flexy-pool.version>

<aspectj.version>1.9.19</aspectj.version>
<spring.version>6.2.13</spring.version>
<spring-data.version>3.5.6</spring-data.version>
<spring.version>7.0.1</spring.version>
<spring-data.version>4.0.0</spring-data.version>

<jackson.version>2.14.3</jackson.version>

Expand All @@ -543,7 +561,7 @@

<hypersistence-optimizer.version>2.8.1</hypersistence-optimizer.version>

<junit.version>5.13.4</junit.version>
<junit.version>6.0.1</junit.version>

<antlr.version>4.13.1</antlr.version>
</properties>
Expand Down Expand Up @@ -575,6 +593,9 @@
<version>${maven-surefire-plugin.version}</version>
<configuration>
<argLine>${argLine}</argLine>
<systemPropertyVariables>
<hibernate.testing.bytecode.enhancement.extension.engine.enabled>true</hibernate.testing.bytecode.enhancement.extension.engine.enabled>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
Expand Down