如果您想了解“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的区别)
- @Transactional在Spring + Hibernate中
- c – “UTF-16”和“std :: wstring”有什么区别?
- c# – string.Equals(“string”)和“String”.Equals(string)有什么区别?
- c# – “string”和“String”有什么区别?
“Spring Trading和“Hibernate Trading”有什么区别(springdatajpa和hibernate的区别)
您能否解释以下两种交易类型之间的区别:
- Spring Trading
- 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中
我在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”有什么区别?
解决方法
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)有什么区别?
string str = "abc"; if(str.Equals("abc"))
和
if("abc".Equals(str))
在第一行我调用字符串变量的equals方法来与字符串文字进行比较.第二行反之亦然.它只是编码风格的区别,或者编译器处理这两个语句的方式有所不同.
解决方法
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”有什么区别?
string str; String str;
解决方法
>你需要一个使用系统;使用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”有什么区别?的相关信息,请在本站查询。
本文标签: