• SSH整合之spring整合hibernate


    SSH整合要导入的jar包:

    MySQL中创建数据库

    create database ssh_db;
    ssh_db

    一、spring整合hibernate带有配置文件hibernate.cfg.xml

    1、项目结构:

    2、新建接口UserDao及实现类UserDaoImpl;实现类中有HibernateTemplate 字段及setter方法,是用来执行数据库操作的。  

    package com.hjp.dao;
    
    import com.hjp.domain.User;
    
    /**
     * Created by JiaPeng on 2015/11/21.
     */
    public interface UserDao {
        void save(User user);
    }
    接口UserDao
    package com.hjp.dao.impl;
    
    import com.hjp.dao.UserDao;
    import com.hjp.domain.User;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.springframework.orm.hibernate3.HibernateCallback;
    import org.springframework.orm.hibernate3.HibernateTemplate;
    
    import java.sql.SQLException;
    
    /**
     * Created by JiaPeng on 2015/11/21.
     */
    public class UserDaoImpl implements UserDao {
    
        HibernateTemplate hibernateTemplate;
    
        public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
            this.hibernateTemplate = hibernateTemplate;
        }
    
        @Override
        public void save(User user) {
            this.hibernateTemplate.save(user);
        }
    }
    UserDao实现类UserDaoImpl

     3、新建接口UserService及实现类UserServiceImpl;实现类中有UserDao字段级setter方法,调用userDao中的公共方法

    package com.hjp.service;
    
    import com.hjp.domain.User;
    
    /**
     * Created by JiaPeng on 2015/11/21.
     */
    public interface UserService {
        void register(User user);
    }
    接口UserService
    package com.hjp.service.impl;
    
    import com.hjp.dao.UserDao;
    import com.hjp.domain.User;
    import com.hjp.service.UserService;
    
    /**
     * Created by JiaPeng on 2015/11/21.
     */
    public class UserServiceImpl implements UserService {
    
        private UserDao userDao;
    
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
    
        @Override
        public void register(User user) {
            this.userDao.save(user);
        }
    }
    UserService实现类UserServiceImpl

    4、新建hibernate.cfg.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <!--基本四项-->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ssh_db</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">hjp123</property>
            <!--方言-->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
            <!--sql优化,显示,格式化-->
            <property name="hibernate.show_sql">true</property>
            <property name="hibernate.format_sql">true</property>
            <!--自动创建表-->
            <property name="hibernate.hbm2ddl.auto">update</property>
            <!--整合C3P0-->
            <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
            <!--添加映射文件-->
            <mapping resource="com/hjp/domain/User.hbm.xml"></mapping>
        </session-factory>
    </hibernate-configuration>
    hibernate.cfg.xml

    5、新建applicationContext.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans.xsd
                               http://www.springframework.org/schema/context
                               http://www.springframework.org/schema/context/spring-context.xsd
                               http://www.springframework.org/schema/aop
                               http://www.springframework.org/schema/aop/spring-aop.xsd
                               http://www.springframework.org/schema/tx
                               http://www.springframework.org/schema/tx/spring-tx.xsd">
        <!--获得sessionFactory,spring加载hibernate.cfg.xml文件-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        </bean>
        <!--hibernateTemplate模板-->
        <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!--dao-->
        <bean id="userDao" class="com.hjp.dao.impl.UserDaoImpl">
            <property name="hibernateTemplate" ref="hibernateTemplate"></property>
        </bean>
        <!--service-->
        <bean id="userService" class="com.hjp.service.impl.UserServiceImpl">
           <property name="userDao" ref="userDao"></property>
        </bean>
        <!--事务管理,首先有事务管理器-->
        <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!--事务通知-->
        <tx:advice id="txAdvice" transaction-manager="txManager">
            <tx:attributes>
                <tx:method name="register"/>
            </tx:attributes>
        </tx:advice>
        <!--aop配置-->
        <aop:config>
            <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.hjp.service..*.*(..))"></aop:advisor>
        </aop:config>
    </beans>
    applicationContext

    6、新建测试类TestApp

    package com.hjp.test;
    
    import com.hjp.domain.User;
    import com.hjp.service.UserService;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * Created by JiaPeng on 2015/11/21.
     */
    public class TestApp {
        @Test
        public void demo1() {
            User user=new User();
            user.setUsername("Jack");
            user.setPassword("123");
            String xmlPath = "applicationContext.xml";
            ApplicationContext applicationContext= (ApplicationContext) new ClassPathXmlApplicationContext(xmlPath);
            UserService userService= (UserService) applicationContext.getBean("userService");
            userService.register(user);
        }
    }
    TestApp

     二、spring整合hibernate,没有hibernate.cfg.xml配置文件

    从含有hibernate.cfg.xml配置文件中项目进行删改

    1、删除hibernate.cfg.xml配置文件,修改applicationContext.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans.xsd
                               http://www.springframework.org/schema/context
                               http://www.springframework.org/schema/context/spring-context.xsd
                               http://www.springframework.org/schema/aop
                               http://www.springframework.org/schema/aop/spring-aop.xsd
                               http://www.springframework.org/schema/tx
                               http://www.springframework.org/schema/tx/spring-tx.xsd">
        <!--配置数据源-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh_db"></property>
            <property name="user" value="root"></property>
            <property name="password" value="hjp123"></property>
        </bean>
        <!--获得sessionFactory,spring不再加载hibernate.cfg.xml文件-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <!--注入数据源-->
            <property name="dataSource" ref="dataSource"></property>
            <!--其他属性设置-->
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                </props>
            </property>
            <!--添加映射文件,一般用mappingLocations
                mappingResources 加载映射文件,从src下获取,必须确定指定资源 com/hjp/domain/User.hbm.xml
                mappingLocations 建议带着"classpath:",可用通配符
                    classpath:com/hjp/*/User.hbm.xml 代表目录任意
                    classpath:com/hjp/domain/*.hbm.xml 代表文件名任意
                mappingDirectoryLocations 设置目录 classpath:com/hjp/domain
                mappingJarLocations 从jar中获得配置文件
            -->
            <property name="mappingLocations" value="classpath:com/hjp/domain/User.hbm.xml"></property>
        </bean>
        <!--hibernateTemplate模板-->
        <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!--dao-->
        <bean id="userDao" class="com.hjp.dao.impl.UserDaoImpl">
            <property name="hibernateTemplate" ref="hibernateTemplate"></property>
        </bean>
        <!--service-->
        <bean id="userService" class="com.hjp.service.impl.UserServiceImpl">
           <property name="userDao" ref="userDao"></property>
        </bean>
        <!--事务管理,首先有事务管理器-->
        <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!--事务通知-->
        <tx:advice id="txAdvice" transaction-manager="txManager">
            <tx:attributes>
                <tx:method name="register"/>
            </tx:attributes>
        </tx:advice>
        <!--aop配置-->
        <aop:config>
            <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.hjp.service..*.*(..))"></aop:advisor>
        </aop:config>
    </beans>
    applicationContext.xml

    2、删除hibernate模板,修改applicationContext.xml文件及使UserDao继承HibernateDaoSupport类

    package com.hjp.dao.impl;
    
    import com.hjp.dao.UserDao;
    import com.hjp.domain.User;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.springframework.orm.hibernate3.HibernateCallback;
    import org.springframework.orm.hibernate3.HibernateTemplate;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    
    import java.sql.SQLException;
    
    /**
     * Created by JiaPeng on 2015/11/21.
     */
    public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
    
    //    HibernateTemplate hibernateTemplate;
    //
    //    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
    //        this.hibernateTemplate = hibernateTemplate;
    //    }
    
        @Override
        public void save(User user) {
            this.getHibernateTemplate().save(user);
        }
    }
    UserDaoImpl
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans.xsd
                               http://www.springframework.org/schema/context
                               http://www.springframework.org/schema/context/spring-context.xsd
                               http://www.springframework.org/schema/aop
                               http://www.springframework.org/schema/aop/spring-aop.xsd
                               http://www.springframework.org/schema/tx
                               http://www.springframework.org/schema/tx/spring-tx.xsd">
        <!--配置数据源-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh_db"></property>
            <property name="user" value="root"></property>
            <property name="password" value="hjp123"></property>
        </bean>
        <!--获得sessionFactory,spring不再加载hibernate.cfg.xml文件-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <!--注入数据源-->
            <property name="dataSource" ref="dataSource"></property>
            <!--其他属性设置-->
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                </props>
            </property>
            <!--添加映射文件,一般用mappingLocations
                mappingResources 加载映射文件,从src下获取,必须确定指定资源 com/hjp/domain/User.hbm.xml
                mappingLocations 建议带着"classpath:",可用通配符
                    classpath:com/hjp/*/User.hbm.xml 代表目录任意
                    classpath:com/hjp/domain/*.hbm.xml 代表文件名任意
                mappingDirectoryLocations 设置目录 classpath:com/hjp/domain
                mappingJarLocations 从jar中获得配置文件
            -->
            <property name="mappingLocations" value="classpath:com/hjp/domain/User.hbm.xml"></property>
        </bean>
        <!--hibernateTemplate模板
        <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>-->
        <!--dao
            UserDaoImpl继承了HibernateDaoSupport类,所以只注入sessionFactory即可,在UserDaoImpl实现类
            中可以通过getHibernateTemplate()方法得到hibernate模板对象
        -->
        <bean id="userDao" class="com.hjp.dao.impl.UserDaoImpl">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!--service-->
        <bean id="userService" class="com.hjp.service.impl.UserServiceImpl">
           <property name="userDao" ref="userDao"></property>
        </bean>
        <!--事务管理,首先有事务管理器-->
        <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!--事务通知-->
        <tx:advice id="txAdvice" transaction-manager="txManager">
            <tx:attributes>
                <tx:method name="register"/>
            </tx:attributes>
        </tx:advice>
        <!--aop配置-->
        <aop:config>
            <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.hjp.service..*.*(..))"></aop:advisor>
        </aop:config>
    </beans>
    applicationContext.xml

     补充

    package com.hjp.domain;
    
    /**
     * Created by JiaPeng on 2015/11/21.
     */
    public class User {
        private Integer id;
        private String username;
        private String password;
        private Integer age;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    User
    <?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.hjp.domain.User" table="t_user">
            <id name="id">
                <generator class="native"/>
            </id>
            <property name="username" length="50"/>
            <property name="password" length="32"/>
            <property name="age"/>
        </class>
    </hibernate-mapping>
    View Code
  • 相关阅读:
    关于DataGrid最后一页只有一行记录时,删除此记录出错的问题
    数据库开发个人总结(ADO.NET小结)
    MSSQL server数据库开发精典技巧
    愈强愈勇(奥运六星)
    中国与日本的生活对比 转)
    古龙妙语录
    DataGrid单击行时改变颜色
    VS.NET 2003 控件命名规范
    qt国际化
    Histogram matching using python, opencv
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/4984276.html
Copyright © 2020-2023  润新知