JavaWeb——Spring的AOP与Hibernate整合操作数据库

JavaWeb——Spring 系列

五、AOP 与 Hibernate 整合操作数据库

  • Spring 中提供了 HibernateTemplate 类和 HibernateDaoSupport 类及其子类,使得能够结合 Hibernate 进行编程。

1、配置数据源

  • 这一步在 applicationContext.xml 中完成,代码如下:
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8"/>
        <property name="username" value="root"/>
        <property name="password" value="*********"/>
    </bean>
    

2、配置 Hibernate 配置文件

  • 新建一个 .hbm.xml 文件,编辑如下代码:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="com.myCode.DAOCode.bean.User" table="user">
            <id name="id" column="id" type="int">
                <generator class="native"/>
            </id>
            <property name="name" type="java.lang.String" length="15">
                <column name="name"/>
            </property>
            <property name="age" type="int">
                <column name="age"/>
            </property>
            <property name="sex" type="java.lang.String" length="4">
                <column name="sex"/>
            </property>
        </class>
    </hibernate-mapping>
    

3、为项目配置 Hibernate

  • 这一步回到 applicationContext.xml 中编辑,如下:
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="hibernateProperties">
            <props>
            	<!-- 由于目标数据库为 MySQL,所以选择数据库方言为MySQLDialect -->
                <prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>
        <property name="mappingResources">
            <list>
                <value>com/myCode/DAOCode/xml/User.hbm.xml</value>
            </list>
        </property>
    </bean>
    <bean id="hibernateUserDAO" class="com.myCode.DAOCode.DAO.HibernateUserDAO">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    

4、新建一个事务类

  • 新建一个 DAO 类作为事务类,代码如下:
    package com.myCode.DAOCode.DAO;
    
    import javax.annotation.Resource;
    
    import com.myCode.DAOCode.bean.User;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.springframework.jdbc.core.support.JdbcDaoSupport;
    import org.springframework.orm.hibernate5.HibernateCallback;
    import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
    import org.springframework.transaction.annotation.Transactional;
    
    @Resource
    @Transactional(readOnly=false)
    public class HibernateUserDAO extends HibernateDaoSupport{
        public void insert(final User user){
            try{
                assert getHibernateTemplate() != null;
                getHibernateTemplate().execute(new HibernateCallback<User>() {
                    @Override
                    public User doInHibernate(Session session) throws HibernateException {
                        session.save(user);
                        return null;
                    }
                });
            }catch (Exception e){
                System.out.println("执行失败,原因:"+e.getMessage());
            }
        }
    }
    

5、执行配置

  • 在执行类里编辑如下代码:
    import com.myCode.DAOCode.DAO.HibernateUserDAO;
    import com.myCode.DAOCode.bean.User;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class HibernateAddUser {
        public static void main(String[] args) {
            BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
            HibernateUserDAO userDAO = (HibernateUserDAO)factory.getBean("hibernateUserDAO");
            User user = new User();
            user.setName("叶灵");
            user.setAge(20);
            user.setSex("男");
           try{
               userDAO.insert(user);
               System.out.println("添加成功");
           }catch (Exception e){
               System.out.println("添加失败,原因:"+e.getMessage());
           }
        }
    }
    

6、执行结果

  • 执行代码之后会在控制台输出如下关键信息:
    Hibernate: 
    insert 
    into
        user
        (name, age, sex) 
    values
        (?, ?, ?)
    添加成功
    
  • 在数据库管理系统的可视化工具中查看 user 表中的数据如下:
    在这里插入图片描述

上一篇
下一篇

发布了146 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42896653/article/details/104024371
今日推荐