๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์›น๊ณต๋ทฐ/์Šคํ”„๋ง

Entity, Repository ๋ชป ์ฝ์–ด์˜ค๋Š” ๋ฌธ์ œ

by ์ด๋…ธํ‚ค_ 2022. 11. 25.

Entity, Repository ๋ฅผ ์ธ์‹ ๋ชปํ•˜๋Š” ๋ฌธ์ œ 

 

Consider defining a bean of type '~~~~~' in your configuration repository.

Not a managed type: class com.test.entity.function.Function

 

์ด๊ฑธ๋กœ ๋ช‡ ์‹œ๊ฐ„์„ ๋‚ ๋ ธ๋‚˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. 

 

ํ˜„์žฌ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ„ ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ application์ด ์„ ์–ธ๋œ ๊ณณ์—

@EntityScan

@EnableJpaRepositories๋ฅผ ๋‹ฌ์•„๋ผ๊ณ  ํ•œ๋‹ค. 

์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋Š” ์†”๋ฃจ์…˜์˜ ํ•œ ์˜ˆ์ด๋‹ค.

[JPA] ์Šคํ”„๋ง์ด ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ธ์‹ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! — ๊ธฐ๋ก์œผ๋กœ ์ฑ„์›Œ๊ฐ€๋Š” ๊ฐœ๋ฐœ์ž ์ด์•ผ๊ธฐ (tistory.com)

 

[JPA] ์Šคํ”„๋ง์ด ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ธ์‹ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

๊ฐœ๋ฐœํ™˜๊ฒฝ JDK 1.8 MySQL ์Šคํ”„๋ง๋ถ€ํŠธ version 2.4.5 ๋ฐœ๋‹จ JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋‚ด ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋‚ด๊ฐ€ ๋งŒ๋“  ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค. ์‚ฌ๋‚ด ํ”„๋กœ์ ํŠธ๋Š” M

gaebalsogi.tistory.com

๊ทธ๋Ÿฐ๋ฐ ์•„๋ฌด๋ฆฌ ์†”๋ฃจ์…˜์„ ๋”ฐ๋ผํ•ด๋„, @EntityScan์„ ํ•ด๋„, @~Repository๋ฅผ ํ•ด๋„ ๊ณ„์†ํ•ด์„œ ํŠน์ • ํŒจํ‚ค์ง€์— ์„ ์–ธํ•œ Entity, Repository๋ฅผ ์ฝ์–ด์˜ค์ง€ ๋ชปํ–ˆ๋‹ค. 

 

๊ทผ๋ฐ ํŠน์ • ํŒจํ‚ค์ง€ ์•ˆ์˜ Entity์™€ Repository๋Š” ์ž˜ ์Šค์บ”ํ•ด์˜ค๋Š” ๊ฒƒ ๊ฐ™์•„ ๊ทธ ํŒจํ‚ค์ง€ ๋ช…์„ ๊ฒ€์ƒ‰ํ•ด๋ณด์•˜๋”๋‹ˆ... 

(๊ทธ ํŒจํ‚ค์ง€๋ช…์€ taxonomy)

 

JPA๋ฅผ Configuration class์—์„œ

@EnableJpaRepositories(
        basePackages = ""

...

)

์„ ์–ธํ•œ ๊ณณ์— "taxonomy"๋ฅผ ๋‚ด๊ฐ€ ๋ช…์‹œํ•œ ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€!!! 

 

๊ฑฐ๊ธฐ๋‹ค  ์†Œ์Šค์ฝ”๋“œ ๋‚ด๋ถ€์—์„œ setPackageToScan์„ ํ•  ๋•Œ๋„ ํŒจํ‚ค์ง€์— taxonomy๋ผ๊ณ  ๋‚ด๊ฐ€ ๋ช…์‹œ๋ฅผ ํ•ด๋ฒ„๋ ธ๋˜๊ฒƒ.... 

 

๊ทธ๋ž˜์„œ ์•„๋ฌด๋ฆฌ main ํด๋ž˜์Šค์—์„œ EntityScan, EnableRepository ๋ฅผ ์„ค์ •ํ•ด์ค˜๋„ ์•ˆ ๋๋˜ ๊ฒƒ์ด๋‹ค!!! 

 

@Configuration
@EnableTransactionManagement
@PropertySource({"classpath:db-dev.properties"})
@EnableJpaRepositories(
        basePackages = "com.app.repository",  //์›๋ž˜๋Š” com.app.repository.taxonomy
        entityManagerFactoryRef = "entityManagerFactory",
        transactionManagerRef = "transactionManager")
public class DataSourceConfig
{
    private final Environment env;

    public DataSourceConfig(Environment env) {this.env = env;}

    @Primary
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource()
    {
        System.out.println("DATA SOURCE......");
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory()
    {
        final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(true);

        final LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setDataSource(dataSource());
        factory.setPackagesToScan("com.app.model.entity"); //์›๋ž˜๋Š” com.app.model.entity.taxonomy

        final HashMap<String, Object> properties = new HashMap<>();
        properties.put("hibernate.dialect", env.getProperty("spring.jpa.properties.hibernate.dialect"));
        properties.put("hibernate.show-sql", env.getProperty("spring.jpa.show-sql"));
        properties.put("hibernate.format-sql", env.getProperty("spring.jpa.format-sql"));

        factory.setJpaPropertyMap(properties);
//        factory.afterPropertiesSet();

        System.out.println("ENTITY MANAGER FACTORY......");

        return factory;
    }

 

๊ทธ๋ž˜๋„ ์™œ์ธ์ง€ ๋‹ต์„ ์•Œ๊ฒŒ๋˜์„œ ๋‹คํ–‰์ด๋‹ค. 

๋Œ“๊ธ€