#Component #Repository #Service #Spring
ΠΠ°ΠΊΡΡ Spring Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π΄ ΠΊΠ»Π°ΡΡΠΎΠΌ, @Component ΠΈΠ»ΠΈ @Repository? Π ΠΌΠΎΠΆΠ΅Ρ ΠΈ @Service?
Π‘ΡΠ°ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·Π½ΠΈΡΡ Π½Π° ΡΠ΅ΠΌΡ:
https://coderlessons.com/articles/java/raznitsa-mezhdu-component-service-controller-i-repository-v-spring
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΡΠΊΡΠΈΠ½ΡΠΎΡΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Repository ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Spring Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ.
Π Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ - ΡΠ»ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ°ΠΊΡΡ Spring Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π΄ ΠΊΠ»Π°ΡΡΠΎΠΌ, @Component ΠΈΠ»ΠΈ @Repository? Π ΠΌΠΎΠΆΠ΅Ρ ΠΈ @Service?
Π‘ΡΠ°ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·Π½ΠΈΡΡ Π½Π° ΡΠ΅ΠΌΡ:
https://coderlessons.com/articles/java/raznitsa-mezhdu-component-service-controller-i-repository-v-spring
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΡΠΊΡΠΈΠ½ΡΠΎΡΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Repository ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Spring Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ.
Π Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ - ΡΠ»ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
#spring #enabletransactionmanagement #transaction
Π‘ Π²Π΅ΡΡΠΈΠΈ 3.1 Spring Π²Π²Π΅Π» Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @EnableTransactionManagement, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Configuration Π½Π°Π΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π±Π΅ΡΡΠΎΠ²Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Transactional.
Π ΡΠ΅ Π·Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Transactional ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π±Π΅ΡΡΠΎΠ²Π½ΡΠ΅??
ΠΠ΅ΡΠΎΠ΄ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ @Transactional - ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΠΊΠ°Ρ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π΅ΡΠ»ΠΈ Π»ΡΠ±Π°Ρ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Spring Π±ΡΠΎΡΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΠΠΠ: Π΅ΡΠ»ΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Transactional Π±ΡΠ΄ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΠ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΠΊΠ»Π° ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Ρ ΠΎΡΡ Π±Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ - ΡΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π½Π΅ Π·Π°ΠΏΠΈΡΠ΅ΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΠΊΠ»Π°:
@Transactional
public void book(String... persons) {
for (String person : persons) {
log.info("Booking " + person + " in a seat...");
jdbcTemplate.update("insert into BOOKINGS(FIRST_NAME) values (?)", person);
}
};
https://spring-projects.ru/guides/managing-transactions/
Π‘ Π²Π΅ΡΡΠΈΠΈ 3.1 Spring Π²Π²Π΅Π» Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @EnableTransactionManagement, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Configuration Π½Π°Π΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π±Π΅ΡΡΠΎΠ²Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Transactional.
Π ΡΠ΅ Π·Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Transactional ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π±Π΅ΡΡΠΎΠ²Π½ΡΠ΅??
ΠΠ΅ΡΠΎΠ΄ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ @Transactional - ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΠΊΠ°Ρ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π΅ΡΠ»ΠΈ Π»ΡΠ±Π°Ρ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Spring Π±ΡΠΎΡΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΠΠΠ: Π΅ΡΠ»ΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @Transactional Π±ΡΠ΄ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΠ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΠΊΠ»Π° ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Ρ ΠΎΡΡ Π±Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ - ΡΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π½Π΅ Π·Π°ΠΏΠΈΡΠ΅ΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΠΊΠ»Π°:
@Transactional
public void book(String... persons) {
for (String person : persons) {
log.info("Booking " + person + " in a seat...");
jdbcTemplate.update("insert into BOOKINGS(FIRST_NAME) values (?)", person);
}
};
https://spring-projects.ru/guides/managing-transactions/
π3