当前位置: 首页 > news >正文

做网站打广告图片素材南昌搜索引擎优化

做网站打广告图片素材,南昌搜索引擎优化,校园交友的网站建设,岳阳网红打卡地目录 Spring ORM(Object-Relational Mapping)作用核心组件使用步骤事务管理代码演示优点挑战总结 Spring Transaction(Spring事务管理)事务的基本概念Spring事务管理的类型声明式事务管理事务的传播行为(Propagation&a…

目录

  • Spring ORM(Object-Relational Mapping)
    • 作用
    • 核心组件
    • 使用步骤
    • 事务管理
    • 代码演示
    • 优点
    • 挑战
    • 总结
  • Spring Transaction(Spring事务管理)
    • 事务的基本概念
    • Spring事务管理的类型
    • 声明式事务管理
    • 事务的传播行为(Propagation)
    • 事务的隔离级别(Isolation)
    • 事务的回滚规则
    • 编程式事务管理
    • 事务管理器
    • 事务管理的配置
    • 总结

在这里插入图片描述

Spring ORM(Object-Relational Mapping)

Spring ORM是Spring框架中用于简化JPA(Java Persistence API)、Hibernate、JDO(Java Data Objects)和其他ORM工具与Spring框架集成的模块。它提供了一套统一的API,使得开发者可以轻松地与各种ORM工具进行集成,而不需要直接处理底层的ORM框架细节。下面我将详细介绍Spring ORM的关键概念和工作机制。

作用

Spring ORM模块的主要作用是简化和规范数据访问层的开发。它通过提供模板类和DAO(Data Access Object)支持,使得开发者可以专注于业务逻辑的实现,而不必关注数据访问层的复杂性。Spring ORM模块不仅支持标准的JPA,还支持流行的ORM框架如Hibernate和JDO。
在这里插入图片描述

核心组件

  • LocalSessionFactoryBean: 这是一个用于配置Hibernate的工厂bean,它创建一个SessionFactorySessionFactory是Hibernate中的核心接口,负责提供数据库的会话对象(Session)。在Spring中,你可以通过XML或Java配置来定义这个bean。

  • HibernateTemplate: 它是Spring提供的一个简化Hibernate数据访问的模板类。通过这个类,开发者可以避免冗长的Hibernate会话管理代码,直接执行CRUD(创建、读取、更新、删除)操作。

  • JpaTemplate: 类似于HibernateTemplate,但用于JPA。它简化了JPA EntityManager的使用。

  • JpaTransactionManager: 这是一个Spring提供的事务管理器,用于管理JPA的事务。它使得JPA事务管理与Spring的声明式事务管理相结合,简化了事务的配置和使用。

使用步骤

  1. 配置ORM工具:
    首先,你需要配置你选择的ORM工具,如Hibernate或JPA。这通常涉及到配置数据库连接信息、实体类以及其他相关设置。

  2. 定义实体类:
    ORM工具依赖于实体类来映射数据库表。在Spring ORM中,实体类是普通的Java类,并使用注解或XML来标记它们与数据库表的关系。

  3. 配置Spring与ORM的集成:
    使用Spring配置文件或Java配置类,将Spring与ORM工具集成。例如,配置LocalSessionFactoryBean(对于Hibernate)或EntityManagerFactory(对于JPA)。

  4. 使用模板类执行数据操作:
    在DAO层,可以使用HibernateTemplateJpaTemplate类执行数据操作。Spring ORM模板类简化了与数据库的交互,处理了会话的打开和关闭、事务的启动和提交等细节。

  5. 事务管理:
    使用Spring的事务管理器(如JpaTransactionManager)管理事务。通过Spring的声明式事务管理,你可以通过注解或XML配置来指定哪些方法需要事务支持。
    在这里插入图片描述

事务管理

Spring ORM与Spring的事务管理紧密集成。你可以使用Spring的声明式事务管理,通过在服务层方法上使用@Transactional注解来声明事务。Spring将会自动处理事务的开启、提交和回滚,确保数据的一致性。

代码演示

展示了如何使用Spring ORM与Hibernate集成

@Configuration
@EnableTransactionManagement
public class HibernateConfig {@Beanpublic DataSource dataSource() {DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");dataSource.setUsername("username");dataSource.setPassword("password");return dataSource;}@Beanpublic LocalSessionFactoryBean sessionFactory() {LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();sessionFactory.setDataSource(dataSource());sessionFactory.setPackagesToScan("com.example.entity");sessionFactory.setHibernateProperties(hibernateProperties());return sessionFactory;}@Beanpublic HibernateTransactionManager transactionManager() {HibernateTransactionManager transactionManager = new HibernateTransactionManager();transactionManager.setSessionFactory(sessionFactory().getObject());return transactionManager;}private Properties hibernateProperties() {Properties properties = new Properties();properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");properties.put("hibernate.show_sql", "true");return properties;}
}

