2

私は2つのテーブルを持ってEmployeeおりAddress、示されているように:

public class Employee {

    private Integer id;
    private String firstName;
    private String lastName;
    private boolean employeeStatus;
    private Address address;

        //getters setters
    }

public class Address {
    private Integer id;
    private String country;
    private String city;
    private String street;
    private Integer emp_id;
    //getters setters
    }


@Repository("employeeDao")
public class EmployeeDaoImpl implements EmployeeDao {

    private JdbcTemplate jdbcTemplate;

     @Autowired
        public void setDataSource(DataSource dataSource) {
            this.jdbcTemplate = new JdbcTemplate(dataSource);
        }

        @Override
         public void insertEmployee(Employee e)
         {
         String sql = "INSERT INTO tbl_employee (dept_id,firstName,lastName,employeeStatus) values(?,?,?,?,?)";
         this.jdbcTemplate.update(sql,new
                 Object[]{e.getDept_id(),e.getFirstName(),e.getLastName(),e.isEmployeeStatus()});


// INSERT ADDRESS????
         }

   // Other Methods
        }

今、テーブル属性Transactionalを挿入しながら実装したいと思います。私はここで少し混乱しています。メソッドに対する注釈は必要な仕事をしますか? これまでのところ、私はそれを理解しました。また、属性を挿入している場所から住所を挿入するのがベストプラクティスですか? また、Dao よりもサービス層からトランザクションを実装する必要があることもどこかで読みました。この場合、どのようにトランザクションを実装できますか?employeeaddress@transactionalemployee

編集サービス層での 使用が推奨されているため@transactional、サービス層は次のようになりました。

@Service("employeeService")
@Transactional
public class EmployeeServiceImpl implements EmployeeService{

    @Autowired
    EmployeeDao employeeDao;
    @Autowired
    AddressDao addressDao;

    @Override
    public void insertEmployee(Employee e) {
        employeeDao.insertEmployee(e);
        addressDao.insertAddress(e.address);

    }
}

トランザクションを実行する正しい方法ですか?@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)また、プレーンな @Transactional の代わりに誰でも説明できますか?

4

1 に答える 1

3

@Transactional アノテーションで十分に機能しますが、通常、トランザクションはサービス レベルで定義されます。このようにして、1 つのビジネス コールが 1 つのトランザクションに含まれ、すべてが一緒に成功または失敗することが保証されます。

ここで jdbctemplate と組み合わせた @transactional について読むことができます

于 2012-12-17T10:28:14.147 に答える