古いプロジェクトを新しいプラットフォームに移行する必要があります。既にスプリングブートプロジェクトに移行されている他のプロジェクトがありました。しかし、今は私の組織にいない若干の才能あるメンバーによって行われました。Springデータjpaまたはcustome daoの実装
最新のSpring-data-jpa/Hibernate(私はboot + dataでうまくいきます)よりデータアクセス層に次のコードを使用することの利点と欠点を知りたいと思います。
私の個人的なご理解から、それは新しい休止状態のセッションとのその行進を呼び出すと、そのセッションは、そのDAOによって行われた仕事がすぐにコミットされます。ユーザセッション要求が2つのDAOクラスを利用する場合、トランザクション管理がこの場合どのように起こっているか。私はこのコードがこの新しい設定でコンテキストを上回っていることを知っています。あなたの例と間違って何もない、この質問から
究極の期待は、このコードや春のデータを追跡するため、天候のですか?と利点は、事前に
package com.xxxx
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import io.searchbox.client.JestClientFactory;
import org.apache.commons.dbcp2.BasicDataSource;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.util.Locale;
import java.util.Properties;
@Configuration
@SuppressWarnings("PMD.UseSingleton")
@ComponentScan(basePackageClasses = Application.class,
excludeFilters = @Filter({Controller.class, Configuration.class}))
@EnableTransactionManagement
public class ApplicationContextConfig {
@Autowired
private ConnectorConfiguration connectorConfiguration;
@Autowired
private WebNotifyConnectorConfiguration webNotifyConnectorConfiguration;
@Bean(name = "webNotifyDataSource")
public DataSource getWebNotifyDataSource() {
return getBasicDataSource(webNotifyConnectorConfiguration);
}
@Autowired
@Bean(name = "webNotifySessionFactory")
public SessionFactory getWebNotifySessionFactory(DataSource webNotifyDataSource) {
LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(webNotifyDataSource);
sessionBuilder.addProperties(getHibernateProperties());
sessionBuilder.addAnnotatedClasses(PartnerNotify.class);
return sessionBuilder.buildSessionFactory();
}
@Autowired
@Bean(name = "webNotifyTransactionManager")
public HibernateTransactionManager getWebNotifyTransactionManager(SessionFactory webNotifySessionFactory) {
return new HibernateTransactionManager(webNotifySessionFactory);
}
private BasicDataSource getBasicDataSource(IConnectorConfiguration connectorConfiguration) {
final BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(connectorConfiguration.getDriverClassName());
dataSource.setUrl(connectorConfiguration.getConnectionUrl());
dataSource.setUsername(connectorConfiguration.getConnectionUsername());
dataSource.setPassword(connectorConfiguration.getConnectionPassword());
return dataSource;
}
private Properties getHibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.dialect", "org.hibernate.dialect.OracleDialect");
return properties;
}
@Autowired
@Bean(name = "partnerNotifyDao")
public PartnerNotifyDao getPartnerNotifyDao(SessionFactory webNotifySessionFactory) {
return new PartnerNotifyDaoImpl(webNotifySessionFactory);
}
}
おかげで何...