GVKun编程网logo

“Spring Trading和“Hibernate Trading”有什么区别(springdatajpa和hibernate的区别)

16

如果您想了解“SpringTrading和“HibernateTrading”有什么区别和springdatajpa和hibernate的区别的知识,那么本篇文章将是您的不二之选。我们将深入剖析“Sp

如果您想了解“Spring Trading和“Hibernate Trading”有什么区别springdatajpa和hibernate的区别的知识,那么本篇文章将是您的不二之选。我们将深入剖析“Spring Trading和“Hibernate Trading”有什么区别的各个方面,并为您解答springdatajpa和hibernate的区别的疑在这篇文章中,我们将为您介绍“Spring Trading和“Hibernate Trading”有什么区别的相关知识,同时也会详细的解释springdatajpa和hibernate的区别的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

“Spring Trading和“Hibernate Trading”有什么区别(springdatajpa和hibernate的区别)

“Spring Trading和“Hibernate Trading”有什么区别(springdatajpa和hibernate的区别)

您能否解释以下两种交易类型之间的区别:

  1. Spring Trading
  2. Hibernate Trading

我也想了解@Transactional注释。

答案1

小编典典

对于初学者来说,它们都是事务,但是它们包含不同的概念和组件。

TL; DR

Hibernate处理数据库特定的事务,而spring提供常规的事务管理服务。@Transactional是配置事务管理行为的好方法。

长话说:

交易次数

事务基本上是工作的单元(即,对某事物的更改),可以作为可提交或回滚的单个操作进行管理。在Java世界中,有许多不同类型的事务-
数据库,像JMS这样的消息传递系统,应用程序间事务(适用于那些不太胆小的人)或事务中可能需要包含的其他任何事物。在Java标准中,交易是使用Java交易API进行管理的,该
API设置了如何参与交易的规则。

hibernate

Hibernate是一个ORM,用于将数据库组件抽象为Java对象,因此其事务与数据库中的更改特别相关。事务可由对各种数据库表的一次或多次写操作组成,一旦完成操作,这些写操作将全部提交。回滚事务,例如,如果操作期间发生任何错误,则允许撤消所有更改。

弹簧

在最低层次上,Spring
是一个用于管理对象之间的配置和依赖关系的应用程序框架。此外,它还提供了一个接口,用于管理在现代应用程序中使用的高级服务,例如数据库,消息服务,MVC框架和事务。

Spring被设计为用作应用程序中对象和服务的全方位主控,因此,它的事务概念比hibernate相关的数据库特定事务更高。Spring事务旨在让您对所有事务资源进行细粒度的控制,同时抽象出协调事务所需的通常混乱的编码。

@Transactional

Spring提供了几种使用事务的不同方法-
其中包括基于xml的方面,对API进行编码和基于注释的声明性事务。基于注释的事务很方便,因为您不需要将事务管理样板代码添加到您的应用程序中(即使通过API使用PlatformTransactionManager也有很多编码开销)。

因此,基本上发生的事情@Transactional是,在运行时spring基于您通过注释配置的内容,在代码库中扫描@Transactional类和方法,并将它们包装在特定于事务的管理代码中。所以这样的方法:

@Transactional(propagation = REQUIRES_NEW, rollbackFor = {Exception.class})public void saveAndSendMessage(Foo foo) throws Exception {    dbManager.save(foo);    Bar bar = transform(foo);    jmsSystem.send(bar);}

可以让spring为数据库和jms系统设置一个新的事务,并协调它们,而无需自动添加所有特定的tx管理代码。

@Transactional在Spring + Hibernate中

@Transactional在Spring + Hibernate中

我在Web应用程序中使用 Spring 3.1 + Hibernate4.x 。在我的DAO中,我将用户类型对象保存如下

sessionFactory.getCurrentSession().save(user);

但是出现以下异常:

org.hibernate.HibernateException: save is not valid without active transaction

