`
jetway
  • 浏览: 480276 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

将Hibernate和iBatis两Orm框架整合,取长补短

    博客分类:
  • java
阅读更多

将Hibernate和iBatis两Orm框架整合,取长补短

 

由于Hibernate比较适合对数据进行增,删,改的操作,而iBatis适合进行数据 查询,批量操作,而且方便利用DB底层的功能,因此我尝试着持久层同时使用Hibernate和iBatis。

   以下是我BaseDaoImpl的代码:

Java代码 【转】将Hibernate和iBatis两Orm框架整合,取长补短 - jack-chen10 - baiyunxiaoxi的个人主页

 


package mypack.dao;   
  
import org.hibernate.SessionFactory;   
import org.springframework.orm.hibernate3.HibernateCallback;   
import org.springframework.orm.hibernate3.HibernateTemplate;   
import org.springframework.orm.ibatis.SqlMapClientTemplate;   
  
import com.ibatis.sqlmap.client.SqlMapClient;   
  
public abstract class BaseDaoImpl implements BaseDAO   
{   
    //iBatis的Template   
    private SqlMapClientTemplate sqlMapClientTemplate ;   
    //Hibernate的Template   
    private HibernateTemplate hibernateTemplate ;   
       
    //设置Hibernate   
    public final void setSessionFactory(SessionFactory sessionFactory); {   
        if(this.hibernateTemplate == null);{   
            this.hibernateTemplate = new HibernateTemplate(sessionFactory);;   
        }else{   
            this.hibernateTemplate.setSessionFactory(sessionFactory);;   
        }   
    }      
    //设置ibatis   
    public final void setSqlMapClient(SqlMapClient sqlMapClient); {   
        if(this.sqlMapClientTemplate == null);{   
            this.sqlMapClientTemplate = new SqlMapClientTemplate();;       
        }   
        this.sqlMapClientTemplate.setSqlMapClient(sqlMapClient);;   
    }   
       
    //获取Hibernate的模板   
    protected HibernateTemplate getHibernateTemplate();{   
       return hibernateTemplate   
    }   
    //获取iBatis的模板   
    protected SqlMapClientTemplate getSqlMapClientTemplate(); {   
        return sqlMapClientTemplate;   
    }   
  
    //一些Hibernate 的通用方法,   
    //当然也可不必声明,子类通过hibernateTemplate来操作   
  
    protected void save(Object object); {   
        hibernateTemplate.save(object);;   
    }   
    protected void saveOrUpdate(Object object); {   
        hibernateTemplate.saveOrUpdate(object);;   
    }   
  
    protected void update(Object object); {   
        hibernateTemplate.update(object);;   
    }   
    protected void delete(Object object);{   
        hibernateTemplate.delete(object);;   
    }   
    protected Object getObject(Class clazz, Serializable id);{   
        return hibernateTemplate.get(clazz, id);;   
    }   
       
    //子类通过iBatis 的sqlMapClientTemplate来操作   
}  

 

package mypack.dao;import org.hibernate.SessionFactory;

import org.springframework.orm.hibernate3.HibernateCallback;

import org.springframework.orm.hibernate3.HibernateTemplate;

import org.springframework.orm.ibatis.SqlMapClientTemplate;

import com.ibatis.sqlmap.client.SqlMapClient;

public abstract class BaseDaoImpl implements BaseDAO{

 //iBatis的Template

private SqlMapClientTemplate sqlMapClientTemplate ;

//Hibernate的Template

 private HibernateTemplate hibernateTemplate ;

//设置Hibernate

public final void setSessionFactory(SessionFactory sessionFactory); {

if(this.hibernateTemplate == null);{

this.hibernateTemplate = new HibernateTemplate(sessionFactory);

}else{ this.hibernateTemplate.setSessionFactory(sessionFactory);; }

 } //设置ibatis public final void setSqlMapClient(SqlMapClient sqlMapClient); {

if(this.sqlMapClientTemplate == null){

this.sqlMapClientTemplate = new SqlMapClientTemplate();

 }

this.sqlMapClientTemplate.setSqlMapClient(sqlMapClient);

 } //获取Hibernate的模板

protected HibernateTemplate getHibernateTemplate(){

 return hibernateTemplate

 }

//获取iBatis的模板

protected SqlMapClientTemplate getSqlMapClientTemplate()

{ return sqlMapClientTemplate; }

 //一些Hibernate 的通用方法, //当然也可不必声明,子类通过hibernateTemplate来操作

 protected void save(Object object){

hibernateTemplate.save(object);}

protected void saveOrUpdate(Object object){

hibernateTemplate.saveOrUpdate(object);

 } protected void update(Object object){

 hibernateTemplate.update(object);}

 protected void delete(Object object)

{ hibernateTemplate.delete(object);}

protected Object getObject(Class clazz, Serializable id){

 return hibernateTemplate.get(clazz, id); }

//子类通过iBatis 的sqlMapClientTemplate来操作

}

     即以组合方式,将HibernateTemplate和sqlMapClientTemplate集成起来,完成类似SqlMapClientDaoSupport和HibernateDaoSupport的工作,由于Java无法多类继承,所以只得以组合方式来做。不过Spring的两个Support代码不多,自己做满好,满好--记得这是梁家辉在《棋王》上最爱说说的:)

     在Spring中的主要配置是这样的:

   首先配置Hibernate的SessionFactory:

Java代码 【转】将Hibernate和iBatis两Orm框架整合,取长补短 - jack-chen10 - baiyunxiaoxi的个人主页

 


    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">        
    <!-- 引用上述定义的数据源 -->   
    <property name="dataSource">   
        <ref local="dataSource"/>   
    </property>   
       
    <!-- 定义Hibernate映射文件(资源) -->   
    <property name="mappingDirectoryLocations">   
        <list>   
            <value>classpath:/mypack</value>   
        </list>   
    </property>   
       
    <!-- 定义Hibernate配置属性 -->   
    <property name="hibernateProperties">   
        <props>   
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>   
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>   
            <prop key="hibernate.cglib.use_reflection_optimizer">${hibernate.cglib.use_reflection_optimizer}</prop>   
        </props>   
    </property>   
    <property name="useTransactionAwareDataSource" value="true"></property>   
</bean>  

 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 引用上述定义的数据源 --> <property name="dataSource"> <ref local="dataSource"/> </property> <!-- 定义Hibernate映射文件(资源) --> <property name="mappingDirectoryLocations"> <list> <value>classpath:/mypack</value> </list> </property> <!-- 定义Hibernate配置属性 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.cglib.use_reflection_optimizer">${hibernate.cglib.use_reflection_optimizer}</prop> </props> </property> <property name="useTransactionAwareDataSource" value="true"></property> </bean>

    再是iBatis的sqlMapClient

Java代码 【转】将Hibernate和iBatis两Orm框架整合,取长补短 - jack-chen10 - baiyunxiaoxi的个人主页

 


<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">   
    <property name="configLocation" value="sql-map-config.xml"/>   
    <property name="dataSource" ref="dataSource"/>       
    <property name="useTransactionAwareDataSource" value="true"></property>        
</bean>  

 

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="sql-map-config.xml"/> <property name="dataSource" ref="dataSource"/> <property name="useTransactionAwareDataSource" value="true"></property> </bean>

     两者是useTransactionAwareDataSource属性都设置为ture,看Spring的Javadoc,说这可以在多Orm框架中保持事务的一致性,即通过DataSource关联,果真如此否?我还没有确定出来。

    事务管理器,用Hibernate的

Java代码 【转】将Hibernate和iBatis两Orm框架整合,取长补短 - jack-chen10 - baiyunxiaoxi的个人主页

 


        <!-- 事务处理的AOP配置 -->   
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">   
    <property name="sessionFactory">   
        <ref local="sessionFactory"/>   
    </property>   
</bean >   
  
<bean id="txProxyTemplate" abstract="true"    
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">        
    <!-- 指定事务管理器 -->   
    <property name="transactionManager" >   
        <ref local="transactionManager"/>   
    </property>   
       
    <!-- 指定业务策略 -->   
    <property name="transactionAttributes">   
      <props>   
         <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>   
         <prop key="add*">PROPAGATION_REQUIRED</prop>   
         <prop key="update*">PROPAGATION_REQUIRED</prop>   
         <prop key="delete*">PROPAGATION_REQUIRED</prop>   
      </props>   
    </property>   
</bean>     

 

<!-- 事务处理的AOP配置 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean > <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <!-- 指定事务管理器 --> <property name="transactionManager" > <ref local="transactionManager"/> </property> <!-- 指定业务策略 --> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> </props> </property> </bean>

    然后做两个Dao,一个是CustomerDao,这个走Hibernate,直接看其实现:

Java代码 【转】将Hibernate和iBatis两Orm框架整合,取长补短 - jack-chen10 - baiyunxiaoxi的个人主页

 


   package mypack.dao;   
  
import mypack.Customer;   
  
public class CustomerDaoImpl extends BaseDaoImpl implements CustomerDao {   
  
    public void update(Customer customer); {   
        super.save(customer);;   
    }   
}  

 

package mypack.dao;import mypack.Customer;public class CustomerDaoImpl extends BaseDaoImpl implements CustomerDao { public void update(Customer customer); { super.save(customer);; }}

     再看OrderDao的实现,这个走iBatis(先分道扬镳,再殊途同归):

Java代码 【转】将Hibernate和iBatis两Orm框架整合,取长补短 - jack-chen10 - baiyunxiaoxi的个人主页

 


     package mypack.dao;   
  
import java.sql.SQLException;   
  
import org.springframework.orm.ibatis.SqlMapClientCallback;   
  
public class OrderDaoImpl extends BaseDaoImpl implements OrderDao {   
  /**  
   * update ibatis  
   */  
  public void updateOrderPrice(float rate);    
  {          
     getSqlMapClientTemplate();.update("updateOrderPrice",null);;   
  }   
}  

 

package mypack.dao;import java.sql.SQLException;import org.springframework.orm.ibatis.SqlMapClientCallback;public class OrderDaoImpl extends BaseDaoImpl implements OrderDao { /** * update ibatis */ public void updateOrderPrice(float rate); { getSqlMapClientTemplate();.update("updateOrderPrice",null);; }}

    再在一个Service中同时用这两上Dao完成一个事务:

Java代码 【转】将Hibernate和iBatis两Orm框架整合,取长补短 - jack-chen10 - baiyunxiaoxi的个人主页

 


    package mypack.service;   
  
import mypack.Customer;   
import mypack.dao.CustomerDao;   
import mypack.dao.OrderDao;   
  
public class CustomerServiceImpl implements CustomerService {   
  
    private CustomerDao customerDao;   
    private OrderDao orderDao;   
    public void updateCustomerAndOrder(Customer customer, float rate); {   
        customerDao.update(customer);;   
        orderDao.updateOrderPrice(rate);;   
    }   
    public CustomerDao getCustomerDao(); {   
        return customerDao;   
    }   
    public void setCustomerDao(CustomerDao customerDao); {   
        this.customerDao = customerDao;   
    }   
    public OrderDao getOrderDao(); {   
        return orderDao;   
    }   
    public void setOrderDao(OrderDao orderDao); {   
        this.orderDao = orderDao;   
    }   
}  

 

package mypack.service;import mypack.Customer;

import mypack.dao.CustomerDao;

import mypack.dao.OrderDao;

public class CustomerServiceImpl implements CustomerService {

private CustomerDao customerDao;

private OrderDao orderDao;

 public void updateCustomerAndOrder(Customer customer, float rate)

{ customerDao.update(customer);

orderDao.updateOrderPrice(rate);

 } public CustomerDao getCustomerDao(); { return customerDao; } public void setCustomerDao(CustomerDao customerDao); { this.customerDao = customerDao; } public OrderDao getOrderDao(); { return orderDao; } public void setOrderDao(OrderDao orderDao); { this.orderDao = orderDao; }}

     插入一条Customer记录,再Update所有Order(纯粹研究,没有实际意义)

   走:

Java代码 【转】将Hibernate和iBatis两Orm框架整合,取长补短 - jack-chen10 - baiyunxiaoxi的个人主页

 


package test.service;   
  
import org.apache.log4j.PropertyConfigurator;   
import org.springframework.context.ApplicationContext;   
import org.springframework.context.support.ClassPathXmlApplicationContext;   
  
public class SysInit   
{   
    public static ApplicationContext factory = null;   
    private static String[] filepath = {"applicationContext_service.xml"};   
    public static void init();   
    {   
        PropertyConfigurator.configure("D:\\personalWork\\proGroup\\hiTestPro\\src\\log4j.properties");;   
        if (factory == null);   
        {   
            try  
            {   
               factory = new  ClassPathXmlApplicationContext(filepath);;   
                   
  
            } catch (Exception e);   
            {   
                e.printStackTrace();;   
            }   
        }   
  
        try  
        {   
        } catch (Exception e);   
        {   
            e.printStackTrace();;   
        }   
    }   
  
    public static Object getBean(String name);   
    {   
        if (factory == null);   
        {   
            init();;   
        }   
        return factory.getBean(name);;   
    }   
  
    public static void main(String[] args);   
    {   
        SysInit.init();;   
    }   
}   
  
  
  
    package test.service;   
  
import junit.framework.TestCase;   
import mypack.Customer;   
import mypack.service.CustomerService;   
  
public class CustomerServiceTest extends TestCase {   
  
    protected void setUp(); throws Exception {   
        super.setUp();;   
        SysInit.init();;   
    }   
  
    protected void tearDown(); throws Exception {   
        super.tearDown();;   
    }   
       
    public void testupdateCustomerAndOrder();   
    {   
        CustomerService customerService = (CustomerService);SysInit.getBean("customerService");;   
        Customer customer = new Customer();;   
        customer.setId(3L);;   
        customer.setFirstname("xiong");;   
        customer.setLastname("hua");;   
        customer.setSex('F');;   
        customerService.updateCustomerAndOrder(customer, 2);;      
    }   
}  

 

package test.service;import org.apache.log4j.PropertyConfigurator;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SysInit{ public static ApplicationContext factory = null; private static String[] filepath = {"applicationContext_service.xml"}; public static void init(); { PropertyConfigurator.configure("D:\\personalWork\\proGroup\\hiTestPro\\src\\log4j.properties");; if (factory == null); { try { factory = new ClassPathXmlApplicationContext(filepath);; } catch (Exception e); { e.printStackTrace();; } } try { } catch (Exception e); { e.printStackTrace();; } } public static Object getBean(String name); { if (factory == null); { init();; } return factory.getBean(name);; } public static void main(String[] args); { SysInit.init();; }} package test.service;import junit.framework.TestCase;import mypack.Customer;import mypack.service.CustomerService;public class CustomerServiceTest extends TestCase { protected void setUp(); throws Exception { super.setUp();; SysInit.init();; } protected void tearDown(); throws Exception { super.tearDown();; } public void testupdateCustomerAndOrder(); { CustomerService customerService = (CustomerService);SysInit.getBean("customerService");; Customer customer = new Customer();; customer.setId(3L);; customer.setFirstname("xiong");; customer.setLastname("hua");; customer.setSex('F');; customerService.updateCustomerAndOrder(customer, 2);; }}

       我测试了一下,如果iBatis的操作有问题,Customer也是没有办法插入了,所以基本上判断,这两个框架是可以做事务的。

 

Hibernate的缓存确实是一个问题,不过可以通过合理分配两者的工作来解决,比如Hibernate负责增删改,而ibatis只负责查询。
   目前我的应用就是简要列表查询的数据由iBatis负责获取,从简要列表进入后的操作由Hibernate负责。
   不过,如果这样限定后,也就没有必须管事务的事了。整合的目的只是为了提高Dao的内聚性并屏蔽掉具体实现。

 

  iBatis主要是可以将Sql和代码解耦,使Java代码更纯一些,而Hibernate有在查询数据时有一个不好的地方是,结果集中的记录要对应Domain Class,这就限制了结果集字段的灵活性,数据库中的结果集构造是很灵活的,而不是仅对应Domain Classs。另外Hibernate还要为每条结果集构造对象,数据缓存等工作,如果仅是查询,这种工作是没有必要而费时的。
   总之,我觉得Hibernate不太适合于构造简要列表时的查询,它的强项在于对一个Domain Class的增,删,改,查,而非业务数据查询。

分享到:
评论

相关推荐

    hibernate_And_Ibatis.doc

    Hibernate 和 iBATIS 是两种流行的 Java 持久层框架,它们都致力于简化对象关系映射(ORM),将 Java 类对象与数据库表之间的交互变得更加便捷。然而,它们在实现方式和设计理念上有所不同。 **Hibernate** 是一个...

    hibernate与mybatis一起使用取长补短

    标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在充分利用它们各自的优点,以提升项目的性能和灵活性。 Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括...

    基于java的校园美食交流系统设计与实现.docx

    基于java的校园美食交流系统设计与实现.docx

    #_ssm_126_mysql_实习支教中小学学校信息管理系统_.zip

    均包含代码,文章,部分项目包含ppt

    基于python的酒店评论中文情感分析系统源码+设计文档+数据集.zip

    基于python的酒店评论中文情感分析系统源码+设计文档+数据集.zip基于python的酒店评论中文情感分析系统源码+设计文档+数据集.zip基于python的酒店评论中文情感分析系统源码+设计文档+数据集.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。

    ASP.NET公交车管理系统的实现与设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    ASP基于WEB楼宇专业网站毕业设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    django基于协同过滤算法的小说推荐系统 -论文.zip

    基于Django框架开发的协同过滤算法小说推荐系统是一种利用用户行为数据来提供个性化小说推荐的应用。该系统通过分析用户的历史阅读记录、评分和反馈,发现用户之间的相似性或小说之间的相似性,进而为用户推荐可能感兴趣的小说。以下是该系统可能包含的关键特性: 1. **用户账户管理**:允许用户创建账户、登录和编辑个人信息,同时跟踪用户的阅读历史和评分。 2. **小说数据库**:构建一个包含大量小说信息的数据库,每本小说都有详细的元数据,如作者、出版年份、流派、标签等。 3. **协同过滤引擎**:实现协同过滤算法,包括用户-用户协同过滤和项目-项目协同过滤,以发现相似用户或相似小说。 4. **推荐生成**:根据协同过滤引擎的结果,生成个性化的小说推荐列表,并提供给用户。 5. **评分系统**:允许用户对小说进行评分,这些评分数据将用于训练推荐算法,提高推荐的准确性。 6. **用户界面**:设计直观、易用的用户界面,使用户能够轻松浏览推荐的小说、查看详情和进行评分。 7. **搜索和筛选功能**:提供强大的搜索功能,允许用户根据标题、作者或流派等关键词搜索小说,并提供筛选

    ASP.NET基于web的订餐系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    2020数字孪生技术应用与发展概述

    内容概要:本文是关于2020年度数字孪生技术的最新进展和发展趋势的研究报告。文中对数字孪生技术及其应用场景作出了详细的阐述,特别强调了数字孪生在智能制造、智慧城市、产品开发等多个领域内的实际应用成果,并讨论了数字孪生带来的信息安全方面的挑战和解决方案。 适用人群:面向希望深入了解和应用数字孪生技术的企业管理人员、研发工程师和学者。 使用场景及目标:适用于企业或机构寻求改进产品设计、生产制造、城市管理等领域效能的情况,助力相关人员理解和实现更加精细的管理决策和模拟预测,进而优化资源配置与提升工作效率。 其它说明:介绍了多项核心技术,包括但不限于数据收集、建模仿真、模型管理系统等,并分享了多个数字孪生的真实应用案例以展示其实效。

    基于java的的德云社票务系统的设计与实现.docx

    基于java的的德云社票务系统的设计与实现.docx

    基于java的宜佰丰超市进销存管理系统设计与实现.docx

    基于java的宜佰丰超市进销存管理系统设计与实现.docx

    基于java的削面快餐店点餐服务系统的设计与实现.docx

    基于java的削面快餐店点餐服务系统的设计与实现.docx

    用户体验分享和讨论.ppt

    用户体验分享和讨论.ppt

    #_ssm_137_mysql_数据结构课堂学生考勤管理系统_.zip

    均包含代码,文章,部分项目包含ppt

    ASP.NET基于WEB的工作计划流程管理系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、3本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、本项3目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdmE.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    #_ssm_153_mysql_健身房众筹系统_.zip

    均包含代码,文章,部分项目包含ppt

    一款基于UNITY的MMORPG游戏.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

Global site tag (gtag.js) - Google Analytics