• spring4整合hibernate5以及出现的问题解决办法


     每一次的学习,都是一小步一小步的进行的,学习语言,重要的是能把hello world写出来

    以及在学习过程中出现的问题能够及时的记录并总结

    spring目前最新的版本是4.3,而hibernate是5.2

    最新版本的学习是要花费很大的勇气进行的

    首先是互联网上几乎没有什么资料可供参考

    其次,这两个框架在一些业务逻辑的处理方法上,和之前的版本有很大的不同

    首先是hibernate,构建sessionfactory不再是3.5以前版本的老办法了

    下面是我的获得sessionfactory方法

    public static SessionFactory getSessionFactory()
        {
            SessionFactory sessionFactory = null;
            final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
                    .configure().build();
            try
            {
                sessionFactory = new MetadataSources(registry).buildMetadata()
                        .buildSessionFactory();
            } catch (Exception e)
            {
                StandardServiceRegistryBuilder.destroy(registry);
            }
            return sessionFactory;
        }

    spring是一个集大成者,可以很好的管理hibernate

    再者。spring aop功能太强大了,利用切面编程可以方便的进行事务管理

    spring中可以直接对hibernate进行配置,所以以前的hibernate.cfg.xml可以直接舍弃掉了

    我们可以在spring配置文件中进行sessionFactory配置,dataSource配置以及事务配置

    <bean id="sessionFactory"
            class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />

    此处注意在hibernate5里面,我们的sessionFactory由spring提供的org.springframework.orm.hibernate5.LocalSessionFactoryBean类进行实例化

    dataSource进行数据源的定义

    我们可以用c3p0进行数据缓冲池

    添加事务支持

    <!-- 配置Hibernate事务管理器 -->
        <bean id="transactionManager"
            class="org.springframework.orm.hibernate5.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory" />
        </bean>
    
    
        <aop:config proxy-target-class="true">
            
            <aop:pointcut expression=" execution(* top.scorpion.service..*(..))"
                id="serviceMethod" />
            
            <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
        </aop:config>
        
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            
            <tx:attributes>
                <tx:method name="*" />
            </tx:attributes>
        </tx:advice>

    这样我们就可以利用spring管理hibernate了

  • 相关阅读:
    js中父窗口获得模态窗口的返回值
    Jquery获取控件值实例(转载)
    各种类库网址学习
    IIS启动网站时, 提示: “另一个程序正在使用此文件,进程无法访问”
    查看端口占用情况
    顽固的换行问题
    mac上共享android手机屏幕软件
    关于软键盘弹出的问题
    mac搭建android studio开发环境
    C语言位域和大小端
  • 原文地址:https://www.cnblogs.com/withscorpion/p/5634399.html
Copyright © 2020-2023  润新知