У меня есть приложение для предприятия, настроенное для работы с JNDI. Вот конфигурация у меня application.properties
.
spring.datasource.jndi-name=jdbc/MYPRIMARYDATABASE
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.jpa.properties.hibernate.current_session_context_class=jta
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
spring.jackson.serialization-inclusion=NON_NULL
и моя весна главная: Application.java
@SpringBootApplication
@EnableScheduling
@EnableJpaRepositories(basePackages = { "it.mypackage.data.access.database" })
@EntityScan(basePackages = { "it.mypackage.data.access.model" })
@ComponentScan(basePackages = { "it.mypackage" })
public class Application extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
@Bean
public SessionFactory sessionFactory(@Qualifier("entityManagerFactory") EntityManagerFactory emf) {
return emf.unwrap(SessionFactory.class);
}
}
Внутри пакета it.mypackage.data.access.database
есть интерфейс DAO и фасад DAO, которые выполняют операции с источником данных и в пакете it.mypackage.data.access.model
, в котором объявлены все сущности таблицы.
DatabaseDAOFacade.java
@Repository
@Transactional
public class DatabaseDAOFacade implements DatabaseDAOInterface {
private final SessionFactory sf;
@SuppressWarnings("unused")
private EntityManager entityManager;
protected Session getSession() {
return sf.getCurrentSession();
}
@Autowired
public DatabaseDAOFacade(SessionFactory sf, EntityManager entityManager) {
this.sf = sf;
this.entityManager = entityManager;
}
@SuppressWarnings("unchecked")
public <T> T save(T o) {
return (T) this.getSession().save(o);
}
.
.
}
Здесь у меня есть новый объект , который должен использовать дополнительный JNDI
Photo.java
@Entity
@Table(name = "T_PHOTO")
public class Photo {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "PHOTO_REQUEST_SEQ_GEN")
@SequenceGenerator(name = "PHOTO_REQUEST_SEQ_GEN", sequenceName = "PHOTO_REQUESTS")
private Long id;
@Column(name = "USERID")
private String userId;
@Column(name = "UPLOAD_DATE")
private Date uploadDate;
.
.
.
}
Есть ли чистый способ добавить второй JNDI и настроить Photo.java
на использование нового?