Position: Java Developer
Category: Java
English level: intermediate
Years of experience: 1.5


Java (SE)
-OOP (use for decompose and understanding how write simple code) 
-Collections (usage depends on the data structure for storing and managing objects)
-Stream API (make it easier to work with collections)
Java (EE)
- Servlet (use to exchange data between the user and the application)
- JDBC (use to store and manage (create, read, update, delete) data)
Spring
-IOC (spring manages (_Scope) the beans in the container and collects them.)
-DI (use _Component, _ComponentScan, _Bean, _Configuration to inject bean in spring and _Autowired, _Qualifier getBean from Containier)
Spring Data
-JDBC (used and configured JdbcTemplate, make it easier (less code) to work with JDBC) 
-Hibernate (used _PersistenceUnit and configured SessionFactory, EntityManagerFactory for work with database, used ORM changed object in memory and auto changed in database, used _Cacheable, _Cache for flexible configuration second level cache)
-JPA (used _Service, _Repository and configured EntityManagerFactory, PlatformTransactionManager, for work with database use _Transactional for commit, rollback sql queries, sql - JOIN FETCH for lazy init, created _OneToMany, _ManyToMany, _JoinColumn, _JoinTable, _OneToOne, relationships, _Enumerated convert enum to database, _ElementCollection, _CollectionTable made table without entity)
- MVC (used _RequestMapping to manage urls, _Controller, ModelAndView to exchange data between frontend and server, used _ControllerAdvice, _ExceptionHandler for handle exception in controller)
- Boot Security (used SecurityFilterChain to control access to URLs through different roles, _EnableMethodSecurity, _PreAuthorize configured user access to resources, _AuthenticationPrincipal injected authecicated user)
- Boot (used _Scheduled for flexible configuration scheduler)
- RabbitMQ (used RabbitTemplate and _RabbitListener for send and received message) 
- PostgreSQL (DDL - check, unique, constraint and other DML - join, case -> then -> end, constraint, begin -> end if, with, check option, start transaction, commit, rollback)
- MongoDB - (used MongoClient, insert, search, update, delete document in database, made connection cluster)
- JavaScript (made easy algorithms)
- Maven (deploy on heroku, package jar)
- JUnit (assertEquals equality test result)
- Mockito (_Mock, _InjectMocks for testing service, dao)
- Linux (Config bind9, nginx,  lxc, bash, ssl, let's encrypt, cron, aws s3)
- Java (maintain web apps and bug fixing, edit report xls, pdf and api request)
I'm interesting in maintain web project
and not very interesting in desktop project