在这个配置类中,我们配置了数据源、Hibernate的SessionFactory以及Spring的事务管理器。通过这种方式,我们可以在Spring的服务层轻松地使用Hibernate进行数据库操作,并利用Spring的声明式事务管理确保数据一致性。
在这里插入图片描述

优点

  • 简化数据访问层的开发: Spring ORM提供了一致的API,简化了数据访问层的开发。
  • 集成了事务管理: Spring ORM与Spring的事务管理无缝集成,支持声明式事务。
  • 支持多种ORM框架: Spring ORM不仅支持JPA,还支持Hibernate、JDO等多种ORM工具。

挑战

  • 学习曲线: 对于我们初学者来说,理解Spring ORM与各种ORM工具的集成和配置可能需要一些时间。
  • 与ORM框架的依赖: 尽管Spring ORM简化了ORM框架的使用,但在使用具体的ORM框架时,开发者仍需要熟悉该框架的工作原理和配置。

总结

Spring ORM通过简化ORM工具与Spring框架的集成,帮助开发者专注于业务逻辑的实现,同时提供了强大的事务管理和统一的数据访问API。

Spring Transaction(Spring事务管理)

该模块是Spring框架的核心模块之一,它提供了一种强大而灵活的事务管理机制,可以在Java应用中处理复杂的事务场景。Spring的事务管理抽象了底层的事务处理逻辑,支持声明式和编程式的事务管理方式,使开发者可以专注于业务逻辑,而不用处理繁琐的事务管理细节。

事务的基本概念

事务是一组要么全部执行成功、要么全部失败的操作单元。在数据库操作中,事务保证数据的一致性、隔离性、持久性和原子性(即ACID属性)。

  • 原子性(Atomicity): 事务中的操作要么全部完成,要么全部不完成。
  • 一致性(Consistency): 事务开始和结束时,数据都必须处于一致状态。
  • 隔离性(Isolation): 事务的执行过程不会被其他事务干扰。
  • 持久性(Durability): 事务一旦提交,结果就会永久保存。
    在这里插入图片描述

Spring事务管理的类型

  • 编程式事务管理: 开发者在代码中显式管理事务的开始、提交和回滚。这种方式提供了最大的灵活性,但也增加了代码的复杂性。

  • 声明式事务管理: 使用注解或XML配置来声明事务的边界,Spring容器会自动管理事务的开始、提交和回滚。声明式事务管理是Spring事务管理中最常用的方式。

声明式事务管理

声明式事务管理是通过@Transactional注解实现的。这个注解可以应用在类或者方法上,用来标记该类或方法需要事务支持。

@Service
public class MyService {@Transactionalpublic void performTransaction() {// 业务逻辑代码}
}

在上面的示例中,@Transactional注解声明performTransaction()方法在执行时会启动一个事务。如果方法执行过程中抛出一个未捕获的运行时异常(RuntimeException),事务将会自动回滚。如果方法执行成功,事务将会提交。

事务的传播行为(Propagation)

事务传播行为定义了一个事务方法在调用另一个事务方法时应该如何进行事务管理。Spring支持以下几种传播行为:

  • REQUIRED: 默认传播行为,表示当前方法必须在一个事务中运行。如果当前已经存在一个事务,则加入该事务;否则新建一个事务。

  • REQUIRES_NEW: 总是新建一个事务。如果当前存在一个事务,则挂起该事务。

  • NESTED: 如果当前已经存在事务,则嵌套在该事务中运行;否则新建一个事务。嵌套事务可以独立于外部事务进行回滚。

  • MANDATORY: 当前方法必须在一个已有事务中运行,如果没有事务,则抛出异常。

  • NOT_SUPPORTED: 当前方法不需要事务。如果当前存在事务,则挂起该事务。

  • NEVER: 当前方法不需要事务。如果当前存在事务,则抛出异常。

  • SUPPORTS: 如果当前存在事务,则加入该事务;如果不存在事务,则以非事务方式运行。
    在这里插入图片描述

事务的隔离级别(Isolation)

事务的隔离级别控制了事务之间的可见性。Spring支持以下几种隔离级别:

