Jpa实践

作者: 机器不能学习 | 来源:发表于2018-05-14 21:08 被阅读0次

    这次实践的内容是数据库连接,自动规范查询,分页。

    --本来没有数据库连接 却连了一天

    这里从连接到Mvc记录一遍。


    开始是数据库配置。

    用properties的话特别特别注意

    要先指定该文件的目录再用:

    Properties prop =newProperties();StringrealPath =“.properties”//相对绝对路径都可以,但是要有properties;Stringvalue= prop.getProperty("goopalpayPay_key").toString();

    或者用@PropertySource(value ="file:E:/dev-chinagpay.properties")

    @AutowiredprivateEnvironment env;

    但我都没成功,相对路径绝对路径都试了,大神知道请指点。

    首先应该配置的是datasource 一般我都用ComboPooledDataSource来配置,ComboPooledDataSource dataSource = new ComboPooledDataSource();

            dataSource.setDriverClass("com.mysql.jdbc.Driver");

            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");

            dataSource.setUser("root");

            dataSource.setPassword("root");

            dataSource.setMaxPoolSize(20);

            dataSource.setMinPoolSize(5);

            dataSource.setInitialPoolSize(10);

            dataSource.setMaxIdleTime(300);

            dataSource.setAcquireIncrement(5);

            dataSource.setIdleConnectionTestPeriod(60);

    获得datasource之后才是获得EntityManagerFactory(这东西类似session工厂,可用它获得Entitymanager)。

    @Bean    public EntityManagerFactory entityManagerFactory() {

          HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();

          LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();        factory.setJpaVendorAdapter(vendorAdapter);        //此处com.example.*.model是你的java bean所在的包名

            factory.setPackagesToScan("com.there.Webpro");

          factory.setDataSource(dataSource);        MapjpaProperties = new HashMap();

            factory.setJpaPropertyMap(jpaProperties);

            factory.afterPropertiesSet();

            return factory.getObject();

        }

    然后需要配置事务,没有事务是运行不起来的。

    @Bean

        public PlatformTransactionManager transactionManager() {

            JpaTransactionManager txManager = new JpaTransactionManager();

            txManager.setEntityManagerFactory(entityManagerFactory());

            return txManager;

        }

    现在数据库就配置完了


    现在是将一些继承类

    jpa好处是你继承了一些类,甚至在DAO层不需要实现也能经行操作

    (1) CrudRepository: 继承 Repository,实现了一组 CRUD 相关的方法

    (2)PagingAndSortingRepository: 继承 CrudRepository,实现了一组分页排序相关的方法

    (3)JpaRepository: 继承 PagingAndSortingRepository,实现一组 JPA 规范相关的方法


    分页查询

    分页查询我测试是直接用在规范方法中,自己写的方法里我还没有用过。

    传入DAO操作函数一个 pageable ,可以从多处获取它。

    自己new PageRequest(第几页,每页数据)或者在控制器中直接传入Pageable

    获得的多个数组可以用Page<T>来装。


    我的错误集中在获取上下文的时候,报错:没有该文件。这是怎么回事。我的问题是,没有在配置类上加@compentscan

    相关文章

      网友评论

          本文标题:Jpa实践

          本文链接:https://www.haomeiwen.com/subject/jmtsdftx.html