私は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 よりもサービス層からトランザクションを実装する必要があることもどこかで読みました。この場合、どのようにトランザクションを実装できますか?employee
address
@transactional
employee
編集サービス層での
使用が推奨されているため@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 の代わりに誰でも説明できますか?