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
中的意义也可以从其他地方调用。可以从启动只读事务的服务调用它。经验法则是根据方法想要做的事情创建事务,而不是根据调用它的原因/来源。这是唯一使用它的地方。您的意思是它对父方法事务没有影响吗?你能详细说明一下吗?