zoukankan      html  css  js  c++  java
  • 【原创】Hibernate自动生成(2)

    本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正。 

    开发环境: Eclipse Version: Photon Milestone 6

    WCP:http://www.wcpdoc.com/home/Pubindex.html

    目录:

    Hibernate自动生成(1)

    Hibernate自动生成(2)

    动软生成的WCP DAO层模板(不使用接口)

    在第一部分,已经生成了实体对象,现在我们正式使用。

    1.把刚才的test项目重构改名,wcp-tpmember, 建立包 com.farm.member.Dao

    博主本次需要链接第二个数据库MSSQL,需要新建一个SessionFactory,以下步骤并没有顺序。

    2.这个静态方法手动向bean获取实例。(这步现在不做也没事,我还不知道这个类什么时候用)

       参考HibernateSeesionFactory.java 新建HibernateSeesionFactoryForMSSQL.java

     

    3.配置jdbc

    4.加一个方言:

    hibernate.dialectsql

    org.hibernate.dialect.SQLServer2008Dialect

    5.XML文件配置

    在hibernate配置文件spring-hibernate.xml中增加一个sessionFactorymssql

     <!-- MSSQL的sessionFactory 添加:陆慧 -->
        <bean id="sessionFactorymssql"
            class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSourcemssql" /> <!-- 注意这里的ref名字 -->
            <property name="packagesToScan">
                <list>
                    <!-- 可以加多个包 -->                                  
                    <value>com.farm</value>
                    <value>com.manor</value>
                    <value>org.sdkj</value>
    
                </list>
            </property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
                    <prop key="hibernate.dialect">${hibernate.dialectsql}</prop>
                    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                    <!-- <prop key="hibernate.current_session_context_class">thread</prop> -->
                </props>
            </property>
        </bean>
        
        <!-- MSSQL的数据库映射- 添加:陆慧 -->
        <bean id="dataSourcemssql"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${jdbc.mssqldriverClassName}" />
            <property name="url" value="${jdbc.mssqlurl}" />
            <property name="username" value="${jdbc.mssqlusername}" />
            <property name="password" value="${jdbc.mssqlpassword}" />
        </bean>
    
        <!-- 配置Hibernate事务管理器 添加:陆慧 -->
        <bean id="transactionManagermssql"
            class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactorymssql" />
        </bean>

    主配置文件spring-mvc.xml中增加一个 transactionManagermssql

        <context:component-scan base-package="com.farm,com.manor,org.sdkj" />
        <!-- 基于注释的事务,当注释中发现@Transactional时,使用id为“transactionManager”的事务管理器 -->
        <!-- 如果没有设置transaction-manager的值,则spring以缺省默认的事务管理器来处理事务,默认事务管理器为第一个加载的事务管理器 -->
        <tx:annotation-driven transaction-manager="transactionManager" />
        <!--这个事务由陆慧添加,当多个事务时,注解可以有value参数,默认不写就是上面叫 transactionManager的管理器,其他的都写一个@Transactional("transactionManagermssql")-->
        <tx:annotation-driven transaction-manager="transactionManagermssql" />

    6.新建DAO层

     注意点:

    1. 类注解 @Repository ,表示此类被spring 接管

    2. @Resource如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。

        @Resource(name = "sessionFactorymssql")
        private SessionFactory sessionFactorymssql;     

    3. 所有的方法写上: @Transactional(value="transactionManagermssql")  表示方法外面包一层事物。

    @Transactional 写在Controller层调用的那个层上。这个层可以是Service层,也可以是Dao层。只是人为规定的而已,没有这个东东反正会报错。

    一般情况下,写在Service层。因为Dao层是单个方法。Service层是Dao层方法的组合使用。Service层是需要事务的。

    7 wcp-web的pom.xml中加一个依赖:

            <dependency>
                <groupId>com.farm</groupId>
                <artifactId>wcp-tpmember</artifactId>
                <version>${wcp.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.servlet.jsp</groupId>
                        <artifactId>jsp-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

     注意exclusion的东东,因为和tomcat下的lib包有重复,所以必须去除包含

  • 相关阅读:
    一道360 crackme的详细分析
    Unity 3d游戏逆向之.NET Reflector工具使用介绍
    如何获取系统Home(Launcher)应用判断用户是否处于home界面
    IDA Pro反编译代码类型转换参考
    Spring揭秘笔记
    Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quick
    Oracle修改密码后,登录sys或者sysdba时一直提示:ORA-01017: invalid username/password; logon denied
    Springboot项目中调用Controller方法出现:java.lang.IllegalArgumentException: Unknown return value type: java.lang.Boolean
    在idea中导入Gradle项目的一些记录
    IDEA修改项目的JDK版本
  • 原文地址:https://www.cnblogs.com/lhuser/p/8979308.html
Copyright © 2011-2022 走看看