Guest User

Untitled

a guest
Feb 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. package _01programmatic.transaction.dao;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5.  
  6. import javax.sql.DataSource;
  7.  
  8. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  9. import org.springframework.transaction.PlatformTransactionManager;
  10. import org.springframework.transaction.TransactionDefinition;
  11. import org.springframework.transaction.TransactionStatus;
  12. import org.springframework.transaction.support.DefaultTransactionDefinition;
  13.  
  14. import _01programmatic.transaction.model.Adress;
  15. import _01programmatic.transaction.model.Person;
  16.  
  17. public class PersonDAOImpl implements PersonDAO {
  18.  
  19. private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
  20. // cesitli implementasyounları var: JDBC için DataSource transaction manager,
  21. // hibernate icin, jpa icin, jta icin...
  22. private PlatformTransactionManager transactionManager;
  23.  
  24. private final static String INSERT_PERSON = "insert into person (id, name, surname, birthYear) values (:id, :name, :surname, :birthYear)";
  25. private final static String INSERT_ADRESS = "insert into adress (adressId, street, zipcode, city) values (:adressId, :street, :zipcode, :city)";
  26. private final static String SET_PERSON_ADRESS = "update person set adressId=:adressId where id=:id";
  27.  
  28. // setter Injection
  29. public void setDataSource(DataSource dataSource) {
  30. namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
  31. }
  32.  
  33. // setter Injection
  34. public void setTransactionManager(PlatformTransactionManager transactionManager) {
  35. this.transactionManager = transactionManager;
  36. }
  37.  
  38. private TransactionStatus getTransactionStatus() {
  39. TransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
  40. TransactionStatus status = transactionManager.getTransaction(transactionDefinition);
  41. return status;
  42. }
  43.  
  44. @Override
  45. public void insert(Person person) {
  46. TransactionStatus status = getTransactionStatus();
  47. Map<String, Object> params = new HashMap<String, Object>();
  48. params.put("id", person.getId());
  49. params.put("name", person.getName());
  50. params.put("surname", person.getSurname());
  51. params.put("birthYear", person.getBirthYear());
  52.  
  53. try {
  54.  
  55. namedParameterJdbcTemplate.update(INSERT_PERSON, params);
  56. System.out.println("Person is inserted..." + person);
  57.  
  58. insertAdress(person.getAdress());
  59. updatePersonAdress(person.getId(), person.getAdress().getAdressId());
  60. System.out.println("person adress inserted...");
  61. // programmatic transaction icin
  62. // person tablosuna kayıt attım, adress tablosuna kayıt attım son olarakta
  63. // person'un adress'ini ekledim.
  64.  
  65. // commit
  66. transactionManager.commit(status);
  67. } catch (Exception e) {
  68. System.out.println(e.getMessage());
  69. System.out.println("rollback...");
  70. // herhangi bir problemde tüm islemler geri alınacak.
  71. transactionManager.rollback(status);
  72. }
  73.  
  74. }
  75.  
  76. @Override
  77. public void insertAdress(Adress adress) {
  78. Map<String, Object> params = new HashMap<String, Object>();
  79. params.put("adressId", adress.getAdressId());
  80. params.put("street", adress.getStreet());
  81. params.put("zipcode", adress.getZipcode());
  82. params.put("city", adress.getCity());
  83. namedParameterJdbcTemplate.update(INSERT_ADRESS, params);
  84. System.out.println("adress is inserted" + adress);
  85.  
  86. }
  87.  
  88. @Override
  89. public void updatePersonAdress(int id, int adressId) {
  90. Map<String, Object> params = new HashMap<String, Object>();
  91. params.put("id", id);
  92. params.put("adressId", adressId);
  93. namedParameterJdbcTemplate.update(SET_PERSON_ADRESS, params);
  94.  
  95. }
  96.  
  97. }
Add Comment
Please, Sign In to add comment