我用谷歌搜索并找到了类似的问题,有以下解决方案:

   Session session=getSessionFactory().getCurrentSession();
   Transaction trans=session.beginTransaction();
   session.save(entity);
   trans.commit();

那解决了问题。但是在该解决方案中,手动开始和提交事务有很多麻烦。

没有sessionFactory.getCurrentSession().save(user);手动开始/提交交易,我不能直接使用 吗?

我也尝试@Transactional在服务/ dao方法上使用,但是问题仍然存在。

编辑: 这是我的Spring配置文件:

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


  <!-- enable the configuration of transactional behavior based on annotations -->
  <tx:annotation-driven transaction-manager="txManager"/>

    <bean id="dataSource"p:driverClassName="${db.driverClassName}" p:url="${db.url}"
        p:username="${db.username}" p:password="${db.password}" />

    <bean id="sessionFactory">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="com.myapp.entities" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>


    <bean id="txManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>

</beans>

我正在使用以下Hibernate 4依赖项:

<!-- Hibernate Dependency -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.1.7.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.1.1.Final</version>
        </dependency>

        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>${cglib.version}</version>
            <scope>runtime</scope>
        </dependency>

请帮忙。

c – “UTF-16”和“std :: wstring”有什么区别?

c – “UTF-16”和“std :: wstring”有什么区别?

这两种字符串存储格式有什么不同吗?

解决方法

std :: wstring是wchar_t的容器.没有指定wchar_t的大小 – Windows编译器倾向于使用16位类型,Unix编译32位类型.

UTF-16是以16位整数的顺序编码Unicode码点序列的方式.

使用Visual Studio,如果您使用宽字符文字(例如L“Hello World”),其中不包含BMP以外的字符,则最终将使用UTF-16,但主要是两个概念是无关的.如果您使用BMP之外的字符,std :: wstring将不会将surrogate pairs转换为Unicode代码点,即使wchar_t为16位.

c# – string.Equals(“string”)和“String”.Equals(string)有什么区别?

c# – string.Equals(“string”)和“String”.Equals(string)有什么区别?

以下两行代码与字符串值进行比较有什么不同.
string str = "abc";

if(str.Equals("abc"))

if("abc".Equals(str))

在第一行我调用字符串变量的equals方法来与字符串文字进行比较.第二行反之亦然.它只是编码风格的区别,或者编译器处理这两个语句的方式有所不同.

解决方法

是的,编译器处理语句的方式是不同的.大多数语言中String的函数等于相同的准则.这是一个半码:
override def Equals(that:String):Boolean //Should override Object.Equals
  if(that==null) return false
  for i from 0 to this.length
    if(!this(i).Equals(that(i))) return false
  return true

通常,该方法将检查该字符串是否为IS,并且该长度与该长度相同.

如其他人所指出的那样,如果该值为null,那么该方法返回false.另一方面,该方法是String的一部分,因此不能在null上调用.这就是为什么在你的exampleif中,str为null,你会得到一个NullReferenceException.

话虽如此,如果你知道这两个变量是非空字符串的长度相同,两个语句都将同时评估.

c# – “string”和“String”有什么区别?

c# – “string”和“String”有什么区别?

这两个声明有什么区别?

string str;
String str;

解决方法

在正常使用中,字符串和字符串是相同的; string只是global :: System.String的别名.但是有一些边缘情况:

>你需要一个使用系统;使用String – 你不用于字符串>如果你定义一个本地类String {},那么String引用它(当然这将是一个愚蠢的事情).你不能定义一个名为string的类(尽管@string很好)

我们今天的关于“Spring Trading和“Hibernate Trading”有什么区别springdatajpa和hibernate的区别的分享已经告一段落,感谢您的关注,如果您想了解更多关于@Transactional在Spring + Hibernate中、c – “UTF-16”和“std :: wstring”有什么区别?、c# – string.Equals(“string”)和“String”.Equals(string)有什么区别?、c# – “string”和“String”有什么区别?的相关信息,请在本站查询。

本文标签: