Spring4.2.3+Hibernate4.3.11整合( IntelliJ maven项目)

1. 在IntelliJ中新建maven项目

给出一个建好的示例

捕获

2. 在pom.xml中配置依赖

包括:
spring-context
spring-orm
hibernate-core
mysql
commons-dbcp
aspectjweaver

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xin</groupId>
    <artifactId>spring-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>4.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.11.Final</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.7</version>
        </dependency>
    </dependencies>
</project>

3. resources右键new一个Xml Configuration File--Spring Config配置文件:spring-config.xml(或者applicationContext.xml)

    配置dataSource、sessionFactory及事务机制。

    可能会提示一个Application Context的什么配置,按提示操作即可;或者在IntelliJ工具的Project Structure下的Facets中进行spring的配置。

spring-config.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:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
              <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
              <property name="url" value="jdbc:mysql://localhost:3306/javaee"/>
              <property name="username" value="root"/>
              <property name="password" value="root"/>
       </bean>
       
       <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
              <property name="dataSource" ref="dataSource"/>
              <property name="mappingResources">
                     <list>
                            <value>com.test.app.domain/User.hbm.xml</value><!--步骤4中的配置-->
                     </list>
              </property>
              <property name="hibernateProperties">
                     <value>
                            hibernate.dialect=org.hibernate.dialect.MySQLDialect
                            hibernate.hbm2ddl.auto=update
                            hibernate.show_sql=true
                            <!--hibernate.format_sql=true-->
                     </value>
              </property>
       </bean>

       <!--步骤5中的配置-->
       <bean id="userDao" class="com.test.app.dao.impl.UserDaoImpl">
              <property name="sessionFactory" ref="sessionFactory"/>
       </bean>

       <!--事务机制-->
       <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
              <property name="sessionFactory" ref="sessionFactory"/>
       </bean>
       <!-- 定义事务规则 -->
       <tx:advice id="txAdvice" transaction-manager="transactionManager">
              <tx:attributes>
                     <tx:method name="get*" read-only="true"/> <!--所有以'get'开头的方法都是read-only的-->
                     <tx:method name="*"/><!-其他方式使用默认的事务设置-->
              </tx:attributes>
       </tx:advice>
       <!-- 定义事务入口 -->
       <aop:config>
              <aop:pointcut id="txPointcut" expression="execution(* com.test.app.dao.impl.*.*(..))" />
              <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
       </aop:config>
</beans>

4. 新建User实体类,及配置文件User.hbm.xml(置于resources目录下)

    并在spring-config.xml中名为sessionFactory的bean中进行相关配置。

public class User {
    private int id;
    private String name;
    private int age;
//省略setter和getter方法
}

User.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 package="com.test.app.domain">
    <class name="User" table="user">
        <id name="id" column="user_id">
            <generator class="identity"/><!--id生成策略:自增-->
        </id>
        <property name="name" column="name"/>
        <property name="age" column="age"/>
    </class>
</hibernate-mapping>

5. 新建UserDao接口及其实现类UserDaoImpl,并在spring-config.xml中配置该bean。

public interface UserDao {
    Integer insert(User user);//增
    void delete(User user);   //删
    void update(User user);   //改
    User find(int id);        //查
}

UserDaoImpl实现类代码如下:

public class UserDaoImpl implements UserDao {
    SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public Integer insert(User user) {
        return (Integer) sessionFactory.getCurrentSession().save(user);
    }

    @Override
    public void delete(User user) {
        sessionFactory.getCurrentSession().delete(user);
    }

    @Override
    public void update(User user) {
        sessionFactory.getCurrentSession().update(user);
    }

    @Override
    public User find(int id) {
        return (User) sessionFactory.getCurrentSession().get(User.class, id);
    }
}

6. 新建测试类MainTest

public class MainTest {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");

        User user = new User();
        user.setName("xin");
        user.setAge(18);

        userDao.insert(user);
    }
}
posted @ 2015-11-30 10:40  小样儿1020  阅读(411)  评论(0编辑  收藏  举报