• 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);
        }
    }
  • 相关阅读:
    (Vue中)cehart在同一个dom上画图图切换时饼图有折线图的坐标系
    linux(centos7)修改服务器时间
    centos6 yum源不能使用
    Linux 使用 history 来减少重复命令的几个实用技巧。
    7个Shell 拿来就用脚本实例!
    keepalived的配置解析&安装与爬坑
    linux最全命令使用手册
    linux各种误删文件恢复方法(经典强推)
    位运算符
    SQL 书写、执行顺序
  • 原文地址:https://www.cnblogs.com/weilunhui/p/5006507.html
Copyright © 2020-2023  润新知