spring和hibernate的集成

集成关系图:

项目目录树:

User.java

package com.donghai.bean;

public class User {

    private String id;
    
    private String name;
    
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    
    
}

UserManager.java

package com.donghai.bean;

public interface UserManager {

    public void addUser(String name, String password) throws Exception;
}

UserManagerImpl.java

package com.donghai.bean;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class UserManagerImpl extends HibernateDaoSupport implements UserManager {

    @Override
    public void addUser(String name, String password) throws Exception {

        User user = new User();
        user.setName(name);
        user.setPassword(password);
        
        this.getHibernateTemplate().save(user);
        System.out.println("UserManagerImpl.addUser()---->name: " + name + " password: " + password);
    }

}

User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping>
    <class name="com.donghai.bean.User" table="tbl_user">
        <id name="id">
        <!--  
            <generator class="native" />
        -->
            <generator class="uuid" />
        </id>
        <property name="name" />
        <property name="password" />
    </class>
</hibernate-mapping>

ExportDB.java(数据库导出)

package com.donghai.Client;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class ExportDB {

    public static void main(String[] args){
        Configuration cfg = new Configuration().configure();
        SchemaExport export = new SchemaExport(cfg);
        export.create(true, true);
    }
}

Client.java

package com.donghai.Client;

import org.hibernate.cfg.Configuration;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.donghai.bean.User;
import com.donghai.bean.UserManager;

public class Client {
 
    
    public static void main(String[] args){

//       当struts集成的时候,就把该类也注入到spring中,就不用再new 了
        ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserManager userManager = (UserManager)factory.getBean("userManager");
        try {
            userManager.addUser("ddd", "aaa");
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        
    }
}

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/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://172.16.100.10:3306/hibernate_first?useUnicode=true&amp;characterEncoding=GBK</property>
        <property name="hibernate.connection.username">hibernate</property>
        <property name="hibernate.connection.password">hibernate</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.current_session_context_class">thread</property>
        
        <mapping resource="com/donghai/bean/User.hbm.xml"/>
        
    </session-factory>
</hibernate-configuration>

applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xmlns:aop="http://www.springframework.org/schema/aop"  
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"  
       xsi:schemaLocation="  
       http://www.springframework.org/schema/beans  
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
       http://www.springframework.org/schema/aop  
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
       http://www.springframework.org/schema/context  
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
       " >  
       
      
     <bean id="userManager" class="com.donghai.bean.UserManagerImpl">
         <property name="sessionFactory" ref="sessionFactory" />
     </bean>
      
     <!-- 配置SessionFactory -->
     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
         <property name="configLocation">
             <value>classpath:hibernate.cfg.xml</value>
         </property>
     </bean>

     <!-- 配置事务管理器 -->
     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
         <property name="sessionFactory">
             <ref bean="sessionFactory"/>
         </property>
     </bean>
     
     <!-- 事务的传播特性 -->    
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="del*" propagation="REQUIRED"/>
            <tx:method name="modify*" propagation="REQUIRED"/>
            <tx:method name="*" propagation="REQUIRED" read-only="true"/>
        </tx:attributes>
    </tx:advice>
    
    <aop:config>
         <aop:pointcut expression="execution(* com.donghai.bean.*.*(..))" id="allManagerMethod"/>
         <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
     </aop:config>
</beans>
原文地址:https://www.cnblogs.com/djoker/p/6441305.html