package sample.context.orm;
import javax.persistence.*;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.orm.jpa.*;
import lombok.*;
/** 標準スキーマのRepositoryを表現します。 */
@Setter
public class DefaultRepository extends OrmRepository {
public static final String BeanNameDs = "dataSource";
public static final String BeanNameEmf = "entityManagerFactory";
public static final String BeanNameTx = "transactionManager";
@PersistenceContext(unitName = BeanNameEmf)
private EntityManager em;
@Override
public EntityManager em() {
return em;
}
/** 標準スキーマのDataSourceを生成します。 */
@ConfigurationProperties(prefix = "extension.datasource.default")
@Data
@EqualsAndHashCode(callSuper = false)
public static class DefaultDataSourceProperties extends OrmDataSourceProperties {
private OrmRepositoryProperties jpa = new OrmRepositoryProperties();
public DataSource dataSource() {
return super.dataSource();
}
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(
final DataSource dataSource) {
return jpa.entityManagerFactoryBean(BeanNameEmf, dataSource);
}
public JpaTransactionManager transactionManager(final EntityManagerFactory emf) {
return jpa.transactionManager(emf);
}
}
}