Java @Transactional的重要性(只读=真)
我试图理解一个现有的代码,然后发现代码中使用了Java @Transactional的重要性(只读=真),java,hibernate,spring-transactions,Java,Hibernate,Spring Transactions,我试图理解一个现有的代码,然后发现代码中使用了@Transactional(read-only=true)。 我浏览了这个链接。 但我不能把它和我的案子联系起来 我使用Hibernate作为ORM工具,并使用HibernateTransactionManager来管理事务。 据我所知,代码试图将一些数据提交到一组表中,在此之前,我需要从两个主表中获取一些数据。 如果主表查询未返回任何内容,则应引发异常。 下面是整个代码的框架 @Transactional persistSomeData(int
@Transactional(read-only=true)
。
我浏览了这个链接。
但我不能把它和我的案子联系起来
我使用Hibernate作为ORM工具,并使用HibernateTransactionManager
来管理事务。
据我所知,代码试图将一些数据提交到一组表中,在此之前,我需要从两个主表中获取一些数据。
如果主表查询未返回任何内容,则应引发异常。
下面是整个代码的框架
@Transactional
persistSomeData(int id){
MasterData masterData = getMasterData(id);
if(null == masterData)throw new Exception("No Master data found !!");
persistChildTableData(masterData.someField);
}
@Transactional(read-only = true)
MasterData getMasterData(int id){
//query to get the masterdata using id
}
我想知道
read-only=true
在getMasterData()
getMasterData
中的意义也可以从其他地方调用。可以从启动只读事务的服务调用它。经验法则是根据方法想要做的事情创建事务,而不是根据调用它的原因/来源。这是唯一使用它的地方。您的意思是它对父方法事务没有影响吗?你能详细说明一下吗?