Hibernate with Spring Boot: Difference between revisions

From My Limbic Wiki
Line 54: Line 54:
     TableNameRepository repository;
     TableNameRepository repository;
      
      
     public List<EmployeeEntity> getAllEmployees(){
    '''#Get All'''
         List<EmployeeEntity> employeeList = repository.findAll();
     public '''List<EmployeeEntity> getAllEmployees()'''{
         List<EmployeeEntity> employeeList = '''repository.findAll();'''
          
          
         if(employeeList.size() > 0) {
         if(employeeList.size() > 0) {
             return employeeList;
             return employeeList;
         } else {
         } else {
             return new ArrayList<EmployeeEntity>();
             '''return new ArrayList<EmployeeEntity>();'''
         }
         }
     }
     }
    '''#Get'''
    public EmployeeEntity '''getEmployeeById(Long id)''' throws RecordNotFoundException{
        Optional<EmployeeEntity> employee = '''repository.findById(id);'''
       
        if(employee.isPresent()) {
            return '''employee.get();'''
        } else {
            throw new RecordNotFoundException("No employee record exist for given id");
        }
    }
    '''#Create''' or '''Update'''
    public EmployeeEntity '''createOrUpdateEmployee(EmployeeEntity entity)''' throws RecordNotFoundException{
        Optional<EmployeeEntity> employee = ''''repository.findById(entity.getId());'''
       
        if(employee.isPresent()){
            EmployeeEntity newEntity = '''employee.get();'''
            newEntity.'''setEmail'''(entity.getEmail());
            newEntity.'''setFirstName'''(entity.getFirstName());
            newEntity.'''setLastName'''(entity.getLastName());
            newEntity = repository.'''save'''(newEntity);
           
            return newEntity;
        } else {
            entity = repository.'''save'''(entity);
           
            return entity;
        }
    }   
    '''#Delete'''
    public void '''deleteEmployeeById(Long id)''' throws RecordNotFoundException{
        Optional<EmployeeEntity> employee = '''repository.findById(id);'''
       
        if(employee.isPresent()){
            repository.'''deleteById(id);'''
        } else {
            throw new RecordNotFoundException("No employee record exist for given id");
        }
    }
}

Revision as of 18:09, 23 September 2019

Hibernate ORM handles object-relational impedance mismatch problems by replacing direct, persistent database accesses with high-level object handling functions.

Vulgarization

Dependencies

pom.xml file

org.springframework.boot.spring-boot-starter-web
org.springframework.boot.spring-boot-starter-data-jpa
com.h2database.h2

Entity

@Entity
@Table(name="TABLE_EMPLOYEE")
public class EmployeeEntity{
   @Id
   @GeneratedValue
   private Long id;
   @Column(name="column_name", nullable=false, length=200)
   @Override
   public String toString() { ... }
}

Repository

@Repository
public interface EmployeeRepository 
   extends JpaRepository<EmployeeEntity, Long> { 
   ...
}

Datasource Configuration

application.properties
#Required
spring.datasource.url=jdbc:h2:file:~/test
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=user
spring.datasource.password=password
#Optionnal
# Enabling H2 Console
spring.h2.console.enabled=true
# Custom H2 Console URL
spring.h2.console.path=/h2-console

# create database schema from SQL files
spring.jpa.hibernate.ddl-auto=none
#Turn Statistics on and log SQL stmts
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.generate_statistics=false 
#logging.level.org.hibernate.type=trace
#logging.level.org.hibernate.stat=debug
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

Service

@Service
public class EmployeeService {    
   @Autowired
   TableNameRepository repository;
   
   #Get All
   public List<EmployeeEntity> getAllEmployees(){
       List<EmployeeEntity> employeeList = repository.findAll();
        
       if(employeeList.size() > 0) {
           return employeeList;
       } else {
           return new ArrayList<EmployeeEntity>();
       }
   }

   #Get
   public EmployeeEntity getEmployeeById(Long id) throws RecordNotFoundException{
       Optional<EmployeeEntity> employee = repository.findById(id);
        
       if(employee.isPresent()) {
           return employee.get();
       } else {
           throw new RecordNotFoundException("No employee record exist for given id");
       }
   }

   #Create or Update
   public EmployeeEntity createOrUpdateEmployee(EmployeeEntity entity) throws RecordNotFoundException{
       Optional<EmployeeEntity> employee = 'repository.findById(entity.getId());
        
       if(employee.isPresent()){
           EmployeeEntity newEntity = employee.get();
           newEntity.setEmail(entity.getEmail());
           newEntity.setFirstName(entity.getFirstName());
           newEntity.setLastName(entity.getLastName());

           newEntity = repository.save(newEntity);
            
           return newEntity;
       } else {
           entity = repository.save(entity);
            
           return entity;
       }
   }    

   #Delete
   public void deleteEmployeeById(Long id) throws RecordNotFoundException{
       Optional<EmployeeEntity> employee = repository.findById(id);
        
       if(employee.isPresent()){
           repository.deleteById(id);
       } else {
           throw new RecordNotFoundException("No employee record exist for given id");
       }
   }
}