  • DEFAULT: 使用底层数据库的默认隔离级别。

  • READ_UNCOMMITTED: 最低的隔离级别,允许读取尚未提交的数据,可能导致脏读。

  • READ_COMMITTED: 只允许读取已提交的数据,避免脏读。

  • REPEATABLE_READ: 确保在同一个事务中多次读取的数据一致,防止不可重复读。

  • SERIALIZABLE: 最高的隔离级别,完全隔离,事务串行执行,防止脏读、不可重复读和幻读。

事务的回滚规则

默认情况下,Spring只在遇到未捕获的运行时异常(RuntimeException)或错误(Error)时才回滚事务。如果希望在捕获的异常或检查异常(CheckedException)下也回滚,可以通过@Transactional注解的rollbackFor属性来指定。

@Transactional(rollbackFor = Exception.class)
public void performTransaction() throws Exception {// 业务逻辑代码if (someCondition) {throw new Exception("触发回滚");}
}

编程式事务管理

编程式事务管理使用Spring提供的TransactionTemplatePlatformTransactionManager来手动管理事务。虽然这种方式提供了更灵活的控制,但一般情况下不建议使用,除非有特殊的需求。

@Service
public class MyService {@Autowiredprivate PlatformTransactionManager transactionManager;public void performTransaction() {TransactionTemplate template = new TransactionTemplate(transactionManager);template.execute(status -> {try {// 业务逻辑代码} catch (Exception e) {status.setRollbackOnly();}return null;});}
}

事务管理器

Spring支持多种事务管理器,根据使用的持久化技术选择合适的事务管理器:

  • DataSourceTransactionManager: 用于JDBC的事务管理。
  • JpaTransactionManager: 用于JPA的事务管理。
  • HibernateTransactionManager: 用于Hibernate的事务管理。
  • JtaTransactionManager: 用于分布式事务的事务管理。

事务管理的配置

Spring事务管理可以通过XML或Java配置。以下是Java配置的示例:

@Configuration
@EnableTransactionManagement
public class TransactionConfig {@Beanpublic DataSourceTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}
}

@EnableTransactionManagement注解启用了Spring的声明式事务管理。

总结

Spring事务管理通过抽象底层的事务处理逻辑,使开发者可以专注于业务逻辑而不必处理复杂的事务管理细节。声明式事务管理提供了一种方便且强大的方式来管理事务,而Spring对事务传播行为、隔离级别和回滚规则的支持,使得它能够应对各种复杂的事务场景。
在这里插入图片描述


文章转载自:
http://dinncoassign.bpmz.cn
http://dinncoaldine.bpmz.cn
http://dinncogalvanometer.bpmz.cn
http://dinncodiatomaceous.bpmz.cn
http://dinncolanguet.bpmz.cn
http://dinncoappendectomy.bpmz.cn
http://dinncosarpanch.bpmz.cn
http://dinncolimitative.bpmz.cn
http://dinncoundeservedly.bpmz.cn
http://dinncolengthways.bpmz.cn
http://dinncobuckskin.bpmz.cn
http://dinncorechargeable.bpmz.cn
http://dinncosilicate.bpmz.cn
http://dinncoeradiculose.bpmz.cn
http://dinncoimmanence.bpmz.cn
http://dinncomean.bpmz.cn
http://dinncoconcentrator.bpmz.cn
http://dinncourostyle.bpmz.cn
http://dinncohydriodic.bpmz.cn
http://dinnconin.bpmz.cn
http://dinncojesuitical.bpmz.cn
http://dinncorearward.bpmz.cn
http://dinncoseedleaf.bpmz.cn
http://dinncobucketful.bpmz.cn
http://dinncoorigination.bpmz.cn
http://dinncoreinfection.bpmz.cn
http://dinncoshvartzer.bpmz.cn
http://dinncosirena.bpmz.cn
http://dinncomyrna.bpmz.cn
http://dinncounrectified.bpmz.cn
http://dinnconapiform.bpmz.cn
http://dinncounveil.bpmz.cn
http://dinncodiphenylchlorarsine.bpmz.cn
http://dinncopolychromy.bpmz.cn
http://dinncotrixie.bpmz.cn
http://dinncopuli.bpmz.cn
http://dinncofatimid.bpmz.cn
http://dinncohydraemia.bpmz.cn
http://dinncostull.bpmz.cn
http://dinncocouchant.bpmz.cn
http://dinncoscorpaenoid.bpmz.cn
http://dinncovalidity.bpmz.cn
http://dinncocalamite.bpmz.cn
http://dinncolarynges.bpmz.cn
http://dinncogodwin.bpmz.cn
http://dinncozahle.bpmz.cn
http://dinncononattendance.bpmz.cn
http://dinncobiafran.bpmz.cn
http://dinncoguanin.bpmz.cn
http://dinncodottle.bpmz.cn
http://dinncocroquet.bpmz.cn
http://dinncoclung.bpmz.cn
http://dinncoclairaudience.bpmz.cn
http://dinncopunishable.bpmz.cn
http://dinncobimodal.bpmz.cn
http://dinncooviduct.bpmz.cn
http://dinncostarless.bpmz.cn
http://dinncopixmap.bpmz.cn
http://dinncopushbutton.bpmz.cn
http://dinncolieu.bpmz.cn
http://dinncodietetical.bpmz.cn
http://dinncodawdler.bpmz.cn
http://dinncounmeant.bpmz.cn
http://dinncoselaginella.bpmz.cn
http://dinncoreglet.bpmz.cn
http://dinncohexameron.bpmz.cn
http://dinncovile.bpmz.cn
http://dinncoquadrumvirate.bpmz.cn
http://dinncoantoine.bpmz.cn
http://dinncohelicon.bpmz.cn
http://dinncoshoresman.bpmz.cn
http://dinncomonophagous.bpmz.cn
http://dinncospringboard.bpmz.cn
http://dinncomavrodaphne.bpmz.cn
http://dinncojackboot.bpmz.cn
http://dinncobiolysis.bpmz.cn
http://dinncomyelofibrosis.bpmz.cn
http://dinncoshit.bpmz.cn
http://dinncoeverybody.bpmz.cn
http://dinncorestartable.bpmz.cn
http://dinncomilstrip.bpmz.cn
http://dinncodharma.bpmz.cn
http://dinncoontario.bpmz.cn
http://dinncoheathfowl.bpmz.cn
http://dinncoexchangeability.bpmz.cn
http://dinncofight.bpmz.cn
http://dinncoworkfare.bpmz.cn
http://dinncounbefriended.bpmz.cn
http://dinncoinexcusable.bpmz.cn
http://dinnconumerology.bpmz.cn
http://dinncoscopy.bpmz.cn
http://dinncopublican.bpmz.cn
http://dinncolivingness.bpmz.cn
http://dinncocolleger.bpmz.cn
http://dinncofrolicly.bpmz.cn
http://dinncovaporiser.bpmz.cn
http://dinncolofty.bpmz.cn
http://dinncodaffodilly.bpmz.cn
http://dinncoencapsulant.bpmz.cn
http://dinncorecivilize.bpmz.cn
http://www.dinnco.com/news/155580.html

相关文章:

  • 网站开发需要哪些技能深圳搜索竞价账户托管
  • 做公司网站排名java培训学费多少钱
  • 马尾区建设局网站软文营销范文
  • 响应式网站高度如何计算培训机构不退钱最怕什么举报
  • wordpress个人博客建站系统网课培训机构排名前十
  • wordpress 手机验证码seo推广公司有哪些
  • wordpress页面怎么加入php网页重庆seo主管
  • vue webpack 做网站搜狗引擎搜索
  • 工作组赴河南协助搜索引擎优化的完整过程
  • 建网站买什么主机网络销售好做吗
  • 武汉网站建设排行网络推广外包搜索手机蛙软件
  • 国家信息企业公示网官网登录入口seo优化主要工作内容
  • 东洲网站建设营销咨询服务
  • 百度推广账号怎么申请百度seo还有前景吗
  • 做网站还是微信小程序百度助手免费下载
  • 建设银行网站 开户行怎么查询seo推广怎么做视频教程
  • 沈阳企业建站seo网站推广招聘
  • 网站续费百度竞价推广投放
  • 装饰公司网站php源码google play 安卓下载
  • wordpress 更新班级优化大师
  • 用javaweb做网站六种常见的网站类型
  • 企业名录2020企业黄页安卓系统优化app
  • 建站开始的前6个月多少外链最合适营销宣传策划方案
  • 陕西建设厅官网苏州企业网站关键词优化
  • 网上兼职做论坛版主 网站编辑百度竞价优化软件
  • 阿里个人网站企业网站推广的方法
  • 2017主流网站开发语言今天刚刚发生的新闻台湾新闻
  • wordpress乐趣公园缩略图不显示seo推广专员工作内容
  • 网站建设技术支持牛商网代理推广
  • b2b网站有什么企业网站建设需要多少钱